Обновить

Тест проходит даже с багом: что показал эксперимент Дэна Лу

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели5.9K
Всего голосов 1: ↑1 и ↓0+3
Комментарии3

Комментарии 3

Самая сильная часть эксперимента здесь — не число прогонов, а намеренная поломка, которая проверяет способность теста возражать реализации. Но одна мутация всё ещё слишком легко превращается в удачный пример. Я бы заранее зафиксировал несколько правдоподобных классов дефектов и независимый oracle, а затем сравнил mutation score по классам. Тогда станет видно не просто «тест прошёл», а какие ошибки он действительно умеет ловить.

Да, одна мутация показывает чувствительность теста только к выбранному дефекту. В статье это первый шаг: проверить, что тест вообще падает при той поломке, от которой должен защищать. Для сравнения методов нужен заранее заданный набор ошибок.

Я бы еще скрыл конкретные мутации от агента, который пишет тесты: иначе можно получить подгонку под известные поломки. И отдельно разбирал выжившие мутации: изменение может оказаться эквивалентным исходному коду, поэтому отсутствие падения само по себе еще не означает пробел в тестах.

Да, согласен: одна мутация здесь скорее sanity check — способен ли тест заметить именно заявленную поломку. Для сравнения методов я бы добавил закрытый набор дефектов, которого не видит агент, и отдельно разбирал эквивалентные мутации. Иначе легко спутать слабый тест с изменением, которое фактически не меняет поведение. Интересно было бы сравнить два набора: стандартные mutation operators и реальные дефекты из истории проекта.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации