Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методическое пособие ТРПП.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
493.57 Кб
Скачать

Задание:

Составить тесты для проверки программы, используя методы покрытия операторов и покрытия условий. Сформировать список ошибок, которые могут быть выявлены этими тестами.

Задача: вычислить значение функции:

Программа должна быть составлена с применением пользовательских процедур и функций.

Спецификация программы:

  • Название задачи: функция

Название программы: func1

Система программирования: Turbo Pascal 7.0

Системные требования: IBM PC/AT 286 и выше

  • Входные данные:

Действительное число – аргумент функции

  • Выходные данные:

Вычисленное значение функции.

Постановка задачи:

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

Спецификация переменных:

Имя переменной в программе

Назначение переменной в программе

Тип переменной

Диапазон типа

x

Значение аргумента функции

Real

0..1

Good

Булева переменная, сигнализирующая об успешном преобразовании введенного с клавиатуры значения

Boolean

2.9e-39..1.7e38

Текст программы:

program func1;

Uses Crt;

var

x : real;

Good : boolean;

procedure Header;

begin

WriteLn ('Вычислим значение функции');

WriteLn (' Y = x^3, при x < 0, затем x = x + 1');

WriteLn (' Y = √2x+1, при 0 <= x <= 2');

WriteLn (' 3x-1');

WriteLn (' Y = ─────, при x > 2');

WriteLn (' Cos x');

WriteLn;

end; {procedure Header}

procedure ClrPlace;

var

i : byte;

begin

WriteLn;

WriteLn ('Нажмите для выхода любую клавишу...');

ReadKey;

GotoXY(1,8);

for i := 1 to 5 do

begin

ClrEol;

Writeln;

end;

GotoXY(1,8);

end; {procedure ClrPlace}

procedure Entering;

var

XStr : string;

Code : integer;

begin

Write ('Введите значение X: ');

Read (XStr);

Val (XStr,x,Code);

if Code <> 0 then

begin

Good := false;

WriteLn ('Ошибка в ',Code,' позиции');

ClrPlace;

end

else Good := true;

end; {procedure Entering}

procedure OutCount(x:real);

var

i : byte;

begin

i := 0;

if x < 0 then

begin {x < 0}

WriteLn ('X = ',x);

WriteLn ('Y = ',x*x*x+1);

end

else

if ((x >= 0) AND (x <= 2)) then

begin {0<=x<2}

WriteLn ('X = ',x);

WriteLn ('Y = ',SQRT(2*x+1));

end

else if x > 2 then

begin {x > 2}

WriteLn ('X = ',x);

if Cos(x)=0 then WriteLn ('Ф-ция в этой точке не определена')

else WriteLn ('Y = ',(3*x-1)/Cos(x));

end;

ReadKey;

end;{procedure OutCount}

begin

ClrScr;

Header;

Entering;

if Good = true then OutCount(x);

end.

Набор тестов:

Метод покрытия операторов

Тест 1

Определяет, будет ли выполнен оператор вывода на экран сообщения «М должно быть меньше N», когда m > n

Входные данные: m=3; n=2

Тест 2

Определяет, будет ли выполнен оператор вывода на экран сообщения «М должно быть меньше N», когда m = n

Входные данные: m=3; n=3

Тест 3

Определяет, будут ли производиться вычисления, когда входные данные содержат хотя бы одно отрицательное число.

Входные данные: m=-1; n=5

Тест 4

Определяет, будут ли производиться вычисления, когда входные данные содержат хотя бы один ноль.

Входные данные: m=0; n=2

Тест 5

Определяет, будет ли выполнен оператор Factor := 1 в функции Factor, если во входных данных содержится хотя бы одна единица.

Входные данные: m=1; n=5

Тест 6

Определяет, будет ли выполнен оператор Factor := a*Factor(a-1) в функции Factor, если во входных данных содержится хотя бы одно число, удовлетворяющее условию a > 1

Входные данные: m=2; n=4

Метод покрытия решений

Тест 7

Определяет, будет ли выполнен оператор вывода на экран сообщения «М должно быть меньше N», когда m > n

Входные данные: m=3; n=2

Тест 8

Определяет, будет ли выполнен оператор вывода на экран сообщения «М должно быть меньше N», когда m < n

Входные данные: m=2; n=3

Тест 9

Определяет, будет ли выполнен оператор вывода на экран сообщения «М должно быть меньше N», когда m = n

Входные данные: m=3; n=3

Тест 10

Определяет, будет ли выполнен оператор вывода на экран сообщения «М должно быть меньше N», когда m ≠ n

Входные данные: m=3; n=2

Тест 11

Определяет, будут ли производиться вычисления, когда входные условия удовлетворяют условию m < n

Входные данные: m=1; n=5

Тест 12

Определяет, будут ли производиться вычисления, когда входные условия удовлетворяют условию m ≥ n

Входные данные: m=3; n=3

Тест 13

Определяет, будет ли выполнен оператор Factor := 1 в функции Factor, если во входных данных содержится хотя бы одна единица.

Входные данные: m=1; n=5

Тест 14

Определяет, будет ли выполнен оператор Factor := a*Factor(a-1) в функции Factor, если во входных данных содержится хотя бы одно число, удовлетворяющее условию a > 1

Входные данные: m=2; n=4

Ошибки:

Тест 1: выявляет ошибку, когда при введенных значениях m > n вычисления производятся далее.

Тест 2: выявляет ошибку, когда при введенных значениях m = n вычисления производятся далее.

Тест 3: выявляет ошибку, когда во входных данных находится отрицательное число, а вычисления производятся далее.

Тест 4: выявляет ошибку, когда во входных данных находится ноль, а вычисления производятся далее.

Тест 5: выявляет ошибку, когда находим факториал от единицы, а программа либо зацикливается, либо выводит неверный результат.

Тест 6: выявляет ошибку, когда находим факториал числа, большего единицы, а в результате получаем единицу.

Тест 7: выявляет ошибку, когда при введенных значениях m > n вычисления производятся далее.

Тест 8: выявляет ошибку, когда входные данные удовлетворяют условию m < n, а вычисления далее не производятся.

Тест 9: выявляет ошибку, когда при введенных значениях m = n вычисления производятся далее.

Тест 10: выявляет ошибку, когда входные данные удовлетворяют условию m ≠ n, а вычисления далее не производятся.

Тест 11: выявляет ошибку, когда входные данные удовлетворяют условию m < n, а вычисления далее не производятся.

Тест 12: выявляет ошибку, когда при введенных значениях m > n вычисления производятся далее.

Тест 13: выявляет ошибку, когда находим факториал от единицы, а программа либо зацикливается, либо выводит неверный результат.

Тест 14: выявляет ошибку, когда находим факториал числа, большего единицы, а в результате получаем единицу.

Контрольные вопросы

  1. Что такое спецификация программы

  2. Что такое постановка задачи

  3. Что такое исходные данные задачи

  4. Что такое тестирование

  5. Что такое отладка программы

  6. Для чего необходимо техническое задание

  7. Перечислить методы тестирования, используемые в данной работе.

  8. Перечислить ошибки, которые могут встретится при тестировании данной программы