Функциональное тестирование — это проверка соответствия функциональности веб‑сайта заявленным требованиям и корректности работы всех его элементов с точки зрения конечного пользователя.
Цели
- Убедиться, что все элементы сайта работают как задумано.
- Выявить ошибки в логике работы функций.
- Проверить корректность обработки входных данных и соответствие выходных результатов ожиданиям.
- Обеспечить бесперебойную работу ключевых сценариев пользователя.
Что тестируется
- Навигация и ссылки — работоспособность всех гиперссылок, меню, кнопок перехода.
- Формы ввода — валидация данных, сообщения об ошибках, отправка информации.
- Пользовательские сценарии — регистрация, авторизация, восстановление пароля.
- Динамические элементы — фильтры, сортировка, калькуляторы, слайдеры.
- Транзакционные процессы — добавление в корзину, оформление заказа, оплата.
- Интерактивные компоненты — чаты, комментарии, лайки, голосования.
- Поиск — корректность выдачи результатов, обработка пустых/некорректных запросов.
- Медиаконтент — загрузка и отображение изображений, видео, документов.
- Адаптивность функций — работа элементов на разных устройствах и разрешениях.
- Интеграции — связь с платёжными системами, CRM, соцсетями, API.
Подходы к тестированию
- «Чёрный ящик» (black box) — тестирование без доступа к коду. Проверяется только внешнее поведение системы через интерфейс.
- «Белый ящик» (white box) — с полным доступом к исходному коду и архитектуре.
- «Серый ящик» (gray box) — частичный доступ к внутренней логике (например, знание работы API).
Типы тестов
- Позитивные — проверка корректной работы с валидными данными (успешная авторизация с верным логином/паролем).
- Негативные — тестирование реакции на ошибки (ввод неверного пароля, пустой формы).
- Граничные — проверка крайних значений (максимальное количество символов, минимальная сумма заказа).
Уровни тестирования
- Модульное (unit testing) — проверка отдельных компонентов (например, алгоритма расчёта скидки).
- Интеграционное — тестирование взаимодействия модулей (связь формы заказа с базой данных).
- Системное — комплексная проверка всего приложения (от регистрации до оплаты).
- Приёмочное (UAT) — финальная проверка с участием заказчика/пользователей.
Этапы проведения
- Подготовка
- Анализ требований и документации.
- Проверка непротиворечивости и полноты спецификаций.
- Определение ключевых сценариев пользователя.
- Разработка тестовой документации
- Составление тест‑кейсов (шаги, ожидаемые результаты).
- Создание чек‑листов для быстрой проверки.
- Формирование матрицы отслеживания требований.
- Выполнение тестов
- Прохождение сценариев вручную или через автоматизацию.
- Фиксация дефектов (баг‑репорты с описанием, скриншотами, шагами воспроизведения).
- Повторное тестирование после исправлений.
- Отчётность
- Подготовка отчёта о найденных ошибках.
- Указание приоритетности и сроков исправления.
- Верификация исправлений.
Инструменты
- Для ручного тестирования: браузеры, DevTools, прокси‑серверы (Fiddler, Charles).
- Для автоматизации: Selenium, Cypress, Playwright, TestCafe.
- Для API‑тестирования: Postman, SoapUI.
- Для нагрузочного тестирования: JMeter, Gatling.
- Для управления тестами: Allure TestOps, TestRail, Jira.
- Эмуляторы устройств: BrowserStack, Sauce Labs, Android Studio.
Критерии успешности
- Все критические баги исправлены.
- Ключевые пользовательские сценарии работают без ошибок.
- Результаты соответствуют требованиям документации.
- Отчёт о тестировании утверждён заказчиком/командой.
Типичные ошибки
- Игнорирование мобильных устройств и разных браузеров.
- Тестирование только позитивных сценариев.
- Отсутствие повторной проверки после исправлений.
- Недостаточное документирование дефектов.
- Пренебрежение граничными условиями (пустые поля, максимальные значения).
Функциональное тестирование — не разовая задача, а непрерывный процесс, который проводится:
- на этапе разработки;
- после внесения изменений;
- перед релизами;
- регулярно в рамках поддержки сайта.
