В программе на Пример 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) успешно достаточное количество тестов в соответствии с выбранным критерием тестирования.
Тестирование – это: