
- •Московский энергетический институт (Технический университет) Типовое задание по информатике
- •Внешняя спецификация программы
- •Постановка задачи
- •Состав данных
- •3.1 Сегмент 1. Внутренняя спецификация
- •3.2 Сегмент 2. Внутренняя спецификация
- •3.3 Сегмент 3. Внутренняя спецификация
- •5. Отладка программы
- •Отладка программы блочной структуры
- •Тестирование программы модульной структуры
- •7. Рекомендации по использованию программы
Тестирование программы модульной структуры
Сперва мной был проведен визуальный контроль корректности программы, большая часть ошибок была исправлена в ходе отладки программы блочной структуры, однако в ходе визуального контроля были обнаружены и исправлены следующие ошибки:
В некоторых строках кода были пропущены «;»;
Вывод по образцу один был ошибочно помещён в модуль obivl.
После визуального контроля корректности программы мной был проведён синтаксический контроль с помощью, встроенного в оболочку TURBO PASCAL 7.0, компилятора (использовался режим Compile). Компилятор выявил следующие ошибки:
Несовпадение имени модуля NOTRI с именем заданным в основной программе.
После исправления выявленных ошибок и повторной компиляции, которая была успешной, мной был сделан вывод о первом уровне корректности программы.
Затем было проведено тестирование на тестах, представленных в пункте 1.8.
Мной использовался метод нисходящего тестирования.
Тестирование основной программы:
Код всех трех функций-модулей был заменен на «заглушки»:
Текст модулей-«заглушек» (модуль obivl не представлен так как изменения в нем не требуются):
UNIT SRED;
Interface
uses obivl;
Function SredB(A: mas;n:integer):real;
implementation
Function SredB;
var
s:real;
begin
s:=4;
SredB:=s;
end.
UNIT NOTRI;
interface
uses obivl;
Function kolVS3(A:mas;n:integer):integer;
implementation
Function kolVS3;
var
bt:integer;
BEGIN
bt:=2;
kolVS3:=bt;
END.
UNIT NEUS;
INTERFACE
uses obivl;
Function NEUSP(A:mas;n:integer):boolean;
IMPLEMENTATION
Function NEUSP;
VAR
dv:boolean;
BEGIN
dv:= false;
neusp:=dv;
END.
Тестирование основной программы дало следующие результаты:
№ теста, назначение |
Входные данные (значения функций) |
Результат |
||
SredB |
kolVS3 |
neusp |
||
1. получение положительного результата |
4,5 |
2 |
false
|
Группа попадает на конкурс лучших групп
|
2. получение отрицательного результата (количество троечников больше половины) |
3 |
3 |
true |
Группа не попадает на конкурс лучших групп
|
Тестирование основной программы на разработанных тестах показало корректные результаты.
Тестирование подпрограмм-функций:
Каждый модуль-«заглушка» по очереди был заменен на реальный модуль.
Тестирование всех модулей показало корректные результаты (совпадающие с тестами), отсюда следует, что каждая функция работает корректно.
Для проверки алгоритма и структуры программы был применен метод тестовых счётчиков.
Мной были вставлены счетчика в начало и конец алгоритма, на каждую ветвь ветвления в каждый цикл.
Код программы с вставленными счётчиками:
Program konkurs_mod;
uses obivl,sred,notri,neus;
Var l1,l2,l3:integer;
Begin
l1:=0;
l2:=0;
l3:=0;
writeln (F2, 'РЕЗУЛЬТАТ');
for i:=1 to 5 do
begin
for j:=1 to 5 do
read(f1,a[i,j]);
readln(f1);
end;
read (f1,n);
srb:=SredB(a,n);
bt:=kolvs3(a,n);
dv:=neusp(a,n);
if ((dv=false) and (bt<(n/2)) and (srb>4)) then
begin
l1:=l1+1;
writeln(f2,'Группа попадает на конкурс лучших групп')
end
else
begin
l2:=l2+1;
writeln(f2, 'Группа не попадает на конкурс лучших групп');
end;
l3:=l3+1;
writeln (f2, l1, ' ',l2, ' ',l3);
close (f1);
close (f2);
end.
Результаты тестирования с счётчиками:
№ теста, назначение |
Входные данные |
Результат |
Показания счётчиков |
|||||
A |
N |
L1 |
L2 |
L3 |
||||
1. получение положительного результата |
3 4 5 4 3 5 5 4 5 5 4 3 3 4 4 4 4 4 5 5 5 5 5 5 4 |
5
|
Группа попадает на конкурс лучших групп
|
1 |
0 |
1 |
||
2. получение отрицательного результата |
3 4 3 4 3 5 5 4 4 5 4 3 3 3 4 4 2 3 3 5 4 4 4 4 4 |
5
|
Группа не попадает на конкурс лучших групп
|
0 |
1 |
1 |
||
|
Суммарное показание счётчиков |
1 |
1 |
2 |
Из суммарного показания счётчиков очевидно, что при выполнении двух тестов выполняется каждая ветвь алгоритма, каждый оператор, от сюда следует, что количество тестов подобрано верно.
Так как по результатам нисходящего тестирования были получены корректные результаты, то программе можно присвоить третий уровень корректности.