3.2.4. Мутационный критерий (класс IV)Постулируется, что профессиональные программисты пишут сразу почти правильные программы, отличающиеся от правильных мелкими ошибками или описками такого рода, как перестановка местами максимальных значений индексов в описании массивов, ошибки в знаках арифметических операций, занижение или завышение границы цикла на 1 и т. п. Мутационный критерий предлагает подход, позволяющий на основе мелких ошибок оценить общее число ошибок, оставшихся в программе. Подход базируется на следующих понятиях: Мутации - мелкие ошибки в программе. Мутанты - программы, отличающиеся друг от друга мутациями. Содержание метода мутационного тестирования состоит в следующем. В разрабатываемую программу P вносят мутации, т.е. искусственно создают программы-мутанты P1, P2... Затем программа P и ее мутанты тестируются на одном и том же наборе тестов (X,Y). Если на наборе (X,Y) подтверждается правильность программы P, и, кроме того, выявляются все внесенные в программы-мутанты ошибки, то набор тестов (X,Y) соответствует мутационному критерию, а тестируемая программа объявляется правильной. Если некоторые мутанты не проявили всех своих мутаций, то надо расширять набор тестов (X,Y) и продолжать тестирование. Пример применения мутационного критерия Рассмотрим следующую программу P. // Метод вычисляет неотрицательную степень n числа x Для нее создается две программы-мутанта P1 и P2. В P1 изменено начальное значение переменной z с 1 на 2. // Метод вычисляет неотрицательную степень n числа x Измененное начальное значение переменной z в мутанте Р1 выделено в тексте программы светлым тоном. В P2 изменено начальное значение переменной i с 1 на 0 и граничное значение индекса цикла с n на n-1. // Метод вычисляет неотрицательную степень n числа x Измененное начальное значение переменной i и границы цикла в мутанте P2 также выделены в тексте программы. При запуске тестов (X,Y) = { (x=2, n=3, y=8), (x=999, n=1, y=999), (x=0, n=100, y=0) } выявляются все ошибки в программах-мутантах и ошибка в основной программе, где в условии цикла вместо n стоит n-1.
|