ВУЗ:
Составители:
Рубрика:
36
2.2.5. Пример обратного выполнения программы
Обратное выполнение программы возможно при условии сохранения на
каждом шаге программы всех значений переменных или состояний программы
для соответствующей трассы. Тогда, поднимаясь от конечной точки трассы к
любой другой, можно по шагам произвести вычисления состояний, двигаясь от
следствия к причине, от состояний на выходе преобразователя данных к со-
стояниям на его входе. Естественно, такие возможности мы получаем в режиме
off-line анализа при фиксации в Log-файле всей истории выполнения трассы.
В следующей программе фиксируются значения всех переменных после
выполнения каждого оператора.
// Метод вычисляет неотрицательную степень 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;
}
Зная структуру управляющего графа программы и имея значения всех пе-
ременных после выполнения каждого оператора, можно осуществить обратное
выполнение (например, в уме), подставляя значения переменных в операторы и
двигаясь снизу вверх, начиная с последнего.
Итак, в процессе тестирования сравнение промежуточных результатов с
полученными независимо эталонными результатами позволяет найти причины
и место ошибки, исправить текст программы, провести повторную трансляцию
и настройку на выполнение и продолжить тестирование.
Тестирование заканчивается, когда выполнилось или «прошло» (pass) ус-
пешно достаточное количество тестов в соответствии с выбранным критерием
тестирования.
2.2.6. Сквозной пример тестирования
Возьмем несколько отличающуюся от предыдущей (п. 2.2.5.) программу:
// Метод вычисляет степень n числа x
static public double Power(int x, int n)
Страницы
- « первая
- ‹ предыдущая
- …
- 34
- 35
- 36
- 37
- 38
- …
- следующая ›
- последняя »