Manual Testing

БЛОК 4. Тест-дизайн техники — 13. Decision Tables и Pairwise testing

📚 25 вопросовПройти тест →
Лекция

БЛОК 4. Тест-дизайн техники — 13. Decision Tables и Pairwise testing

Manual Testing

БЛОК 4. Тест-дизайн техники — 13. Decision Tables и Pairwise testing

🧭 Введение: когда условий слишком много

В реальных задачах QA часто сталкивается с фичами, где несколько правил работают одновременно: роль пользователя, статус подписки, регион, способ оплаты, флаг безопасности. Проверять все комбинации вручную почти всегда слишком дорого.
Decision Tables и Pairwise testing помогают управлять этой сложностью. Первая техника делает правила прозрачными, вторая сокращает число комбинаций без потери базового покрытия взаимодействий.
💡 Совет:
Если в задаче много условий и «если/то», сначала сделайте таблицу решений, а потом оптимизируйте набор проверок через pairwise.
Вывод:
Decision Tables дают логику, Pairwise даёт экономию объёма.

⚠️ Проблема -> решение

Проблема: при множестве параметров QA либо проверяет слишком мало (пропуски), либо пытается проверить всё (перегрузка и дедлайны). Оба пути рискованные.
Решение:
  • Decision Table фиксирует правила и ожидаемые действия;
  • Pairwise сокращает комбинации, сохраняя покрытие пар параметров.
🟢 Если совсем просто:
Сначала понимаем «какие решения должны быть», затем выбираем минимальный, но сильный набор комбинаций.
🎯 Как понять, что этап прошёл успешно:
Есть таблица правил и оптимизированный набор тестов, который покрывает ключевые пары условий.

🛠️ Чем помогает и как работает

Эти техники особенно полезны для бизнес-логики с несколькими переключателями и условиями. Они делают тест-дизайн объяснимым для QA, аналитиков и разработчиков.
Как это работает:
  • Шаг 1: собираем все условия, влияющие на поведение.
  • Шаг 2: описываем возможные исходы/действия системы.
  • Шаг 3: строим Decision Table (условия -> результат).
  • Шаг 4: убираем невозможные/дублирующие правила.
  • Шаг 5: применяем Pairwise для сокращения комбинаций.
  • Шаг 6: фиксируем expected result и приоритет.
Вывод:
Связка Decision Tables + Pairwise позволяет покрывать сложную логику без хаоса.

📚 Ключевые термины (простыми словами)

  • Decision Table (таблица решений) — таблица, где комбинации условий сопоставлены с ожидаемыми действиями системы.
  • Condition (условие) — входной параметр, влияющий на решение.
  • Action/Outcome (действие/исход) — что система должна сделать при заданных условиях.
  • Rule (правило) — одна строка/столбец таблицы: конкретная комбинация условий и результат.
  • Pairwise Testing (попарное тестирование) — техника, которая покрывает все пары значений параметров, не перебирая все комбинации.
  • Combinatorial Explosion (комбинаторный взрыв) — резкий рост количества комбинаций при добавлении параметров.
  • Coverage (покрытие) — степень закрытия условий, правил и взаимодействий параметров.
  • Expected Result (ожидаемый результат) — корректный исход для каждой выбранной комбинации.

1. Decision Tables: как фиксировать сложные правила

Decision Table нужна, когда поведение системы зависит от нескольких условий одновременно. Например: «если VIP + активная подписка + лимит не превышен -> операция разрешена».
🟢 Если совсем просто:
Таблица решений превращает запутанные правила в понятную структуру.
🎯 Как понять, что этап прошёл успешно:
Каждое важное условие учтено, и у каждой комбинации есть явный исход.
Назначение:
Сделать бизнес-логику проверяемой и прозрачной.
Простыми словами:
Это карта «при каких условиях что должно произойти».
Для новичка:
Если вы не можете объяснить правило одной фразой, скорее всего нужна таблица решений.
Аналогия:
Как таблица тарифов: набор признаков клиента сразу определяет доступные опции.
Пример:
Условия:- account_active- has_subscription- payment_overdue Результат:- allow_streaming (yes/no)
🔎 Как это происходит на практике:
  • QA выписывает условия из AC.
  • Уточняет неоднозначности с аналитиком.
  • Строит таблицу и согласует ожидаемые исходы.
