Ответ
С точки зрения тестировщика, приложение разбивается на слои, каждый из которых требует своих подходов к тестированию:
-
Пользовательский интерфейс (UI / Frontend): Визуальная часть (HTML, CSS, JavaScript-фреймворки). Тестируется через:
- E2E-тесты (Selenium, Playwright, Cypress) — проверка комплексных сценариев.
- Визуальное регрессионное тестирование (Applitools, Percy).
- Кросс-браузерное и кросс-платформенное тестирование.
-
Серверная логика и API (Backend): "Мозг" приложения. Основной объект для:
- API-тестирования (REST, GraphQL, gRPC) — проверка эндпоинтов, статус-кодов, схем JSON, бизнес-логики.
- Интеграционного тестирования — проверка взаимодействия между сервисами (например, сервис заказов и сервис оплаты).
-
База данных (Database): Тестируется целостность данных, корректность миграций, работа триггеров и хранимых процедур. Используются SQL-запросы для проверки состояния данных после выполнения тестов.
-
Интеграции с внешними сервисами: Платежные шлюзы, почтовые сервисы, SMS-провайдеры. Тестируются с помощью моков (mocks) и стабов (stubs) в автотестах, чтобы изолировать тест от нестабильности внешних систем.
-
Инфраструктура и конфигурация: Тестирование развертывания (deployment), конфигурационных файлов, работы в разных средах (dev, staging, prod).
Стратегия тестирования строится на комбинации проверок этих слоев: юнит-тесты для логики, интеграционные для API и БД, E2E для критичных пользовательских сценариев. Это позволяет находить дефекты на ранних этапах и снижать стоимость их исправления.