урок 4 из 16

Условия и состояния

Разбирать сочетания условий таблицей решений, проверять переходы состояний и сокращать перебор попарным покрытием.

7 мин чтения · 3 главы ·6 заданий ·домашняя работа

Таблица решений

Классы и границы разбирают поля по отдельности. Но поведение часто зависит от сочетания условий: скидка положена, если клиент постоянный и сумма больше тысячи, а промокод действует не для всех тарифов. Для таких случаев есть таблица решений.

Постоянный клиентСумма > 1000ПромокодЧто ожидаем
даданетскидка 10 %
данетнетбез скидки
нетданетбез скидки
дададаскидка 10 %, промокод не суммируется

Смысл таблицы не в красоте, а в том, что она делает видимыми пропущенные строки. Три условия «да/нет» дают восемь сочетаний; выписав их подряд, вы сразу замечаете, что про два из них в требовании не сказано ничего, — и это вопрос к аналитику, а не догадка.

Строится она в три шага: выписать условия, выписать возможные результаты, перебрать сочетания. Дальше часть строк схлопывается: если при отсутствии постоянного статуса результат один и тот же независимо от суммы, две строки заменяются одной с пометкой «неважно».

Переходы состояний

Вторая техника — переходы состояний. Она нужна там, где объект живёт во времени: заказ, заявка, договор, аккаунт. Состояние определяет, что можно делать дальше.

НовыйОплаченОтправленОтменёнотменить отправленный заказ нельзя — это и есть проверказапрещённые переходы важнее разрешённых
Проверяют не «что видно в каждом состоянии», а можно ли попасть туда, куда попадать нельзя.
Что проверяемПример
разрешённый переход работаетновый → оплачен
запрещённый переход не работаетотправлен → отменён
действие недоступно в неподходящем состояниикнопка «Оплатить» у оплаченного заказа
возврат в прошлое состояниеоплачен → новый

Интереснее всего вторая и четвёртая строки. Разрешённые переходы обычно работают — их проверял и разработчик. Ломается на запрещённых: кнопку спрятали в интерфейсе, а сам переход остался возможным, и он случается при повторном нажатии, при возврате назад в браузере или при прямом обращении к серверу.

Отсюда правило: «кнопки нет» не означает «сделать нельзя». Интерфейс прячет действие, а запрещает его сервер — и проверять надо именно запрет, а не его отображение. Урок про API покажет, как это делают напрямую.

Попарное сочетание

Третья техника — про то, что делать, когда условий много. Если у вас три браузера, три роли и три тарифа, полный перебор это двадцать семь прогонов. Попарное сочетание сокращает их до девяти, и потеря при этом невелика.

3 браузера3 роли3 тарифа27 сочетаний9 парвсе пары «браузер + роль», «роль + тариф», «браузер + тариф»покрываются девятью наборами вместо двадцати семи
Большинство дефектов вылезает при сочетании двух условий, а не трёх и не пяти.
ПодходСколько наборовЧто покрыто
полный перебор27все тройки условий
попарное сочетание9все пары условий
по одному значению3почти ничего

Основание у техники опытное, а не математическое: подавляющее большинство дефектов вылезает при сочетании двух условий, а не трёх и не пяти. Ошибка «в Safari у администратора ломается вёрстка» — это пара. Ошибка, для которой нужно совпадение трёх условий сразу, встречается редко.

Составлять такие наборы руками долго, и обычно это делает готовый расчёт. Важнее уметь объяснить, что покрыто и что нет: после попарного набора вы честно говорите, что тройные сочетания не проверялись, — и если известно, что в тарифе «Х» у администраторов в Safari уже были беды, эту тройку добавляют отдельно.

И общее правило трёх уроков про выбор: техника не отменяет знания предмета. Она превращает знание в набор проверок и позволяет объяснить выбор, но откуда берутся классы, состояния и условия, техника не знает — это вы.

Задания урока

Каждое проверяется сразу: ответ сверяется с эталоном, и на неверный вариант приходит разбор.

  1. В правиле 2 логических условий («да»/«нет»). Сколько строк в полной таблице решений?средне
  2. Строки таблицы решений можно схлопнуть, если так получается компактнее.средне
  3. Переход разрешённый или запрещённый?средне
  4. Как обычно обходят спрятанную кнопку?средне
  5. Три условия по 5 значений. Сколько наборов даст полный перебор?средне
  6. Просят проверить приложение на 4 браузерах, 3 ролях и 3 тарифах.сложно

Практика и материалы по теме курса

Пройти урок с проверкой заданий Курс «Инженер по тестированию» открыт и бесплатен, прогресс сохраняется.
Открыть курс