Характеристики:
  • ✅ Убирает двусмысленность требований.
  • ✅ Помогает находить конфликтующие правила.
  • ✅ Удобна для ревью с командой.
Когда использовать:
Когда результат зависит от 2+ условий и есть ветвление бизнес-логики.
Вывод:
Decision Table — лучший способ сделать «если/то» логику тестируемой.

2. Pairwise testing: как сократить комбинации

Полный перебор комбинаций быстро становится неподъёмным. Pairwise строит компактный набор, где каждая пара значений параметров встречается хотя бы один раз.
🟢 Если совсем просто:
Мы не проверяем всё, но проверяем взаимодействие каждой пары параметров.
🎯 Как понять, что этап прошёл успешно:
Набор тестов покрывает все пары значений факторов при приемлемом объёме.
Назначение:
Сократить количество тестов при множестве параметров.
Простыми словами:
Pairwise — это «умная экономия» без случайного урезания покрытия.
Для новичка:
Если у вас 4–6 параметров с несколькими значениями, pairwise почти всегда полезен.
Пример:
Параметры:- browser: Chrome, Firefox, Safari- locale: RU, EN- payment_type: Card, Wallet Полный перебор: 3*2*2 = 12Pairwise: обычно 4-6 тестов
🔎 Как это происходит на практике:
  • QA перечисляет параметры и их значения.
  • Генерирует pairwise-набор (инструментом или вручную для маленького объёма).
  • Проверяет, что критичные бизнес-правила не потерялись.
Характеристики:
  • ✅ Сильно уменьшает объём regression.
  • ✅ Хорошо покрывает типовые взаимодействия параметров.
  • ✅ Помогает выдерживать сроки.
Когда использовать:
При множестве независимых параметров и ограниченном времени.
Вывод:
Pairwise — практичный способ контролировать комбинаторный взрыв.

3. Decision Table vs Pairwise: не путать роли

Новички часто думают, что это взаимоисключающие техники. На практике это разные уровни одной работы: Decision Table задаёт логику, Pairwise оптимизирует набор комбинаций.
🟢 Если совсем просто:
Decision Table = «что должно происходить», Pairwise = «какие комбинации выгодно проверить».
🎯 Как понять, что этап прошёл успешно:
Сначала построена логика правил, затем набор сокращён без потери критичных проверок.
Назначение:
Использовать обе техники по назначению и не терять качество.
Простыми словами:
Нельзя делать pairwise, если не ясны сами правила решений.
Для новичка:
Сначала таблица решений, потом оптимизация через pairwise.
Пример:
Шаг 1: Decision Table для "доступ к функции"Шаг 2: Pairwise для параметров окружения (браузер/язык/тип аккаунта)
Вывод:
Эти техники работают лучше в связке, а не по отдельности.

4. Пошаговый алгоритм для junior QA

Ниже простой шаблон, который можно применять сразу в задачах с несколькими условиями.
🟢 Если совсем просто:
Условия -> таблица решений -> оптимизация комбинаций.
🎯 Как понять, что этап прошёл успешно:
Набор проверок компактный, но покрывает критичные правила и пары параметров.
Алгоритм:
  1. Выписать условия и возможные значения.
  2. Выписать действия/исходы системы.
  3. Построить Decision Table.
  4. Исключить невозможные комбинации.
  5. Применить Pairwise к оставшимся параметрам.
  6. Зафиксировать expected result и priority.
Вывод:
Алгоритм помогает junior QA работать системно даже в сложной логике.

📊 Сравнение: Decision Table vs Pairwise

КритерийDecision TablePairwise
Главная цельЗафиксировать правила решенийСократить количество комбинаций
Что покрываетЛогику условий и исходовПары значений параметров
Когда нуженСложные if/else правилаМного параметров и вариантов
РезультатПрозрачная карта поведенияКомпактный набор тестов
Риск при пропускеНеясная логика и дыры в правилахЧрезмерный объём или хаотичное урезание

