Введение

Метод тестирования программного обеспечения

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

Введение

Большая часть этой статьи посвящена "мутации программ", при которой программа подвергается модификации. Более общее определение анализа мутаций – использование чётко определённых правил, основанных на синтаксических структурах, для внесения систематических изменений в программные продукты. Анализ мутаций применялся и к другим задачам, но чаще всего используется в контексте тестирования. Следовательно, мутационное тестирование определяется как использование анализа мутаций для разработки новых тестов программного обеспечения или оценки существующих.

Обзор

Можно создавать тесты для проверки корректности реализации данной программной системы, но создание тестов всё равно ставит вопрос о том, являются ли сами тесты корректными и достаточно полно покрывают требования, которые послужили основой для реализации. (Эта технологическая проблема сама по себе является примером более глубокой философской проблемы под названием "Quis custodiet ipsos custodes?" ["Кто будет охранять стражей?"]). Идея мутационного тестирования заключается в том, что введение мутанта обычно приводит к ошибке в функциональности программы, которую тесты должны обнаружить. Таким образом, тесты подвергаются проверке. Если тестовый набор не обнаруживает мутанта, это обычно указывает на то, что он не способен выявить дефекты, представленные этим мутантом, но также может означать, что мутация не вносит никаких дефектов, то есть является допустимым изменением, не влияющим на функциональность. Один из (распространённых) способов, которым мутант может быть допустимым, заключается в том, что изменённый код является "мёртвым кодом", который никогда не выполняется. Для эффективного мутационного тестирования в больших масштабах обычно вводят большое количество мутантов, что приводит к компиляции и выполнению огромного числа копий программы. Проблема высокой стоимости мутационного тестирования ограничила его практическое применение в качестве метода тестирования программного обеспечения. Однако, расширение использования объектно-ориентированных языков программирования и средств модульного тестирования привело к созданию инструментов мутационного тестирования, которые проверяют отдельные части приложения.