Главная > Отладка и тестирование приложений в среде Visual Studio 2005
<< Предыдущий параграф Следующий параграф >>
Пред.
След.
Макеты страниц

Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше

Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике

3.2.4. Мутационный критерий (класс IV)

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

Подход базируется на следующих понятиях:

Мутации - мелкие ошибки в программе.

Мутанты - программы, отличающиеся друг от друга мутациями. Содержание метода мутационного тестирования состоит в следующем. В разрабатываемую программу P вносят мутации, т.е. искусственно создают программы-мутанты P1, P2... Затем программа P и ее мутанты тестируются на одном и том же наборе тестов (X,Y).

Если на наборе (X,Y) подтверждается правильность программы P, и, кроме того, выявляются все внесенные в программы-мутанты ошибки, то набор тестов (X,Y) соответствует мутационному критерию, а тестируемая программа объявляется правильной.

Если некоторые мутанты не проявили всех своих мутаций, то надо расширять набор тестов (X,Y) и продолжать тестирование.

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

Рассмотрим следующую программу P.

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

Для нее создается две программы-мутанта P1 и P2. В P1 изменено начальное значение переменной z с 1 на 2.

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

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

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

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

Измененное начальное значение переменной 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.

 

Categories

1
Оглавление
email@scask.ru