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