← ClaudeAtlas

mutation-hardenlisted

Разобрать выживших мутантов и укрепить тесты до порога mutation score. Используй, когда мутационное тестирование показало низкий процент убитых мутантов, когда нужно понять, что реально проверяют тесты, или когда покрытие высокое, а доверия к тестам нет.
DanielLetto2020/vibe-rules · ★ 1 · AI & Automation · score 69
Install: claude install-skill DanielLetto2020/vibe-rules
# Разбор выживших мутантов ## Зачем это вообще Покрытие говорит, что строка исполнялась. Оно не говорит, что её проверяли. Набор со 100% покрытия и 4% убитых мутантов исполняет каждую строку и пропускает почти все возможные ошибки. Мутационное тестирование портит код нарочно — меняет `>` на `>=`, `+` на `-`, убирает вызов, подменяет константу — и смотрит, покраснеют ли тесты. **Выживший мутант = место, где код можно сломать, и никто не заметит.** На коде, написанном агентом, мутанты выживают заметно чаще при том же покрытии: ассерты получаются согласованными с реализацией, а не с требованием. ## Порядок работы ### 1. Возьми отчёт, а не общий процент Общая цифра говорит только «плохо» или «хорошо». Работать нужно со списком выживших: файл, строка, какая мутация выжила. ### 2. Раздели выживших на три группы **Настоящая дыра.** Мутация меняет поведение, и ни один тест этого не видит. Это подавляющее большинство. Лечится добавлением ассерта — не нового теста, а именно проверки, которой не хватало. **Эквивалентный мутант.** Мутация не меняет наблюдаемое поведение вообще (например, порядок в коммутативной операции). Убить его невозможно. Помечается в конфиге как исключение — с комментарием, почему. **Мутация в непроверяемом месте.** Логирование, отладочный вывод, тривиальные геттеры. Такие места исключаются из мутирования целиком, а не по одному. Не начинай с исключений. Если хочется исключить больше десятой части выживших — почти наверняка это самообман. ### 3. Чини а