https://infection.github.io/guide/
Библиотека для мутационного тестирования в PHP, работающая на основе AST (абстрактного синтаксического дерева). Она используется как инструмент командной строки (CLI) для оценки реального качества и эффективности ваших существующих тестов.
- Проверяет тесты: Сначала запускает исходный набор тестов, чтобы убедиться, что они проходят.
- Создает «мутантов»: Автоматически вносит небольшие изменения (ошибки) в исходный код вашего приложения (например, меняет > на >=, изменяет логические операторы или переменные).
- Запускает тесты повторенно: Проверяет измененный код с помощью ваших тестов. — Если тесты упали — мутант «убит» (тесты хорошие, так как заметили ошибку) — Если тесты успешно прошли, несмотря на измененный код — мутант «выжил» (тесты не заметили ошибку, значит, они недостаточно качественные).
Инструмент рассчитывает три основных показателя, помогающие понять слабые места тестового покрытия:
- MSI (Mutation Score Indicator): Главная метрика, показывающая процент обнаруженных (убитых) мутаций от общего числа. Помогает понять реальную эффективность тестов в отличие от стандартного Code Coverage, который часто бывает обманчивым.
- Mutation Code Coverage: Процент мутаций, которые в принципе были затронуты тестами.
- Covered Code MSI: Эффективность тестов исключительно на том участке кода, который ими покрыт.
Интересная, в целом, штука. Когда тесты уже написаны, а код уже "покрыт" - позволяет найти некачественное покрытие. Из минусов - ну очень долгие прогоны. Из плюсов - если подключить к процессу нейросеть - она сама выцепляет участки кода + интересующие тесты и позволяет значительно сократить время повторных прогонов.
Личный опыт: есть большой проект, на 100% покрыт тестами. В ходе мутационного тестирования нашел достаточно весомый объем тестов, которые не ломались, даже если намеренно ломать код.