Ревью и трассировка требований
Что это такое
Ревью требований — структурированное чтение документа теми, кто будет строить, тестировать и использовать систему, в поисках неоднозначностей, пробелов и противоречий, а трассировка связывает каждое требование с проверяющим его тестом и позже — с кодом и изменением, которые его реализуют.
Почему это важно
Дефекты в спецификации дешевле всего исправить, однако увидеть их труднее всего: они живут в том, чего нет, — в случае, который никто не рассмотрел, в двух требованиях, противоречащих друг другу, в числе, изменившемся в одном разделе и уцелевшем в другом. Ревью находит их намеренно, а трассировка доказывает, что между соглашением и релизом ничего не потерялось. Там, где замешаны контракт или регулятор, трассировка к тому же служит доказательством, что согласованное и есть поставленное.
Ключевые идеи
Ревьюируйте по четырём типам дефектов, по порядку
Отсутствующее нет требования о том, что происходит при сбое пакета
Неоднозначное «разумное время» встречается трижды без определения
Противоречивое раздел 4 требует email-подтверждения, раздел 7 его запрещает
Непроверяемое «система должна быть надёжной под нагрузкой»
Просьба о «комментариях» даёт замечания о стиле, а четыре названные категории — дефекты: отсутствующее, неоднозначное, противоречивое и непроверяемое.
Используйте чек-лист и держите его коротким
Десятка вопросов к каждому требованию достаточна: назван ли субъект действия, указан ли триггер, есть ли число там, где стоит уточнение, покрыт ли случай сбоя, трассируется ли требование к тесту?
Дайте каждому требованию стабильный идентификатор
Нужен id, который никогда не меняется, чтобы более поздний разговор мог на него сослаться. Номера, которые сдвигаются при переупорядочивании разделов, обесценивают трассировку за неделю.
REQ-PAY-014 возвраты не должны превышать исходную сумму платежа
тест refund_of_more_than_paid_is_rejected
код payment/refund.ts:88
изменение PR-2311
Трассируйте вперёд и назад перед релизом
Движение вперёд означает, что у каждого требования есть тест; движение назад — что каждый тест трассируется к требованию. Поэтому ничто не построено, чего никто не просил, и ничто не просили, чего никто не построил.
Осознанно перебазируйте, когда требования меняются
Считайте и датируйте изменения: документ, меняющийся молча, хуже устаревшего, потому что все ему верят.
Практика
Проведите структурированное ревью одного раздела
Возьмите один раздел и попросите трёх человек прочитать его по четырём категориям дефектов, затем сведите и классифицируйте находки.
Готово, когда: каждая находка помечена как отсутствующая, неоднозначная, противоречивая или непроверяемая, а непроверяемые переписаны.
Постройте таблицу трассировки для одной функции
Для одной функции перечислите каждое требование с его тестом и его изменением.
Готово, когда: ни одно требование не осталось без теста и ни один тест без требования, либо пробелы записаны с владельцем.
Частые ошибки
- Просьба об общих комментариях — ревью выдаёт исправления опечаток; исправить: ревьюируйте по названным категориям дефектов.
- Ревью в одиночку — автор читает то, что имел в виду; исправить: включите хотя бы одного человека, не видевшего документ.
- Перенумерация требований — трассировки ломаются за считанные дни; исправить: присваивайте стабильные идентификаторы, которые никогда не меняются.
- Трассировка только вперёд — работа, которую никто не просил, остаётся невидимой; исправить: трассируйте назад от тестов тоже.
- Молчаливые изменения — все доверяют документу, который больше не соответствует соглашению; исправить: версионируйте и датируйте каждое изменение.
Что читать дальше
- Проверяемая спецификация поведения (04-product-process/05-requirements-engineering/01-specifying-behaviour-testably) — стандарт письма, который это ревью обеспечивает.
- Инженерия требований (04-product-process/05-requirements-engineering) — трек, который закрывает эта глава.
- Приёмочное тестирование пользователем (04-product-process/16-user-acceptance-testing) — последняя контрольная точка трассировки.
- Техническое письмо (04-product-process/08-technical-writing) — структура и редактирование самого документа.