Mutation Testing для программ с неизвестным выводом

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

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

РЕДАКТИРОВАТЬ: Правильно ли сказать, что мутант убит, просто если оригинал и мутант имеют разные выходы, без проверки правильности вывода оригинальной программы?

2 ответа

Решение

Это зависит от типа мутационного тестирования, о котором вы говорите.

При тестировании на слабые мутации мутант считается убитым, если он приводит к изменению внутреннего состояния программы - это изменение даже не нужно видеть снаружи.

В тестировании на устойчивую мутацию мутант считается убитым, если изменение распространяется на некоторое расстояние от его происхождения.

При тестировании на сильные мутации изменения должны распространяться и обнаруживаться утверждением в тестовом примере.

Так что ответ на

"Правильно ли говорить, что мутант убит, просто если оригинал и мутант имеют разные выходы, не проверяя, правильно ли вывод оригинальной программы?"

является

  • Слабый - да
  • Фирма - да
  • Сильный - Нет

Популярные инструменты тестирования мутаций с открытым исходным кодом в основном (все?) Системы тестирования сильных мутаций.

Нет. Основной целью мутационного тестирования является проверка качества тестовых случаев.

Если контрольные примеры хорошего качества, это убьет большинство мутантов.

Другие вопросы по тегам