Мне известны следующие методы дизайна тестов:
-
Методы, основанные на спецификации (Specification-Based):
- Эквивалентное разбиение (Equivalence Partitioning): Разделение входных данных на классы эквивалентности, при этом предполагается, что тест над одним представителем класса эффективен как тест над любым другим.
- Анализ граничных значений (Boundary Value Analysis - BVA): Тестирование типичных ошибок на границах разделов эквивалентности или на границах диапазона допустимых значений.
- Таблицы принятия решений (Decision Tables): Представление сложных бизнес-правил в компактной табличной форме для выявления всех возможных комбинаций условий и соответствующих действий.
- Диаграммы состояний и переходов (State Transition Diagrams): Моделирование поведения системы в зависимости от состояний и входных событий. Тесты проектируются для проверки допустимых и недопустимых переходов.
- Сценарии использования (Use Cases): Тестирование функциональности с точки зрения пользователя, описывая последовательность действий для достижения конкретной цели.
-
Методы, основанные на структуре (Structure-Based) / White-Box:
- Покрытие операторов (Statement Coverage): Выполнение каждого оператора кода по крайней мере один раз.
- Покрытие ветвей / решений (Decision / Branch Coverage): Выполнение каждого возможного пути ветвления (if-else, циклы) по крайней мере один раз.
- Покрытие условий (Condition Coverage): Проверка каждого отдельного условия в логическом выражении на истинность и ложность.
- Покрытие множества условий / комбинаций (Multiple Condition Coverage): Проверка всех возможных комбинаций условий в логическом выражении.
-
Методы, основанные на опыте (Experience-Based):
- Исследовательское тестирование (Exploratory Testing): Одновременное изучение приложения, дизайн тестов, их исполнение и интерпретация результатов.
- Тестирование, основанное на ошибках (Error Guessing): Использование знаний о типичных местах возникновения ошибок, предыдущем опыте и интуиции для создания тестов.
-
Методы, основанные на моделях (Model-Based):
- Тестирование на основе моделей (Model-Based Testing - MBT): Создание формальной модели системы и автоматическая генерация тестовых сценариев на ее основе.
Выбор конкретных методов зависит от типа тестирования, требований к покрытию, имеющейся документации и временных ограничений. Комбинация различных методов часто дает наиболее эффективные результаты.