Сквозной пример тестирования
Возьмем несколько отличающуюся от Пример 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. Другой пример вычисления степени числа#include <stdio.h> double Power(int x, int n) { int z=1; int i; for (i=1;n>=i;i++) { z = z*x; } return z; } void main(void) { int x; int n; printf("Enter x:"); if(scanf("%d",&x)) { if ((x>=0) & (x<=999)) { printf("Enter n:"); if(scanf("%d",&n)) { if ((n>=1) & (n<=100)) { printf("The power n of x is %f\n", Power(x,n)); } else { printf("Error : n must be in [1..100]\n"); } } else { printf("Error : Please enter a numeric argument\n"); } } else { printf("Error : x must be in [0..999]\n"); } } else { printf("Error : Please enter a numeric argument\n"); } } Пример 2.5.1. Другой пример вычисления степени числаДля приведенной программы, вычисляющей степень числа (Пример 2.5), воспроизведем последовательность действий, необходимых для тестирования.
Спецификация программы
На вход программа принимает два параметра: x - число, n – степень. Результат вычисления выводится на консоль.
Значения числа и степени должны быть целыми.
Значения числа, возводимого в степень, должны лежать в диапазоне – [0..999].
Значения степени должны лежать в диапазоне – [1..100].
Если числа, подаваемые на вход, лежат за пределами указанных диапазонов, то должно выдаваться сообщение об ошибке.
Разработка тестов
Определим области эквивалентности входных параметров.
Для x – числа, возводимого в степень, определим классы возможных значений:
- x < 0 (ошибочное)
- x > 999 (ошибочное)
- x - не число (ошибочное)
-
0 <= x <= 999(корректное)Для n – степени числа:
- n < 1 (ошибочное)
- n > 100 (ошибочное)
- n - не число (ошибочное)
- 1 <= n <= 100 (корректное)
- Входные значения: (x = 2, n = 3) (покрывают классы 4, 8).Ожидаемый результат: The power n of x is 8.
- Входные значения: {(x = -1, n = 2),(x = 1000, n = 5 )} (покрывают классы 1, 2).Ожидаемый результат: Error : x must be in [0..999].
- Входные значения: {(x = 100, n = 0),(x = 100, n = 200)} (покрывают классы 5,6).Ожидаемый результат: Error : n must be in [1..100].
- Входные значения:(x = ADS n = ASD) (покрывают классы эквивалентности 3, 7).Ожидаемый результат: Error : Please enter a numeric argument.
- Проверка на граничные значения:
- Входные значения: (x = 999 n = 1).Ожидаемый результат: The power n of x is 999.
- Входные значения: x = 0 n = 100.Ожидаемый результат: The power n of x is 0.
- Входные значения: (x = 999 n = 1).Ожидаемый результат: The power n of x is 999.
Запустим программу с заданными значениями аргументов.
Оценка результатов выполнения программы на тестах
В процессе тестирования Оракул последовательно получает элементы множества (X,Y) и соответствующие им результаты вычислений YВ. В процессе тестирования производится оценка результатов выполнения путем сравнения получаемого результата с ожидаемым.