Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЯПЗТ.doc
Скачиваний:
1
Добавлен:
06.05.2019
Размер:
2.14 Mб
Скачать

2 Практична частина

Лабораторна робота № 1

Тема: розробка тестів для перевірки програми

Мета: навчатися розробляти тести для перевірок програм

В ході виконання лабораторної роботи № 1 була складена програма для обчислення функції варіанту №6

Також була складена специфікація програмних даних:

Назва завдання: Чисельна функція

Назва програми: Обчислення функції

Система програмування: Borland Delphi 7.0

Системні вимоги: IBM PC/AT 286 і вище



Специфікація даних програми.

Програма приймає 3 вхідні параметри:

x, a, b – параметри функції (дійсні числа).

Значення числа х набуває будь-якого значення.

Якщо число х, набуває значення більше -1, то значення у розраховується за першою формулою, а якщо буде рівне або менше -1, то значення у розраховується за другою формулою.

Вихідні дані.

Вихідними даними програми є обчислене значення функції y (дійсне число).

Результат обчислення виводиться на робочому вікні у спеціально відведеному для цього місці.

Наступним кроком виконання лабораторної роботи є визначення області еквівалентності вхідних даних

Для х

Для а

Для b

При -1<x<0 помилкове

При x<0 помилкове

При х =-1/a помилкове

При х>1 помилкове

При х=0 помилкове

При х=4 правильне

При х=-1 правильне

При a=-1/х помилкове

а – неправельне число

При а=2 правильне

При b=0 помилкове

b – неправельне число

При b=3 правильне

Далі необхідно виконати аналіз текстових випадків.

1 Вхідні значення: х=1, a=2, b=2

Очікуваний результат: у=0.333333333333333

2 Вхідні значення: х=1, а=-1, b=3

Очікуваний результат: Помилка обрахунку!

Введено неправильні арифметичні дані.

Добуток a*x+1 не повинен бути рівним 0.

3 Вхідні значення: х=-0.9, а=2, b=2

Очікуваний результат: Помилка обрахунку!

Введено неправильні арифметичні дані.

Х не може знаходитися між - 0,9.. 0.

4 Вхідні значення: x=-2, a=2, b=2

Очікуваний результат: у=-0.274653072167027

5 Вхідні значення: x=-2, a=5, b=0

Очікуваний результат: Помилка обрахунку!

Введено неправильні арифметичні дані.

Добуток b*x не повинен дорівнювати 0.

6 Вхідні значення: x=-, a=5, b=0

Очікуваний результат: Помилка обрахунку!

Введено неправильні арифметичні дані.

Введено дані не числового формату або зовсім нічого не введено.

7 Вхідні значення: x=6, a=-, b=0

Очікуваний результат: Помилка обрахунку!

Введено неправильні арифметичні дані.

Введено дані не числового формату або зовсім нічого не введено.

8 Вхідні значення: x=4, a=5, b=-

Очікуваний результат: Помилка обрахунку!

Введено неправильні арифметичні дані.

Введено дані не числового формату або зовсім нічого не введено.

Складений набір тестів, які виявляють всі можливі помилки обчислень.

№ тесту

Значення параметрів

Опис ситуації

Результат

x

a

b

Тип

Повідомлення

1

1

2

2

x

у=0.333333333333333

2

1

-1

3

Ділення на 0

х

Помилка обрахунку!

Введено неправильні арифметичні дані.

Добуток a*x+1 не повинен бути рівним 0.

3

0,9

2

2

Корінь з -

х

Помилка обрахунку!

Введено неправильні арифметичні дані.

Х не може знаходитися між - 0,9.. 0.

4

-2

2

2

х

у=-0.274653072167027

5

-1

5

0

Ділення на нуль

х

Помилка обрахунку!

Введено неправильні арифметичні дані.

Добуток b*x неповинен =0

6

«-»

2

0

Не ведена або помилково ведення змінна х

х

Помилка введення даних в поле змінної "х"!

Введено дані не числового формату або зовсім нічого не введено.

Введіть правильні дані в поле введення змінної "x".

7

8

«-»

2

Не ведена або помилково веденна змінна х

х

Помилка введення даних в поле змінної "а"!

Введено дані не числового формату або зовсім нічого не введено.

Введіть правильні дані в поле введення змінної " a ".

8

8

0

«-»

Не ведене або помилково веденна змінна а

х

Помилка введення даних в поле змінної "а"!

Введено дані не числового формату або зовсім нічого не введено.

Введіть правильні дані в поле введення змінної "b".

Лістинг програми.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, jpeg, ExtCtrls;

type

TForm1 = class(TForm)

lbl1: TLabel;

img1: TImage;

lbl2: TLabel;

lbl3: TLabel;

lbl4: TLabel;

lbl5: TLabel;

edt1: TEdit;

edt2: TEdit;

edt3: TEdit;

