Какие техники тест-дизайна ты знаешь и применяешь?

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

Ответ

В своей работе я активно применяю классические техники тест-дизайна для создания эффективных и полных тестовых наборов. Вот основные из них с примерами из моего опыта:

  1. Эквивалентное разделение (Equivalence Partitioning): Разделение входных данных на группы (классы), где поведение системы ожидается одинаковым. Тестируем по одному значению из каждого класса.

    • Пример (поле "Возраст участника"):
      • Валидный класс: [18, 99] (например, значение 25).
      • Невалидные классы: <18 (например, 17), >99 (например, 100), не число (например, "abc").
  2. Анализ граничных значений (Boundary Value Analysis): Тестирование на границах классов эквивалентности и за их пределами. Большинство ошибок возникает именно на границах.

    • Пример для того же поля [18, 99]:
      • Граничные и вне границ: 17, 18, 19, 98, 99, 100.
  3. Таблица принятия решений (Decision Table): Отличный инструмент для тестирования бизнес-логики, зависящей от комбинации условий.

    • Пример: Правило предоставления скидки. VIP-клиент? Сумма заказа > 5000? Ожидаемая скидка
      Да Да 20%
      Да Нет 10%
      Нет Да 10%
      Нет Нет 0%

      На основе этой таблицы пишутся 4 тестовых случая.

  4. Попарное тестирование (Pairwise Testing): Метод для сокращения количества тестовых комбинаций. Гарантирует, что каждая пара значений всех параметров будет покрыта хотя бы одним тестом.

    • Пример: Тестирование формы с параметрами: Браузер (Chrome, Firefox, Safari), ОС (Windows, macOS), Язык (EN, RU). Полный перебор даст 322=12 комбинаций. Алгоритм попарного тестирования (например, с помощью инструмента pict) может сократить это до 6-8 тестов, покрывающих все пары.
  5. Предугадывание ошибок (Error Guessing): Основано на опыте тестировщика и знании типичных "узких мест" в приложениях.

    • Примеры сценариев:
      • Отправка формы без обязательных полей.
      • Ввод SQL-инъекции (' OR '1'='1) в текстовые поля.
      • Передача null или пустой строки в обязательные параметры API.
      • Одновременная отправка двух одинаковых запросов (проверка на идемпотентность).
  6. Диаграмма состояний и переходов (State Transition Testing): Используется для систем, поведение которых зависит от состояния.

    • Пример: Жизненный цикл заказа в интернет-магазине. Тестируются валидные переходы ("Создан" → "Оплачен" → "Отправлен") и невалидные (попытка перевести заказ из "Отменен" обратно в "Оплачен").

Я комбинирую эти техники в зависимости от тестируемого объекта, чтобы достичь оптимального баланса между покрытием и усилиями на тестирование.

Видео-ответы