Пример применения мутационного критерия

Тестируемая программа P приведена на пример 3.2. Для нее создается две программы-мутанта P1 и P2.

В P1 изменено начальное значение переменной z с 1 на 2 (пример 3.3).

В P2 изменено начальное значение переменной i с 1 на 0 и граничное значение индекса цикла с n на n-1 (пример 3.4).

При запуске тестов (X,Y) = {(x=2,n=3,y=8),(x=999,n=1,y=999), (x=0,n=100,y=0 } выявляются все ошибки в программах-мутантах и ошибка в основной программе, где в условии цикла вместо n стоит n-1:

// Метод вычисляет неотрицательную // степень n числа xstatic public double PowerNonNeg(double x, int n){double z=1; if (n>0) { for (int i=1;n-1>=i;i++) { z = z*x; } } else Console.WriteLine("Ошибка! Степень числа n должна быть больше 0."); return z;}

Пример 3.2. Основная программа P

double PowerNonNeg(double x, int n){ double z=1; int i; if (n>0) { for (i=1;n-1>=i;i++) { z = z*x; } } else printf("Ошибка! Степень числа n должна быть больше 0.\n"); return z;}

Пример 3.2.1. Основная программа P

Измененное начальное значение переменной z в мутанте Р1 помечено светлым тоном:

// Метод вычисляет неотрицательную // степень n числа xstatic public double PowerMutant1(double x, int n){double z=2; if (n>0) { for (int i=1;n>=i;i++) { z = z*x; } } else Console.WriteLine("Ошибка! Степень числа n должна быть больше 0."); return z;}

Пример 3.3. Программа мутант P1.

double PowerMutant1(double x, int n){ double z=2; int i; if (n>0) { for (i=1;n>=i;i++) { z = z*x; } } else printf("Ошибка! Степень числа n должна быть больше 0.\n"); return z;}

Пример 3.3.1. Программа мутант P1.

Измененное начальное значение переменной i и границы цикла в мутанте P2 помечено светлым тоном:

// Метод вычисляет неотрицательную// степень n числа xstatic public double PowerMutant2(double x, int n){double z=1; if (n>0) { for (int i=0;n-1>=i;i++) { z = z*x; } } else Console.WriteLine("Ошибка! Степень числа n должна быть больше 0"); return z;}

Пример 3.4. Программа-мутант P2.

double PowerMutant2(double x, int n){ double z=1; int i; if (n>0) { for (i=0;n-1>=i;i++) { z = z*x; } } else printf("Ошибка! Степень числа n должна быть больше 0.\n"); return z;}

Пример 3.4.1. Программа-мутант P2.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: