ЛР №1 Пример обратного выполнения для программы вычисления степени числа 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.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].
Сквозной пример тестирования
Возьмем несколько отличающуюся от Пример 2.4 программу:
// Метод вычисляет степень n числа x static public double Power(int x, int n) { int z=1; for (int i=1;n>=i;i++) { z = z*x; } return z; } [STAThread] static void Main(string[] args) { int x; int n; try { Console.WriteLine("Enter x:"); x=Convert.ToInt32(Console.ReadLine()); if ((x>=0)&(x<=999)) { Console.WriteLine("Enter n:"); n=Convert.ToInt32(Console.ReadLine()); if ((n>=1) & (n<=100)) { Console.WriteLine("The power n" + " of x is {0}", Power(x,n)); Console.ReadLine(); } else { Console.WriteLine("Error : n " + "must be in [1..100]"); Console.ReadLine(); } } else { Console.WriteLine("Error : x " + "must be in [0..999]"); Console.ReadLine(); } } catch (Exception e) { Console.WriteLine("Error : Please enter " + "a numeric argument."); Console.ReadLine(); } }
Пример 2.5.1. Другой пример вычисления степени числа
Для приведенной программы, вычисляющей степень числа (Пример 2.5), воспроизведем последовательность действий, необходимых для тестирования.
Спецификация программы
На вход программа принимает два параметра: x — число, n – степень. Результат вычисления выводится на консоль.
Значения числа и степени должны быть целыми.
Значения числа, возводимого в степень, должны лежать в диапазоне – [0..999].
Значения степени должны лежать в диапазоне – [1..100].
Если числа, подаваемые на вход, лежат за пределами указанных диапазонов, то должно выдаваться сообщение об ошибке.
Разработка тестов
Определим области эквивалентности входных параметров.
Для x – числа, возводимого в степень, определим классы возможных значений:
Для n – степени числа:
Анализ тестовых случаев
Ожидаемый результат: The power n of x is 8.
Ожидаемый результат: Error : x must be in [0..999].
Ожидаемый результат: Error : n must be in [1..100].
Ожидаемый результат: Error : Please enter a numeric argument.
Ожидаемый результат: The power n of x is 999.
Ожидаемый результат: The power n of x is 0.
Выполнение тестовых случаев
Запустим программу с заданными значениями аргументов.
Оценка результатов выполнения программы на тестах
В процессе тестирования Оракул последовательно получает элементы множества (X,Y) и соответствующие им результаты вычислений YВ. В процессе тестирования производится оценка результатов выполнения путем сравнения получаемого результата с ожидаемым.
CC-BY-CA Цыганенко В.Н., 15.10.2012