На какие основные компоненты (с точки зрения тестирования) можно разбить веб-приложение?

«На какие основные компоненты (с точки зрения тестирования) можно разбить веб-приложение?» — вопрос из категории Архитектура, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

С точки зрения тестировщика, приложение разбивается на слои, каждый из которых требует своих подходов к тестированию:

  1. Пользовательский интерфейс (UI / Frontend): Визуальная часть (HTML, CSS, JavaScript-фреймворки). Тестируется через:

    • E2E-тесты (Selenium, Playwright, Cypress) — проверка комплексных сценариев.
    • Визуальное регрессионное тестирование (Applitools, Percy).
    • Кросс-браузерное и кросс-платформенное тестирование.
  2. Серверная логика и API (Backend): "Мозг" приложения. Основной объект для:

    • API-тестирования (REST, GraphQL, gRPC) — проверка эндпоинтов, статус-кодов, схем JSON, бизнес-логики.
    • Интеграционного тестирования — проверка взаимодействия между сервисами (например, сервис заказов и сервис оплаты).
  3. База данных (Database): Тестируется целостность данных, корректность миграций, работа триггеров и хранимых процедур. Используются SQL-запросы для проверки состояния данных после выполнения тестов.

  4. Интеграции с внешними сервисами: Платежные шлюзы, почтовые сервисы, SMS-провайдеры. Тестируются с помощью моков (mocks) и стабов (stubs) в автотестах, чтобы изолировать тест от нестабильности внешних систем.

  5. Инфраструктура и конфигурация: Тестирование развертывания (deployment), конфигурационных файлов, работы в разных средах (dev, staging, prod).

Стратегия тестирования строится на комбинации проверок этих слоев: юнит-тесты для логики, интеграционные для API и БД, E2E для критичных пользовательских сценариев. Это позволяет находить дефекты на ранних этапах и снижать стоимость их исправления.