Проблема выбора техники

Вы изучили более 20 техник тест-дизайна. Задача теперь не «какие техники существуют?», а «какую использовать сейчас?»

Неверный выбор тратит усилия впустую. EP на протоколе с состояниями пропустит баги переходов. State transition testing на движке расчётов пропустит граничные дефекты.

Фреймворк принятия решений

Шаг 1: Какой тип фичи вы тестируете?

Тип фичиЛучшие техники
Валидация ввода (формы)EP + BVA
Бизнес-правила с условиямиТаблицы решений
Рабочие процессы, протоколы, сессииТестирование переходов состояний
Конфигурация/совместимостьПопарное тестирование
Расчёты, формулыДоменный анализ + BVA
API с множеством параметровКомбинаторное тестирование
Критические алгоритмыMC/DC + покрытие путей
Сложные пользовательские сценарииUse case testing + state transitions

Шаг 2: Какая информация доступна?

Доступная информацияПрименимые техники
Только требования/спецификацииBlack-box: EP, BVA, таблицы решений, переходы состояний
Доступен исходный кодWhite-box: покрытие операторов/решений, путей, MC/DC
Без документацииНа основе опыта: предугадывание ошибок, исследовательское тестирование
Существует формальная модельТестирование на основе моделей

Шаг 3: Каков уровень риска?

Уровень рискаРекомендуемый подход
Safety-criticalMC/DC + доменный анализ + мутационное тестирование
Финансовый/регуляторныйТаблицы решений + BVA + комбинаторное
Ключевая бизнес-логикаEP + BVA + переходы состояний + покрытие путей
Стандартные фичиEP + BVA + предугадывание ошибок
Низкий риск/косметикаПредугадывание ошибок + чек-листы

Сопоставление техник по категориям

Тестирование ввода данных

  1. Начать с EP — определить классы
  2. Применить BVA — границы классов
  3. Добавить доменный анализ — если входы взаимодействуют
  4. Использовать предугадывание ошибок — типичные ошибки ввода

Тестирование бизнес-логики

  1. Начать с таблиц решений — все комбинации условий
  2. Добавить переходы состояний — если поведение зависит от предыдущего состояния
  3. Применить cause-effect graphing — при сложных зависимостях
  4. Использовать комбинаторное — при множестве параметров

Структурное тестирование (White-Box)

  1. Покрытие операторов — базовый минимум
  2. Покрытие решений — обе ветви
  3. MC/DC — для safety-critical
  4. Покрытие путей — критические алгоритмы
  5. Мутационное тестирование — валидация эффективности тестов

Примеры из практики

Пример 1: Форма входа

  • Поле логина: EP + BVA
  • Поле пароля: EP + BVA
  • Кнопка входа: Переходы состояний (блокировка после 3 неудач)
  • Общее: Предугадывание ошибок (SQL injection, XSS, пустые поля)

Пример 2: Калькулятор страховки

  • Расчёт премии: Таблицы решений
  • Диапазоны ввода: BVA + Доменный анализ
  • Комбинации скидок: Попарное тестирование

Пример 3: Оформление заказа

  • Состояния корзины: Переходы состояний
  • Способы оплаты: Попарное тестирование
  • Правила доставки: Таблицы решений
  • End-to-end поток: Use case testing

Упражнение: Выбор техник

Задача 1

Для каждой фичи выберите основную и дополнительную техники:

  1. Движок расчёта налогов с разными ставками по шкалам дохода
  2. Музыкальный плеер с play, pause, skip, shuffle, repeat
  3. Функция поиска с опциональными фильтрами
  4. Система управления лифтами в 20-этажном здании
  5. Индикатор надёжности пароля
Решение
  1. Налоги: Основная: Таблицы решений; Дополнительная: BVA + Доменный анализ + Покрытие путей

  2. Плеер: Основная: Переходы состояний; Дополнительная: Попарное (shuffle/repeat) + Предугадывание ошибок

  3. Поиск: Основная: EP; Дополнительная: Попарное (фильтры) + BVA (даты) + Предугадывание ошибок

  4. Лифты: Основная: Переходы состояний; Дополнительная: MBT + Комбинаторное

  5. Надёжность пароля: Основная: EP (категории); Дополнительная: BVA + Таблицы решений + Предугадывание ошибок

Задача 2

Создайте стратегию тестирования для системы бронирования отелей.

Решение
ПодфичаОсновная техникаДополнительнаяОбоснование
Поиск по датамBVAEPЧёткие границы дат
Количество гостейBVA + EPПредугадываниеГраницы (min 1, max на номер)
Динамические ценыТаблицы решенийДоменный анализСложные правила по сезону
Жизненный цикл брониПереходы состоянийUse case testingСостояния: ожидание, подтверждена, отменена
Обработка платежейПереходы состоянийПредугадываниеСостояния платежа + edge cases
КонфигурацияПопарноеЧек-листыКомбинации браузер/устройство

Анти-паттерны выбора техник

Использование только одной техники. Команды, применяющие только EP, пропускают баги состояний.

Пропуск техник на основе опыта. Формальные техники не покрывают всё.

Избыточная инженерия для фич с низким риском. MC/DC для лендинга — трата ресурсов.

Полное игнорирование white-box техник. Данные структурного покрытия выявляют пробелы.

Ключевые выводы

  • Ни одна техника не достаточна сама по себе — эффективное тестирование требует комбинации
  • Сопоставляйте технику с типом фичи: зависит от состояния → переходы, правила → таблицы решений, ввод → EP+BVA
  • Уровень риска определяет строгость
  • Доступная информация ограничивает выбор
  • Всегда дополняйте формальные техники предугадыванием ошибок и исследовательским тестированием
  • Выработайте привычку выбора — для каждой фичи осознанно спрашивайте «какая техника подходит лучше?»