✅ Must-Know для junior QA

  • Decision Table и Pairwise не заменяют, а дополняют друг друга.
  • Без понятной таблицы решений pairwise может оптимизировать «не то».
  • Pairwise не гарантирует покрытие всех 3-way и более сложных взаимодействий.
  • Критичные бизнес-правила нельзя удалять ради сокращения.
  • Для каждой выбранной комбинации нужен expected result.
  • Невозможные комбинации нужно явно исключать и документировать.
  • Перед релизом приоритет задают риски, а не удобство выполнения.

❌ Частые мифы

Миф:
Pairwise заменяет анализ требований. ✅ Как правильно:
Сначала анализ и таблица решений, потом pairwise. 📎 Почему это важно:
Иначе можно получить компактный, но бесполезный набор тестов.
Миф:
Decision Table нужна только аналитикам. ✅ Как правильно:
QA активно использует её для проектирования проверок. 📎 Почему это важно:
Это снижает двусмысленность и улучшает качество тест-дизайна.
Миф:
Pairwise покрывает абсолютно все риски. ✅ Как правильно:
Он покрывает пары, но не все сложные взаимодействия. 📎 Почему это важно:
Критичные кейсы нужно добавлять отдельно.
Миф:
Чем больше комбинаций, тем лучше. ✅ Как правильно:
Нужно оптимальное покрытие по риску, а не полный перебор ради количества. 📎 Почему это важно:
Полный перебор часто нереалистичен по срокам.

❓ Часто спрашивают на собеседованиях

Вопрос:
Когда использовать Decision Table? ✅ Ответ:
Когда поведение зависит от нескольких условий и нужно явно зафиксировать правила решений.
Вопрос:
Когда полезен Pairwise? ✅ Ответ:
Когда параметров много и полный перебор комбинаций слишком дорогой по времени.
Вопрос:
Можно ли строить pairwise без таблицы решений? ✅ Ответ:
Технически можно, но рискованно: без ясной логики условий легко оптимизировать неверный набор.
Вопрос:
Что pairwise может пропустить? ✅ Ответ:
Редкие дефекты, завязанные на комбинации трёх и более параметров.
Вопрос:
Как связать эти техники с релизом? ✅ Ответ:
Через risk-based приоритизацию: обязательные правила из Decision Table плюс критичные pairwise-комбинации.

🚫 Типичные ошибки

Ошибка 1: Нет явных условий

Неправильно:
Строить таблицу решений с размытыми формулировками.
Правильно:
Условия должны быть бинарными или чётко перечисленными.
Почему:
Иначе таблица непроверяема.

Ошибка 2: Игнорируют невозможные комбинации

Неправильно:
Тестировать комбинации, которые система не допускает по дизайну.
Правильно:
Явно помечать impossible-состояния и исключать их.
Почему:
Это экономит время и очищает покрытие.

Ошибка 3: Сокращают критичные кейсы

Неправильно:
Удалять важные бизнес-правила ради маленького набора.
Правильно:
Критичные правила оставлять всегда, даже если они вне pairwise-оптимизации.
Почему:
Иначе сокращение снижает качество релиза.

Ошибка 4: Нет expected result

Неправильно:
Есть комбинации, но не описан ожидаемый исход.
Правильно:
Фиксировать expected result для каждой строки/комбинации.
Почему:
Без этого pass/fail невалиден.

🧩 Best Practices

  • Начинайте с таблицы решений, даже если она маленькая.
  • Делайте условия максимально однозначными.
  • Исключайте невозможные состояния до pairwise-генерации.
  • Сохраняйте критичные бизнес-кейсы отдельно от оптимизированного набора.
  • Для больших наборов используйте pairwise-инструменты и проверяйте результат вручную.
  • После инцидентов дополняйте таблицу решений новыми правилами.

🏁 Заключение

Decision Tables и Pairwise testing помогают QA работать с комплексной логикой без потери контроля.
Первая техника делает правила прозрачными, вторая помогает уложиться в сроки с разумным покрытием.
Для junior QA это сильный шаг к системному тест-дизайну и уверенным релизным решениям.
🎯

Проверьте знания

Закрепите материал — пройдите тест по теме «БЛОК 4. Тест-дизайн техники — 13. Decision Tables и Pairwise testing»

Пройти тест →