Характеристики хороших требований: полнота, непротиворечивость, проверяемость, однозначность, атомарность

В прошлом уроке мы разбирали, в каком формате пришло требование — user story, use case, критерии приёмки, макет или бизнес-правило. Но формат ничего не говорит о качестве содержания: user story можно написать чётко, а можно так, что по ней невозможно понять, что именно проверять. Мало заметить, какой формат перед тобой, — нужно ещё оценить, годится ли то, что реально написано.

Чему научишься за этот урок:
— различать пять характеристик хорошего требования: полноту, непротиворечивость, проверяемость, однозначность, атомарность;
— по тексту требования определять, какая именно характеристика нарушена;
— находить в требовании бандл из нескольких условий и явно непроверяемые формулировки.

Пять характеристик хорошего требования

Формат — это про то, ГДЕ лежит требование. Характеристики — это про то, МОЖНО ЛИ им пользоваться. Ниже пять характеристик, по которым тестировщик оценивает требование по существу — независимо от того, в каком формате оно пришло.

  1. Полнота. Требование перечисляет все случаи явно, без фраз-заглушек «и т.д.», «и другие», «при необходимости». Если в списке способов оплаты написано «карта, СБП и т.д.» — непонятно, какие ещё способы имелись в виду и нужно ли их вообще реализовывать.
  2. Непротиворечивость. Требование не расходится с другим документом об этой же функции. Пример: один документ говорит «скидка по промокоду не больше 50%», а в примере письма-подтверждения из другого документа показана скидка 70%. Расхождение придётся выяснять отдельно, иначе непонятно, какой источник считать правильным.
  3. Проверяемость. По требованию можно построить тест с однозначным результатом «прошёл / не прошёл». Антипример — «интерфейс должен быть удобным»: нет числа, состояния или действия, которое можно бы было зафиксировать в тест-кейсе.
  4. Однозначность. Требование понимается только одним способом. «Обработка отклонённой карты должна происходить корректно» — один разработчик покажет всплывающее окно с текстом ошибки, другой сделает редирект на отдельную страницу. Оба выполнили «требование», но получили разное поведение.
  5. Атомарность. Одно требование описывает одну проверяемую вещь, а не бандл из нескольких условий через «и» / «а также». «Пользователь должен быстро и удобно оплатить курс, а также получить чек и уведомление» — это минимум три независимые вещи (оплата, чек, уведомление), каждая из которых может сломаться отдельно от остальных.
  Пять примеров нарушений и как их исправить:

  +------------------------+------------------------------------------------+
  | "Интерфейс должен быть | ПРОВЕРЯЕМОСТЬ: нечем измерить "удобно".         |
  | удобным"               | Исправление: конкретный измеримый критерий      |
  |                        | (например: форма проходит без ошибок в 3        |
  |                        | типовых сценариях)                              |
  +------------------------+------------------------------------------------+
  | "Карта, СБП и т.д."    | ПОЛНОТА: "и т.д." скрывает часть случаев.       |
  |                        | Исправление: явно перечислить все способы       |
  |                        | оплаты без сокращений                           |
  +------------------------+------------------------------------------------+
  | Скидка <=50% в одном   | НЕПРОТИВОРЕЧИВОСТЬ: в примере другого документа |
  | документе, 70% в       | показана скидка 70%.                            |
  | примере другого        | Исправление: согласовать значение, назначить    |
  |                        | один источник правды                            |
  +------------------------+------------------------------------------------+
  | "Оплатить быстро и     | АТОМАРНОСТЬ: бандл из трёх вещей в одном         |
  | удобно, получить чек   | требовании.                                     |
  | и уведомление"         | Исправление: разбить на три отдельных           |
  |                        | требования - оплата, чек, уведомление           |
  +------------------------+------------------------------------------------+
  | "Обработка отклонённой | ОДНОЗНАЧНОСТЬ: текст допускает разные толкования|
  | карты должна происходить| — один разработчик покажет всплывающее окно,   |
  | корректно"             | другой сделает редирект.                        |
  |                        | Исправление: явно описать одно конкретное       |
  |                        | поведение вместо оценочного "корректно"         |
  +------------------------+------------------------------------------------+

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

Практика на полигоне: требование к оплате

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

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

Рабочее исправление — разбить требование на атомарные и проверяемые части: (1) оплата картой завершается подтверждением на экране в течение заданного времени после ввода данных; (2) чек формируется и становится доступен в личном кабинете; (3) уведомление об оплате отправляется на указанный email или push. Три отдельных требования — три отдельных тест-кейса, и ни один не спрячется за формулировкой «быстро и удобно».

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

Контрольный вопрос. Один документ утверждает: «Скидка по промокоду не может превышать 50% от стоимости курса». В примере письма-подтверждения из другого документа показана скидка 70%. Какая характеристика хорошего требования здесь нарушена? Ответь одним словом.

Подсказка: Речь о рассогласовании между двумя источниками, описывающими одну и ту же функцию.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Контрольный вопрос. Требование к форме оплаты сформулировано так: «Интерфейс должен быть удобным». По этой формулировке нельзя построить тест с результатом «прошёл / не прошёл». Какая характеристика нарушена?

