Назад к словарю
Тестирование

Мутационное тестирование

Техника оценки качества тестов путём внесения небольших изменений (мутаций) в код и проверки, обнаруживают ли их тесты. Необнаруженные мутации указывают на слабые тесты.

Определение

Мутационное тестирование создаёт "мутантов" — копии кода с небольшими изменениями: переворачивание операторов (> на <), удаление выражений, изменение возвращаемых значений. Хорошие тесты должны падать при запуске против мутантов ("убивать" их). Выжившие мутанты выявляют пробелы в покрытии или ассертах. Инструменты: Stryker (JavaScript), PIT (Java), mutmut (Python). Mutation score = убитые мутанты / всего мутантов.

Почему это важно

Покрытие кода может быть высоким, а тесты всё равно слабыми (например, тесты выполняют код, но не проверяют результаты). Мутационное тестирование измеряет реальную эффективность тестов. Исследования показывают, что мутационное тестирование находит в 2-4 раза больше дефектов.

Пример

Код: if (age >= 18) return true. Мутант меняет >= на >. Если тесты не ловят это (все тестовые пользователи >18, ни один ровно 18), мутант выживает, выявляя отсутствующий edge case тест.

Связанные термины

mutation testingStrykerPITmutant testingtest qualitymutation score

Автоматизируйте код-ревью с diffray

Мульти-агентная AI-система для код-ревью. Находит баги, уязвимости и проблемы архитектуры автоматически.