Для определения того, что необходимо протестировать, я использую комбинацию подходов:
-
Анализ требований:
- Изучение документации (техническое задание, пользовательские истории, спецификации).
- Уточнение неясных моментов у аналитиков, разработчиков, Product Owner'а.
- Разбиение требований на атомарные тест-кейсы.
-
Риск-ориентированное тестирование:
- Определение наиболее критичных или часто используемых функций системы.
- Оценка вероятности возникновения дефектов и их потенциального влияния.
- Приоритезация тестов на основе выявленных рисков.
-
Изучение артефактов разработки:
- Анализ макетов UI/UX.
- Просмотр изменений в коде или конфигурации (в случае регрессионного тестирования).
- Изучение логов и отчетов о предыдущих дефектах.
-
Использование техник тест-анализа:
- Эквивалентное разбиение.
- Анализ граничных значений.
- Диаграммы состояний и переходов.
- Таблицы решений.
-
Исследовательское тестирование:
- Свободное исследование функциональности для выявления неочевидных сценариев и дефектов.
- Генерация тест-идей на основе понимания поведения пользователя и системы.
-
Консультации с командой:
- Обсуждение особенностей реализации с разработчиками.
- Уточнение пользовательских сценариев с Product Owner'ом.
- Обмен опытом и знаниями с другими тестировщиками.
-
Автоматизация:
- Определение кандидатов для автоматизации на основе стабильности, критичности и частоты выполнения тестов.
- Применение пирамиды автоматизации тестирования (Unit, Integration, UI).
Совокупность этих подходов позволяет создать достаточную тестовую модель, покрывающую основные функциональные и нефункциональные требования, а также потенциальные риски.