![](/user_photo/2706_HbeT2.jpg)
- •Лабораторная работа № 1 «Технология разработки по при структурном подходе»
- •3.2 Структурная схема по с пошаговой детализацией
- •3.3 Структуры данных
- •3.4 Пользовательский интерфейс
- •4 Исходный код программы
- •5 Вывод
- •4 Результаты тестирования
- •5 Вывод
- •3.2 Определение отношений между объектами
- •3.3 Проектирование классов
- •4 Исходный код программы
- •5 Вывод
- •4 Результаты тестирования
- •5 Вывод
4 Результаты тестирования
Для проведения тестирования реализуем метод, задающий тестовые параметры, вызывающий метод CheckContact, анализирующий код возврата работы функции, и протоколирующий результаты выполнения тестов. Ниже приведен исходный код из модуля тестирования, относящийся к проверке методаCheckContact.
type
TTestSet = record
InputParams: TBallMovementParams;
InputBall: TBall;
SurfacePoint: TPoint;
ExpectedResult: Integer;
end;
const
TestData: array[0..5] of TTestSet = (
(InputParams : (PreviousPoint:(X: 20));
InputBall:(X: 20; Radius: 20); ExpectedResult: 1),
(InputParams : (PreviousPoint:(X: 580));
InputBall:(X: 581; Radius: 20); ExpectedResult: 2),
(InputParams : (PreviousPoint:(X: 300; Y:460));
InputBall:(X: 300; Y: 461; Radius: 20); ExpectedResult: 3),
(InputParams : (PreviousPoint:(X: 300; Y:21));
InputBall:(X: 300; Y: 20; Radius: 20); ExpectedResult: 4),
(InputParams : (PreviousPoint:(X: 300; Y:41));
InputBall:(X: 300; Y: 40; Radius: 20); SurfacePoint: (X: 300; Y: 20);
ExpectedResult: 5),
(InputParams : (PreviousPoint:(X: 300; Y:20));
InputBall:(X: 300; Y: 40; Radius: 20); SurfacePoint: (X: 300; Y: 20);
ExpectedResult: 0));
procedure CheckContactTest;
const
WINDOW_WIDTH = 600;
WINDOW_HEIGHT = 480;
LOG_NAME = 'CheckContactLog.txt';
RESULT_FORMAT = 'Result = %d and Expected result = %d => Test %s' + sLineBreak;
SUCCEED_RESULT = 'Succeed';
FAILED_RESULT = 'Failed';
var
I: Integer;
LogStream: TStringStream;
SaveStream: TFileStream;
CallResult: Integer;
begin
LogStream := TStringStream.Create('');
try
Restart(WINDOW_WIDTH, WINDOW_HEIGHT, True, True);
for I := 0 to Length(TestData) - 1 do
begin
MovementParams.PreviousPoint := TestData[I].InputParams.PreviousPoint;
BallVariable.X := TestData[I].InputBall.X;
BallVariable.Y := TestData[I].InputBall.Y;
SetLength(Surface, 0);
SetLength(Surface, 1);
Surface[0] := TestData[I].SurfacePoint;
CallResult := CheckContact;
if CallResult = TestData[I].ExpectedResult then
LogStream.WriteString(Format(RESULT_FORMAT,
[CallResult, TestData[I].ExpectedResult, SUCCEED_RESULT]))
else
LogStream.WriteString(Format(RESULT_FORMAT,
[CallResult, TestData[I].ExpectedResult, FAILED_RESULT]));
end;
finally
SaveStream := TFileStream.Create(LOG_NAME, fmCreate);
try
LogStream.Position := 0;
SaveStream.CopyFrom(LogStream, LogStream.Size);
finally
SaveStream.Free;
end;
LogStream.Free;
end;
end;
В результате работы тестового метода в файле протокола находятся следующие результаты.
Result = 1 and Expected result = 1 => Test Succeed
Result = 2 and Expected result = 2 => Test Succeed
Result = 3 and Expected result = 3 => Test Succeed
Result = 4 and Expected result = 4 => Test Succeed
Result = 5 and Expected result = 5 => Test Succeed
Result = 0 and Expected result = 0 => Test Succeed
Полученные результаты говорят о верности работы метода CheckContact.