Основы тестирования программного обеспечения

Пример обратного выполнения для программы вычисления степени числа x


В программе на Пример 2.4 фиксируются значения всех переменных после выполнения каждого оператора.

// Метод вычисляет неотрицательную // степень n числа x static public double PowerNonNeg(double x, int n) { double z=1; Console.WriteLine("x={0} z={1} n={2}", x,z,n); if (n>0) { Console.WriteLine("x={0} z={1} n={2}", x,z,n); for (int i=1;n>=i;i++) { z = z*x; Console.WriteLine( "x={0} z={1} n={2}" + " i={3}",x,z,n,i); } } else Console.WriteLine( "Ошибка ! Степень" + " числа n должна быть больше 0."); return z; } Пример 2.4. Исходный код с фиксацией результатов выполнения операторовdouble PowerNonNeg(double x, int n) { double z=1; int i; printf("x=%f z=%f n=%d\n",x,z,n); if (n>0) { printf("x=%f z=%f n=%d\n",x,z,n); for (i=1;n>=i;i++) { z = z*x; printf("x=%f z=%f n=%d i=%d\n", x,z,n,i); } } else printf( "Ошибка ! Степень " "числа n должна быть больше 0.\n"); return z; } Пример 2.4.1. Исходный код с фиксацией результатов выполнения операторов

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

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

Тестирование заканчивается, когда выполнилось или "прошло" (pass) успешно достаточное количество тестов в соответствии с выбранным критерием тестирования.

Тестирование – это:

  • Процесс выполнения ПО системы или компонента в условиях анализа или записи получаемых результатов с целью проверки (оценки) некоторых свойств тестируемого объекта.The process of operating a system or component under specified conditions, observing or recording the results, and making an evaluation of some aspect of the system or component [9].
  • Процесс анализа пункта требований к ПО с целью фиксации различий между существующим состоянием ПО и требуемым (что свидетельствует о проявлении ошибки) при экспериментальной проверке соответствующего пункта требований.The process of analyzing a software item to detect the differences between existing and required conditions (that is, bugs) and to evaluate features of software items [[IEEE Std.610-12.1990], [9].
  • Контролируемое выполнение программы на конечном множестве тестовых данных и анализ результатов этого выполнения для поиска ошибок [IEEE Std 829-1983].


Содержание раздела