Приём: колонка «чем проверяется» заполняется прогоном, а не памятью
Разница между честной сверкой и самообманом — в одном правиле. Строку «проверяется таким-то инструментом» разрешено писать только после того, как инструмент запущен и его вывод виден. Не «есть такой скрипт», не «вроде мы это ловим», а запуск прямо сейчас.
| Что считали | Сколько |
|---|---|
| Требований в регламенте, подряд | 120 |
| Из них с проверкой, которую реально запускают | 84 |
| Не проверяются ничем | 36 |
| Инструментов, названных в документе и отсутствующих в коде | 3 |
Инструмент-фантом опаснее пустой строки. Требование без проверки читается как долг: видно, что дыра. Требование со ссылкой на несуществующий инструмент читается как закрытый пункт — и закрывает вопрос для всех, кто откроет документ после вас. Разбирая свой регламент, мы нашли три таких ссылки; каждая много месяцев отвечала за спокойствие на пустом месте.
Пропорция важнее конкретных чисел. Треть требований без исполнителя — не признак плохой дисциплины: документ пишется быстрее, чем код, требования добавляются на ходу, а инструменты — по остаточному принципу. Без периодического пересчёта разрыв растёт сам собой.
Что происходит в зоне, где считать было нечем
Самая показательная часть разбора — участок работ, где ни один числовой порог не автоматизирован. Правила там существуют только в текстах, и тексты разъехались.
- Четыре документа, написанных в один день, задают одну и ту же величину по-разному — расхождение между крайними версиями в 5–10 раз.
- Ни один числовой порог зоны не реализован в коде. Проверить, соблюдается ли хоть одна из четырёх версий, было нечем — а значит, и повода их сводить не возникало.
- Два инструмента одной системы дают противоположный вердикт по одному и тому же объекту. Пока их выводы не кладут рядом, каждый выглядит убедительно.
Отдельный класс: прибор печатает норму и ничего не отсекает
Худший из найденных вариантов — не отсутствующая проверка, а присутствующая и пустая. Один из инструментов исправно выводил норму рядом с посчитанным значением: в отчёте видно число, видно требование, всё выглядит как работающий контроль. Порог отсечения при этом стоял в нуле, и не отсекалось ничего: через такую проверку проходило всё подряд.
Как это поймать. Отчёт с нормами читается как результат работы фильтра, хотя печать нормы и отсечение по норме — две независимые строки кода. Проверка одна: подсуньте прибору заведомо негодный образец. Не покраснел — перед вами оформление, а не контроль. Тот же приём ловит и мёртвые условия, и гейты, настроенные так, что порог никогда не достигается.
Как посчитать это у себя за один заход
- Выпишите требования подряд, по одному в строку. Из всех документов зоны, включая те, что считаются устаревшими: пока файл лежит рядом, по нему кто-нибудь работает.
- Напротив каждого — чем проверяется. Пустая клетка честнее выдуманной: писать инструмент можно только после его запуска.
- Посчитайте две колонки. Число во второй — это ваш фактический объём контроля, а не тот, который ощущается.
- Проверьте каждый названный инструмент на существование. Поиск по коду, а не по памяти: фантомы обнаруживаются именно здесь.
- Прогоните оставшиеся гарды на заведомо дефектном образце. Проверка, которая не краснеет, считается отсутствующей — и переезжает в первую колонку.