Ревью и трассировка требований — Примеры

Пример 1 — Ревью по четырём типам дефектов

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

REQ-REF-01  Возвраты обрабатываются быстро.
REQ-REF-02  Возврат не должен превышать исходный платёж.
REQ-REF-03  Подтверждения возврата отправляются по электронной почте.
REQ-REF-04  Подтверждения возврата отправляются только почтой.
REQ-REF-05  Процесс возврата надёжен под нагрузкой.

Решение

REQ-REF-01  неоднозначно   у «быстро» нет длительности — дайте число
REQ-REF-02  проходит       проверяемо как написано
REQ-REF-03  противоречиво  конфликт с REF-04 — выберите один канал
REQ-REF-04  противоречиво  назовите исключение, где используется почта
REQ-REF-05  непроверяемо   укажите цифру нагрузки и поведение при сбое
Отсутствует нет требования о том, что делать, когда провайдер отказывает в возврате

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

Пример 2 — Трассировка вперёд и назад до релиза

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

Требования     Тесты                      Код
REQ-REF-01     refund_within_90_days      payment/refund.ts
REQ-REF-02                                payment/refund.ts
REQ-REF-03     refund_email_sent          notify/email.ts
REQ-REF-04     refund_post_only           notify/post.ts
               refund_recalc_totals       payment/recalc.ts

Решение

REQ-REF-01  refund_within_90_days   payment/refund.ts:41
REQ-REF-02  ПРОБЕЛ — нет теста      payment/refund.ts:88
REQ-REF-03  refund_email_sent       notify/email.ts:12
REQ-REF-04  refund_post_only        notify/post.ts:7

refund_recalc_totals  ПРОБЕЛ — не трассируется ни к одному требованию

Тест для REQ-REF-02 пишут до релиза; пересчёт либо получает
требование, либо выводится из объёма работ.

Трассировка вперёд ловит непроверенное требование, а назад — пересчёт, который никто не просил. Именно стабильные идентификаторы вроде REQ-REF-02 позволяют таблице пережить переупорядочивание раздела. Обычная ошибка — перенумеровывать требования при каждой правке, после чего трассировка становится бесполезной за неделю.