lbl6: TLabel;

lbl7: TLabel;

btn1: TButton;

procedure btn1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure edt1Change(Sender: TObject);

procedure edt2Change(Sender: TObject);

procedure edt3Change(Sender: TObject);

procedure edt1KeyPress(Sender: TObject; var Key: Char);

procedure edt2KeyPress(Sender: TObject; var Key: Char);

procedure edt3KeyPress(Sender: TObject; var Key: Char);

procedure edt1Click(Sender: TObject);

procedure edt2Click(Sender: TObject);

procedure edt3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

y,x,a,b:Real;

error:Boolean;

implementation

uses Math;

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);

begin

error:=True;

Try

x:=StrToFloat(Edt1.Text);

except

MessageBox(0,'Помилка введення даних в поле змінної "х"!'+#13+#10+#13+'Введено дані не числового формату або зовсім нічого не введено.'+#13+#10+'Введіть правильні дані в поле введення змінної "x".','Помилка введення.',MB_OK or MB_ICONHAND);

error:=False;

end;

try

a:=StrToFloat(Edt2.Text);

except

MessageBox(0,'Помилка введення даних в поле змінної "а"!'+#13+#10+#13+'Введені дані не числового формату або зовсім нічого не введено.'+#13+#10+'Введіть правильні дані в поле введення змінної "a".','Помилка введення.',MB_OK or MB_ICONHAND);

error:=False;

end;

try

b:=StrToFloat(Edt3.Text);

except

MessageBox(0,'Помилка введення даних в поле змінної "b"!'+#13+#10+#13+'Введено дані не числового формату або зовсім нічого не введено.'+#13+#10+'Введіть правильні дані в поле введення змінної "b".','Помилка введення.',MB_OK or MB_ICONHAND);

error:=False;

end;

If (error)

then

begin

if (x>-1) //Перевірка чи будуть розраховуватися дані за першою формулою

then

begin

if (x>-1) and (x<=0)

then

Begin

MessageBox(0,'Помилка обрахунку!'+#13+#10+#13+'Введено неправильні арифметичні дані.'+#13+#10+'x не може знаходитися між - 0,9 .. 0','Помилка обрахунку.',MB_OK or MB_ICONHAND);

error:=False;

end;

if ((a*x)+1=0)

then

Begin

MessageBox(0,'Помилка обрахунку!'+#13+#10+#13+'Введено неправильні арифметичні дані.'+#13+#10+'Сума a*х+1 не повинна бути рівною 0, на нуль ділити не можна.','Помилка обрахунку.',MB_OK or MB_ICONHAND);

error:=False;

end;

end

else

if (x<=-1) //Перевірка чи будуть розраховуватися дані за другою формулою

then

begin

if 1-x<0

then

begin

MessageBox(0,'Помилка обрахунку!'+#13+#10+#13+'Введено неправильні арифметичні дані.'+#13+#10+'логарифм не береться із відємного числа.'+#13+#10+'Введіть не нульове значення змінної х.','Помилка обрахунку.',MB_OK or MB_ICONHAND);

Error:=False;

end;

if b*x=0

then

Begin

MessageBox(0,'Помилка обрахунку!'+#13+#10+#13+'Введено неправильні арифметичні дані.'+#13+#10+'добуток b*х не повинен = 0','Помилка обрахунку.',MB_OK or MB_ICONHAND);

error:=False;

end;

end; end

else

Lbl7.Caption:='Помилка введення зміних!';

If (error)

then

begin

if (x>-1)

then

begin

y:=Sqrt(x)/((a*x)+1);

Lbl7.Caption:='y = '+FloatToStr(y);

end

else

if (x<=-1)

then

begin

y:=(ln(1-x))/(b*x);

Lbl7.Caption:='y = '+FloatToStr(y);

end;

end

else

Lbl7.Caption:='Помилка введення зміних!';

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

Edt1.Clear;

Edt2.Clear;

Edt3.Clear;

Lbl7.Caption:='';

Error:=true;

end;

procedure TForm1.edt1Change(Sender: TObject);

begin

Lbl7.Caption:='';

end;

procedure TForm1.edt2Change(Sender: TObject);

begin

Lbl7.Caption:='';

end;

procedure TForm1.edt3Change(Sender: TObject);

begin

Lbl7.Caption:='';

end;

procedure TForm1.edt1KeyPress(Sender: TObject; var Key: Char);

begin

if not (key in ['0'..'9',',','-']) then key:=#0;

end;

procedure TForm1.edt2KeyPress(Sender: TObject; var Key: Char);

begin

if not (key in ['0'..'9',',','-']) then key:=#0;

end;

procedure TForm1.edt3KeyPress(Sender: TObject; var Key: Char);

begin

if not (key in ['0'..'9',',','-']) then key:=#0;

end;

procedure TForm1.edt1Click(Sender: TObject);

begin

Edt1.SelectAll;

end;

procedure TForm1.edt2Click(Sender: TObject);

begin

Edt2.SelectAll;

end;

procedure TForm1.edt3Click(Sender: TObject);

begin

Edt3.SelectAll;

end;

end.

Робочі вікна.

Висновок: протягом виконання цієї лабораторної роботи були розроблені тести для перевірки програми.

Лабораторна робота № 2

Тема: розробка тестів для методу покриття операторів

Мета: навчитися розробляти тести для методу покриття операторів

Створено програму, яка обчислює значення функції згідно до завдання.

Наступний крок складання тестів для перевірки програми, використовуючи метод покриття операторів.

Опис тестів:

1 Визначає, чи буде виконаний оператор виведення на екран повідомлення

“Помилка обрахунку!

Введено неправильні арифметичні дані.

Добуток a*x+1 не повинен бути рівним 0”

Вхідні дані: x=1, а=-1, b=2

Покриття операторів: 1, 18-21, 30-50.

2 Визначає, чи буде виконаний оператор виведення на екран повідомлення

“Помилка обрахунку!

Введено неправильні арифметичні дані.

Добуток a*x+1 не повинен бути рівним 0”

Вхідні дані: x=0.5, а=-2, b=2

Покриття операторів: 1, 17,18 27-43.

3 Визначає, чи буде виконаний оператор виведення на екран повідомлення

“Помилка обрахунку!

Введено неправильні арифметичні дані.

Х не повинен знаходитися між -0,9..0”

Вхідні дані: x=-0,4, а=-1, b=2

Покриття операторів: 1, 17, 18, 20-22, 27-43.

4 Визначає, чи буде виконаний оператор виведення на екран повідомлення

“Помилка обрахунку!

Введено неправильні арифметичні дані.

Х не повинен знаходитися між -0,9..0”

Вхідні дані: x=0, а=-3, b=2

Покриття операторів: 1, 17-19, 27-43.

5 Визначає, чи буде виконаний оператор виведення на екран повідомлення

“Помилка обрахунку!

Введено неправильні арифметичні дані.

Добуток b*x не повинен дорівнювати 0.

Вхідні дані: x=-5, а=4, b=0

Покриття операторів: 1, 23-43.

6 Визначає, чи буде виконаний оператор виведення на екран повідомлення

“Помилка обрахунку!

Введено неправильні арифметичні дані.

Добуток b*x не повинен дорівнювати 0.

Вхідні дані: x=-6, а=3, b=0

Покриття операторів: 1, 23-43.

7 Визначає, чи буде виконаний оператор виведення на екран повідомлення

“Помилка введення даних в поле змінної "х"!

Введено дані не числового формату або зовсім нічого не введено.

Введіть правильні дані в поле введення змінної "x"”

Вхідні дані: x=-, а=3, b=2

Покриття операторів: 1-8, 27-44, 47.

8 Визначає, чи буде виконаний оператор виведення на екран повідомлення

“Помилка введення даних в поле змінної "a"!

Введено дані не числового формату або зовсім нічого не введено.

Введіть правильні дані в поле введення змінної " a "”

Вхідні дані: x=2, а=-, b=2

Покриття операторів: 1, 7-12, 27-43, 45-48.

9 Визначає, чи буде виконаний оператор виведення на екран повідомлення

“Помилка введення даних в поле змінної "b"!

Введено дані не числового формату або зовсім нічого не введено.

Введіть правильні дані в поле введення змінної "b"”

Далі в ході виконання лабораторної роботи формується список помилок, які можуть бути виявлені цими тестами. Виконується опис помилок.

Тест 1

Виявлення арифметичної помилки при обрахуванні a*b+1 де добуток не може бути рівним 0 обчислення далі не проводиться.

Тест2

Виявлення арифметичної помилки при обрахуванні a*b+1 де добуток не може бути рівним 0 обчислення далі не проводиться.

Тест 3

Виявлення арифметичної помилки при обрахуванні кореня, х не повинен знаходитися між -0,9..0

Тест 4

Виявлення арифметичної помилки при обрахуванні кореня, х не повинен знаходитися між -0,9..0

Тест 5

Виявлення арифметичної помилки при обрахуванні значення знаменника добутку змінних x*b де b=0, обчислення далі не проводиться.

Тест 6

Виявлення арифметичної помилки при обрахуванні значення зеаменника добутку змінних x*b де b=0, обчислення далі не проводиться.

Тест 7

Виявлення помилки при введенні змінної х, обчислення далі не проводиться.

Тест 8

Виявлення помилки при введенні змінної a, обчислення далі не проводиться.

Тест 9

Виявлення помилки при введенні змінної b, обчислення далі не проводиться.

Висновок: під час виконання даної лабораторної роботи було визначено всі тести для даної програми методом покриття операторів.

Лабораторна № 3