Обычные метрики покрытия (coverage 90%) ничего не говорят о качестве тестов. Код можно покрыть, но не проверить. Mutation testing проверяет не код, а тесты.
Как это работает:
Инструмент специально вносит мелкие изменения (мутации) в код:
🟣 > заменяет на <
🟣 == на !=
🟣 убирает строки, инвертирует условия
Если после этого тесты всё равно проходят — значит, они не ловят ошибку.
🔜 Пример:
def is_adult(age):
return age >= 18
Тест проверяет age = 18.
Мутация меняет код на > — тест всё ещё проходит.
Вывод: тест слабый, не покрывает граничные случаи.
📍 Навигация: [Вакансии]
🐸 Библиотека тестировщика
#теория_на_пальцах
