https://infection.github.io/guide/

Библиотека для мутационного тестирования в PHP, работающая на основе AST (абстрактного синтаксического дерева). Она используется как инструмент командной строки (CLI) для оценки реального качества и эффективности ваших существующих тестов.

  • Проверяет тесты: Сначала запускает исходный набор тестов, чтобы убедиться, что они проходят.
  • Создает «мутантов»: Автоматически вносит небольшие изменения (ошибки) в исходный код вашего приложения (например, меняет > на >=, изменяет логические операторы или переменные).
  • Запускает тесты повторенно: Проверяет измененный код с помощью ваших тестов. — Если тесты упали — мутант «убит» (тесты хорошие, так как заметили ошибку) — Если тесты успешно прошли, несмотря на измененный код — мутант «выжил» (тесты не заметили ошибку, значит, они недостаточно качественные).

Инструмент рассчитывает три основных показателя, помогающие понять слабые места тестового покрытия:

  • MSI (Mutation Score Indicator): Главная метрика, показывающая процент обнаруженных (убитых) мутаций от общего числа. Помогает понять реальную эффективность тестов в отличие от стандартного Code Coverage, который часто бывает обманчивым.
  • Mutation Code Coverage: Процент мутаций, которые в принципе были затронуты тестами.
  • Covered Code MSI: Эффективность тестов исключительно на том участке кода, который ими покрыт.

Интересная, в целом, штука. Когда тесты уже написаны, а код уже "покрыт" - позволяет найти некачественное покрытие. Из минусов - ну очень долгие прогоны. Из плюсов - если подключить к процессу нейросеть - она сама выцепляет участки кода + интересующие тесты и позволяет значительно сократить время повторных прогонов.

Личный опыт: есть большой проект, на 100% покрыт тестами. В ходе мутационного тестирования нашел достаточно весомый объем тестов, которые не ломались, даже если намеренно ломать код.