TGViewer
Аналитик, который думал Аналитик, который думал @analysts_thinking · 92 subscribers
Post #187 13
Критерий, который не умеет отклонять результат, ничего не проверяет.

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

Но у такого Green есть слабое место. Мы знаем, какой результат проверка принимает. Не знаем, способна ли она отказать хотя бы одному правдоподобному, но неправильному результату.

Поэтому до реализации полезен negative-path gate, проверка отрицательного сценария: назовите один реалистичный исход, который выглядит убедительно, но должен быть отклонён. Затем убедитесь, что критерий действительно его отсекает.

Синтетический пример.

Система должна отменять заказ. Критерий приёмки проверяет три вещи:

— API вернул 200;
— в интерфейсе появился статус «Отменён»;
— создана операция возврата.

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

Проверка становится содержательной, когда в ней появляется отрицательный сценарий:

если отправление уже передано перевозчику, отмена должна быть отклонена с определённой причиной; статус заказа не меняется; возврат не создаётся; попытка остаётся в журнале.

Теперь критерий умеет не только подтвердить ожидаемое поведение, но и остановить правдоподобную ошибку.

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

В TDPD Red gate нужен не ради красного цвета в отчёте. Он показывает, что проверка способна обнаружить отсутствие нужного поведения до реализации. Green после этого означает инженерное соответствие заданному сценарию, но ещё не финальную пригодность результата.

Последнее решение остаётся на UAT. Человек проверяет, тот ли риск был заложен в критерий, не потерялся ли смысл за формально правильными сигналами и можно ли принять остаточный риск.

Если проверка принимает всё, она не защищает от ошибки. Она только оформляет разрешение двигаться дальше.
More from @analysts_thinking
  1. Oct 8, 2026Потерянный webhook остаётся открытым решением Таймаут не сообщает, произошло событие или н…
  2. Oct 7, 2026Промежуточное состояние нужно проектировать, а не скрывать processing не является неудобно…
  3. Oct 6, 2026return_url не означает payment.succeeded Возврат пользователя в интерфейс сообщает только…
  4. Oct 5, 2026Что на самом деле доказывает зелёный тест? Он показывает, что реализация соответствует зап…
  5. Oct 4, 2026«Показывать статус заявки» — так требование выглядело в начале. После уточнений оказалось,…
  6. Oct 3, 2026Позитивный сценарий обычно помещается в одну строку: оператор запускает проверку, сервис р…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →