Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Типовой var 8.doc
Скачиваний:
5
Добавлен:
13.09.2019
Размер:
255 Кб
Скачать
☆

2) Структурное тестирование программы.

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

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

Паскаль-программа со счётчиками.

PROGRAM schetchik;

const kk=50;

TYPE MATR=array [1..kk,1..kk] of integer;

VAR A:MATR;

i,j,k,h,m,q,r:integer;

F:boolean;

f1,f2:text;

FUNCTION simm (Var A:MATR;k:integer):boolean;

Var n:integer;

Begin

n:=0;

F:=FALSE;

FOR i:=1 TO (k-1) DO

FOR j:=i+1 TO k DO

IF A[i,j]=A[j,i] THEN

n:=n+1;

IF n=10 THEN

F:=TRUE;

simm:=F

End;

PROCEDURE OBN (Var A:MATR;k:integer);

begin

FOR i:=1 TO (k-1) DO

FOR j:=(i+1) TO k DO

A[i,j]:=0

End;

FUNCTION sum(Var A:MATR;k:integer):integer;

Var S: integer;

Begin

S:=0;

FOR i:=2 TO k DO

FOR j:=1 TO (i-1) DO

S:=S+A[i,j];

sum:=S

End;

BEGIN

ASSIGN (f1,'isdan17.pas');

ASSIGN (f2,'vdan17.pas');

RESET (f1);

REWRITE (f2);

h:=0;

m:=0;

q:=0;

r:=0;

READ (f1,k);

READLN (f1);

FOR i:=1 TO k DO

begin

FOR j:=1 TO k DO

Begin

read (f1,A[i,j]);

h:=h+1

End;

readln (f1)

end;

WRITELN (f2,' ':35,'РЕЗУЛЬТАТЫ');

F:=simm(A,k);

IF F THEN

Begin

m:=m+1;

OBN(A,k);

FOR i:=1 TO k DO

begin

FOR j:=1 TO k DO

Begin

WRITE (f2,' ',A[i,j]);

q:=q+1

End;

WRITELN (f2)

End;

writeln (f2,' ':25,'сумма= ',sum(A,k))

End

ELSE

Begin

WRITELN (f2,' ':25,'Матрица не симметрична');

r:=r+1

End;

WRITELN (f2);

WRITELN (f2,' ':25,'h=',h,' ','m=',m,' ','q=',q,' ','r=',r);

CLOSE (f1);

CLOSE (f2)

END.

№

Назначение теста

Контрольные значения

Исходные данные

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

1

Получение положительных результатов решения задачи

K=5

А= 1 2 3 4 5

2 7 5 7 2

3 5 9 7 3

4 7 7 6 1

5 2 3 1 2

1 0 0 0 0

2 7 0 0 0

3 5 9 0 0

4 7 7 6 0

5 2 3 1 2

Сумма элементов

S=39

h=25 m=1 q=25 r=0

2

Получение отрицательных результатов решения задачи

K=5

А= 1 2 3 4 5

2 7 5 7 2

3 5 9 7 3

4 7 7 6 1

5 2 3 1 2

Матрица не симметрична.

h=25 m=0 q=0 r=1

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

При определённых значениях исходных данных каждый счётчик изменил своё значение в соответствии с контрольными значениями. Значит, можно сделать вывод о том, что каждое ветвление алгоритма пройдено, и каждый цикл завершен.

-Тестирование программы модульной структуры.

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

В модуле OBIVL применение «заглушек» не требуется, так как там отсутствует описание процедур. В остальных модулях подпрограммы были заменены «заглушками».

UNIT PFUN;

INTERFACE

USES OBIVL;

FUNCTION simm (Var A:MATR;k:integer):boolean;

FUNCTION sum(Var A:MATR;k:integer):integer;

IMPLEMENTATION

FUNCTION simm;

Var n:integer;

Begin

F:=TRUE;

simm:=F

End;

FUNCTION sum;

Var S: integer;

Begin

S:=39;

sum:=S

End;

END.

UNIT PPROC;

INTERFACE

USES OBIVL;

PROCEDURE OBN (Var A:MATR;k:integer);

IMPLEMENTATION

PROCEDURE OBN;

begin

A[1,1]:=1; A[1,2]:=0; A[1,3]:=0; A[1,4]:=0; A[1,5]:=0;

A[2,1]:=2; A[2,2]:=7; A[2,3]:=0; A[2,4]:=0; A[2,5]:=0;

A[3,1]:=3; A[3,2]:=5; A[3,3]:=9; A[3,4]:=0; A[3,5]:=0;

A[4,1]:=4; A[4,2]:=7; A[4,3]:=7; A[4,4]:=6; A[4,5]:=0;

A[5,1]:=5; A[5,2]:=2; A[5,3]:=3; A[5,4]:=1; A[5,5]:=2

End;

END.

В результате тестирование показало успешные результаты, что позволило сделать вывод о правильном выполнении всех подпрограмм.

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

Для этого необходимы изменения в модуле OBIVL и основной программе.

UNIT OBIVL;

INTERFACE

CONST kk=50;

TYPE MATR=ARRAY [1..kk,1..kk] of integer;

VAR i,j,k,h,m,q,r:integer;

A:MATR;

F:boolean;

f1,f2:text;

IMPLEMENTATION

BEGIN

ASSIGN (f1,'isdan17.pas');

ASSIGN (f2,'vdan17.pas');

RESET (f1);

REWRITE (f2)

END.

PROGRAM tipovik;

USES OBIVL,PFUN,PPROC;

BEGIN

h:=0;

m:=0;

q:=0;

r:=0;

READ (f1,k);

READLN (f1);

FOR i:=1 TO k DO

Begin

FOR j:=1 TO k DO

Begin

read (f1,A[i,j]);

h:=h+1

End;

readln (f1)

End;

WRITELN (f2,' ':35,'РЕЗУЛЬТАТЫ');

F:=simm(A,k);

IF F THEN

Begin

m:=m+1;

OBN(A,k);

FOR i:=1 TO k DO

Begin

FOR j:=1 TO k DO

Begin

WRITE (f2,' ',A[i,j]);

q:=q+1

End;

WRITELN (f2)

End;

writeln (f2,' ':25,'сумма= ',sum(A,k))

End

ELSE

Begin

WRITELN (f2,' ':25,'Матрица не симметрична');

r:=r+1

End;

CLOSE (f1);

CLOSE (f2)

END.

В модулях PFUN и PPROC изменения не требуются. Тестирование происходило при том же наборе тестов и показало успешный результат (каждое ветвление алгоритма пройдено, и каждый цикл завершен), что позволяет сделать вывод о третьем уровне корректности.