Я не уверен на 100%, является ли приведенное ниже объяснение исторически точным. Если это не так, пожалуйста, не стесняйтесь редактировать или удалять.
Мутация была изобретена Липтоном. Мутационное тестирование можно рассматривать как способ измерения качества или эффективности тестового набора. Основная идея заключается в том, чтобы внедрить ошибки в тестируемую программу (то есть, чтобы изменить программу), предпочтительно виды ошибок, которые может совершить программист-человек, и посмотреть, обнаружит ли набор тестов введенные ошибки. Типичным примером такого рода тестирования мутаций может быть замена x> 0 на x <0 или замена x на x + 1 или x-1. Доля ошибок, обнаруженных набором тестов, является «показателем адекватности мутаций» набора тестов. Говоря очень свободно, можно думать об этом как о методе Монте-Карло для вычисления показателя адекватности мутации.
Более абстрактно можно сказать, что мутационное тестирование выдвигает на первый план симметрию или двойственность между программой и ее наборами тестов: не только можно использовать набор тестов, чтобы стать более уверенным в правильности программы, но, наоборот, программа может быть используется для получения уверенности в качестве тестового набора.
В свете этой двойственности, тестирование мутаций также концептуально близко к внедрению ошибки . Оба технически похожи, но имеют разные цели. Мутационное тестирование стремится измерить качество набора тестов, в то время как внедрение ошибок стремится установить качество программы, обычно качество ее обработки ошибок.
Недавно идеи мутационного тестирования были использованы для проверки (формализации) логических теорий. Перефразируя реферат (4): При разработке нетривиальных формализаций в средстве проверки теорем значительное количество времени отводится «отладочным» спецификациям и теоремам. Как правило, неправильные спецификации или теоремы обнаруживаются при неудачных попытках доказательства. Это дорогая форма отладки. Поэтому часто полезно проверить гипотезы, прежде чем приступать к доказательству. Возможный способ сделать это - назначить случайные значения свободным переменным гипотезы и затем оценить ее. (4) использует мутации для проверки качества используемых генераторов тестовых случаев.
История . Из (1): История мутационного тестирования восходит к 1971 году в студенческой статье Ричарда Липтона [...] Рождение поля также может быть идентифицировано в других работах, опубликованных в конце 1970-х годов Липтоном и соавторами. (2), а также Гамлет (3).
Репозиторий мутационного тестирования: теория мутационного тестирования .
RA DeMillo, RJ Lipton, FG Sayward, Советы по выбору тестовых данных: Справка для практикующего программиста .
Р.Г. Гамлет. Тестирование программ с помощью компилятора .
S. Berghofer, T. Nipkow, Случайное тестирование в Изабель / HOL. ,