АПроверяемость
БОднозначность
ВПолнота

Подсказка: Ищи характеристику, которая отвечает именно за возможность построить тест с чётким результатом.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Контрольный вопрос. «Пользователь должен быстро и удобно оплатить курс, а также получить чек и уведомление» — одно требование на самом деле описывает сразу несколько независимо проверяемых вещей. Какая характеристика здесь нарушена?

ААтомарность
БНепротиворечивость
ВОднозначность

Подсказка: Посчитай, сколько разных проверяемых вещей спрятано в одном предложении.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Контрольный вопрос. В требовании к способам оплаты написано: «Доступны карта, СБП и т.д.». Какая характеристика хорошего требования нарушена фразой «и т.д.»? Ответь одним словом.

Подсказка: Фраза-заглушка скрывает, какие ещё случаи имелись в виду.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Контрольный вопрос. Требование «Обработка отклонённой карты должна происходить корректно» один разработчик реализует как всплывающее окно с текстом ошибки, а другой — как редирект на отдельную страницу. Какая характеристика хорошего требования нарушена?

АОднозначность
БПолнота
ВАтомарность

Подсказка: Оба разработчика формально выполнили требование, но получили разное поведение — значит, текст допускает разные толкования.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Контрольный вопрос. Как называется характеристика хорошего требования, при которой по нему можно построить тест с однозначным результатом «прошёл / не прошёл»? Ответь одним словом.

Подсказка: Антипример этой характеристики — требование «интерфейс должен быть удобным», по которому нечем проверить результат.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Контрольный вопрос. Как называется характеристика хорошего требования, которая требует, чтобы одно требование описывало одну проверяемую вещь, а не несколько условий через «и» / «а также»? Ответь одним словом.

Подсказка: Нарушение этой характеристики — бандл из нескольких независимых пунктов в одном предложении.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Контрольный вопрос. Требование «Форма оплаты должна быстро и удобно принимать карту, а также поддерживать промокод и т.д.» нарушает сразу несколько характеристик хорошего требования. Другие документы об этой функции в задаче не упоминаются. Какие из следующих утверждений верны (выбери все подходящие)?

Выберите все верные варианты.

АПроверяемость нарушена — «быстро» и «удобно» нечем измерить
БАтомарность нарушена — приём карты и поддержка промокода это разные вещи в одном требовании
ВПолнота нарушена — «и т.д.» скрывает часть случаев
ГНепротиворечивость нарушена — требование расходится с другим документом

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

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Задание. На учебном полигоне в задаче на функцию оплаты дано требование: «Пользователь должен быстро и удобно оплатить курс, а также получить чек и уведомление». Перечисли: (1) сколько отдельных проверяемых вещей спрятано в этом требовании бандлом, и какие именно; (2) какое слово или слова делают часть требования непроверяемой.

Критерий приёмки: названы минимум три независимые вещи (оплата, получение чека, получение уведомления) и указано хотя бы одно из слов «быстро» / «удобно» как непроверяемое.

Подсказка: Раздели требование на отдельные действия, которые можно проверить порознь, и отдельно найди слова без числа или конкретного состояния.

✅ Готово, если: ответ раскрывает то, что просит критерий приёмки в задании выше.

Онлайн-проверка ответа появится позже

Задание. Перепиши требование «Скидка должна применяться корректно» так, чтобы оно стало проверяемым — конкретно укажи, что именно должно произойти при применении скидки.

Критерий приёмки: ответ содержит конкретное измеримое условие (например: «при вводе действующего промокода сумма к оплате уменьшается на размер скидки и отображается на экране до подтверждения оплаты»), а не общие слова вроде «работает правильно» или «применяется как надо».

Подсказка: Подумай, что именно должен увидеть пользователь на экране и в какой момент, чтобы можно было сказать «скидка применилась».

✅ Готово, если: ответ раскрывает то, что просит критерий приёмки в задании выше.

Онлайн-проверка ответа появится позже

Задание. Требование к разделу «Мои курсы» звучит так: «Курсы должны отображаться быстро и в удобном порядке, а количество мест на курс должно проверяться и т.д.». При этом в отдельном документе с бизнес-правилами каталога написано: «Количество мест не проверяется, запись на курс всегда доступна». Найди ДВЕ разные характеристики хорошего требования, нарушенные здесь одновременно, и для каждой одним предложением объясни, в чём конкретно нарушение по тексту.

Критерий приёмки: названы ровно две разные характеристики из пяти (например: непротиворечивость — цитируемое требование о проверке мест расходится с бизнес-правилом «запись всегда доступна»; и проверяемость или атомарность — «быстро» и «в удобном порядке» нечем измерить, либо два разных условия слиты в одно требование); для каждой характеристики дано конкретное обоснование по тексту задания, а не общая фраза.

Подсказка: Сравни текст требования с текстом бизнес-правила — там есть прямое расхождение. Отдельно посмотри на слова без числа и на количество разных условий в одном предложении.

✅ Готово, если: ответ раскрывает то, что просит критерий приёмки в задании выше.

Онлайн-проверка ответа появится позже

Что дальше

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

Назад  ·  ↑ В начало урока  ·  ⌂ В начало курса  ·  Вперёд →

Школа Виктора Комлева