7. Тестирование.

 

7.1. Выбор методики тестирования.

 

Без тестирования программ невозможно создать правильно работающую программу, так как всегда существуют какие-то граничные условия, за пределами которых программа даёт ошибки. При этом не следует путать отладку программ и тестирование.

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

Тестирование - ищет ошибки.

Существует много методов тестирования:

1)    Статическое тестирование является наиболее формализованным и автоматизируемым методом проверки программ. В качестве эталонов применяются правила структурного построения программных модулей и обработки данных. Проверка степени этих правил проводится без использования объектного кода программы путем формального анализа текста программы на языке программирования. Операторы и операнды текста программ при этом анализируется в символьном виде, поэтому такой метод называют символьным тестированием.

2)    Детерминированное тестирование является наиболее трудоёмким и детализирующим. При детерминированном тестировании контролиру-

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

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

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

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

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

На практике обычно используются три стратегии тестирования:

1)   Тестирование программ как "Чёрного ящика ". Имеет цель выяснения обстоятельств, в которых поведение программ не соответствует спецификации. Тестовые данные составляются и используются без учета знаний о внутренней структуре программы.

2)   Тестирование программ как "Белого ящика ". Тестовые наборы данных проектируются на основе внутренней логики программы. Цель тестирования - проверить каждую ветвь, каждый путь и каждый оператор. Спецификация программы при этом не используется.

3)   Реальная стратегия обычно сочетает оба метода. При помощи метода "чёрного ящика" делается:

ü Проверка в нормальных условиях.

ü Анализ граничных значений.

ü Проверка в исключительных ситуациях.

ü Предположение об ошибке.

При помощи метода "Белого ящика" делается:

ü Покрытие операторов.

ü Покрытие решений.

ü Покрытие условий.

 

7.2. Результаты тестирования


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

Тестирование системы включало в себя:

- тестирование ввода различных набора данных;

- получение комбинаций для кода с любым образующим многочленом;

Тестирование ввода различных наборов кодовых комбинаций не показало ни одной исключающей ситуации.

 

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

8. Ограничения на разработку.


Для выполнения программы необходимо соблюдать некоторые требования, а именно:

1)   Программа может работать на персональных компьютерах с процессором не ниже 80486 .

2)   Для реализации интерфейса необходимо иметь цветной монитор с адаптером не ниже VGA.

3)   RAM не ниже 8MB.

4)   Windows 95/98/NT

8.1. Инструкция пользователю.

 

В программе разработан интерфейс, подходящий под стандарты. Интерфейс реализован в графическом режиме. Меню горизонтальное, с выпадающими окнами. Главное окно программы изображено на рис.. Приложения 2.

Главное меню программы содержит следующие пункты:

1.   О программе - дана краткая аннотация выполненной программы.

2.   Работа - содержит подменю с пунктами:

1.   Ввод - позволяет пользователю ввод соответствующих данных. Здесь предусмотрена защита от некорректного ввода. В этом пункте можно ввести любую информационную комбинацию.

2.   Вывод - выполняется алгоритм построения образующей матрицы, с последующем выводом ее на экран.

3.   Выход - обеспечивает выход из программы. Используется защита от случайного выхода.

 

Пункты меню активизируются нажатием клавиши <Enter>.

При появления каждого окна в строке статуса появляется сообщение о возможных действиях.

Передвижение по меню осуществляется клавишами перемещения курсора на клавиатуре. Также используется "горячая клавиша" Esc. При нажатии на неё происходит автоматический выход из программы.

Заключение

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

Все элементы принципиальной схемы имеют серии К155 или К55. Это одни из самых распространенных и довольно не дорогих отечественных микросхем, легко доступная любому пользователю.

Программа реализована на языке Turbo Pascal 7.0. Это наиболее распространенный на сегодняшний день язык программирования. Поэтому в программе разобраться трудностей не будет.

Кодирование информации наиболее актуальна в наши дни в связи с развитием компьютерных сетей. Необходимо передавать информацию быстро и точную.

Программа тестировалась восходящим методом. С помощью этого метода сначала были протестированы отдельные модули программы, а затем и вся программа.

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

Программа является универсальной и может быть усовершенствована любым пользователем, разбирающимся в языке программирования Pascal 7.0 .

Дана общая модульная структура программа, которая может помочь ползо-

вателю разобраться в общей структуре программы и усовершенствовать программу.

Список литературы.

1.   Тёмников Ф. Е..

Теоретические основы информационной техники:

Учеб.пособие для вузов-2-е изд., перераб. и доп.-М.:Энергия, 1979.-

 512 с., ил.

 

2. Липаев В.В.

Тестирование программ.- М.: Радио и связь,1986. - 296 с.: ил.

3. Тутевич В. Н.

Телемеханика:

Учеб.пособие для студентов вузов спец. “Автоматика и

телемеханика”-2-е изд., перераб. и доп.-М.: Высш. Шк., 1985.- 423 с., ил.

4. Зельдин Е. А.

Цифровые интегральные микросхемы в информационн-измерительной

аппаратуре. –Л.: Энергоатомиздат. Ленингр. отд-ние, 1986.- 280 с.: ил.

Приложения.

 

 

Приложение 1. Перечень элементов

Поз.

Обозн.

Наименование Кол Примечания

Конденсаторы

С3 К10-60 – 10 мКф + 10% 1
С1,С2 К10-17а – 0.1 мКф + 0.1% 2

Микросхемы.

К555АГ3 1
К155ИР13 9
К555ТВ6 1
К555ИЕ10 2
К155ЛН1
К155ЛИ1

Резисторы

R1-R2 С2-29В 5Ком±0.1% 2
R4 МЛТ-0.125 – 30 Ком + 10% 1
R5 МЛТ-0.125 – 1.5Koм + 10% 1

Приложение 2. Блок-схема алгоритма.


Приложение 3. Текст програмных модулей.

Uses Crt,Graph,AlexUnit;

Const

_N = 33;

_M = 10;

Type

Delim_Mas = array[1 .. 100] of byte;

Mass1 = array[1 .. _N+_M-1] of byte;

Mass2 = array[1 .. _M] of byte;

Mass3 = array[1 .. _M-1] of byte;

Mas_Exit=array[1..2] of String;

Two_Matrix=array[1 .. _N,1 .. _N+_M-1] of byte;

Const

P : Mass2 = (1,0,1,1,0,0,1,0,1,1);

Y_No : Mas_Exit = ('Да','Нет');

Var

F,Cicle_Kod : Mass1; R : Mass1;

Delimoe : Delim_Mas;

Obraz_Matrix : Two_Matrix;

Mas : Mass;

grDriver,grMode,ErrCode: Integer;

flag : boolean;

_t,c,n,m,i,schot,N0,Code : integer;

Function Sum(F,P : Byte) : Byte; {Суммирование по модулю 2}

Var

i : Byte;

Begin

If ((F=1) and (P=1)) or ((F=0) and (P=0)) Then Sum:=0

 Else Sum:=1;

End;

{-------------------------------}

Procedure Dopoln(Var F : Mass1); {Умножение на старшую степень образующего многочлена}

 Var

i : Byte;

 Begin

for i:=_N+1 to _N+_M-1 do F[i]:=0;

 End;

{--------------------------------}

Procedure Delenye(F : Mass1;P : Mass2); {Деление многочлен на многочлен}

Var

i,j,t : Byte; K : Mass1;

Begin

For i:=1 to _N do

Begin

IF F[i]=1 Then Begin

t:=1;

For j:=i to i+_M-1 do

Begin

K[j]:=Sum(F[j],P[t]);

F[j]:=K[j];

t:=t+1;

End;

End;

End;

t:=1;

For i:=_N+1 to _N+_M-1 do

Begin

R[t]:=F[i];

t:=t+1;

End;

End;

{----------------------------------------}

Procedure Ed_Matrix(Var A : Two_Matrix); {Составление еденичной матрицы}

Var

i : Integer;

Begin

For i:=1 to _N do

Begin

A[i,_N+1-i]:=1

End;

End;

{----------------------------------------}

Procedure Obr_Matrix(Var A : Two_Matrix); {Получение образующей матрицы}

Var

i,j,t,Schot,l,m : Byte; K : Mass1;

Begin

Delimoe[1]:=1;

Schot:=1;

For i:=1 to _N do

Begin

IF Delimoe[i]=1 Then Begin

t:=1;

For j:=i to i+_M-1 do

Begin

K[j]:=Sum(Delimoe[j],P[t]);

Delimoe[j]:=K[j];

t:=t+1;

End;

l:=1;

For m:=i+1 to i+_M-1 do

Begin

A[Schot,_N+l]:=Delimoe[m];

l:=l+1;

End;

End

Else Begin

l:=1;

For m:=i+1 to i+_M-1 do

Begin

A[Schot,_N+l]:=Delimoe[m];

l:=l+1;

End;

End;

Schot:=Schot+1;

End;

End;

Procedure InitGrf; {Инициализация графики}

Begin

grDriver := Detect;

InitGraph(grDriver, grMode,'c:\sub\bp\bgi');

if GraphResult <> grOk then Begin

Halt(1);

End;

End;

Procedure Visual(Var sa:mass); {Ввод информационных символов}

 Var i,x,y,k,Fon,Color,a:Integer;

Code: Integer;

ch,chi:Char;

Stop:Boolean;

Elm : String;

 Begin

moveto(20,465);

SetTextJustify(0,1);

SetColor(0);

outtext('Нажмите Enter');

x:=30;

y:=225;

k:=17;

Fon:=1;

Color:=14;

Window_(30,150,610,260,1,'Ввод нформационных символов');

SetTextStyle(1,0,4);

SetColor(Fon);

For i:=1 to _N Do

Begin

MoveTo(x+i*k,y);

Str(Sa[i],Elm);

OutText(Elm);

End;

SetTextStyle(0,0,1);

MoveTo(x+17,y-20);

Str(_N,Elm);

OutText(Elm);

MoveTo(x+_N*17,y-20);

Str(0,Elm);

OutText(Elm);

SetTextStyle(1,0,4);

i:=1;

MoveTo(x+i*k,y);

Setcolor(Color);

Str(Sa[i],Elm);

OutText(Elm);

Stop:=False;

Repeat

Begin

ch:=ReadKey;

Case ch Of

#75:Begin

Setcolor(Fon);

MoveTo(x+i*k,y);

Str(Sa[i],Elm);

OutText(Elm);

i:=i-1;

if(i<1)then i:=_N;

SetColor(Color);

MoveTo(x+i*k,y);

Str(Sa[i],Elm);

OutText(Elm);

Stop:=False;

End;{влево}

#77:Begin

SetColor(Fon);

MoveTo(x+i*k,y);

Str(Sa[i],Elm);

OutText(Elm);

i:=i+1;

if(i>_N)then i:=1;

SetColor(Color);

MoveTo(x+i*k,y);

Str(Sa[i],Elm);

OutText(Elm);

Stop:=False;

End;{вправо}

'1':Begin

SetColor(7);

MoveTo(x+i*k,y);

Str(Sa[i],Elm);

OutText(Elm);

SetColor(Color);

MoveTo(x+i*k,y);

sa[i]:=1;

F[i]:=Sa[i];

Str(Sa[i],Elm);

OutText(Elm);

Stop:=False;

End;

'2':Begin

SetColor(7);

MoveTo(x+i*k,y);

Str(Sa[i],Elm);

OutText(Elm);

SetColor(Color);

MoveTo(x+i*k,y);

sa[i]:=0;

F[i]:=Sa[i];

Str(Sa[i],Elm);

OutText(Elm);

Stop:=False;

End;

#13:Begin Stop:=True; End;

End;

End;

Until(Stop);

SetTextStyle(0,0,1);

 End;

{---------------------------------------}

{Вывод образующей матрицы}

Procedure OutPutObr_Matrix(x,y : Integer;Obr_Matr : Two_Matrix );

 Var k,i,j : Integer;

Elm : String;

 Begin

k:=12;

For i:=1 to _N Do

Begin

For j:=1 to _N Do

 Begin

MoveTo(x+j*k,i*10+y);

Str(Obr_Matr[i,j],Elm);

OutText(Elm);

End;

End;

SetColor(4);

For i:=1 to _N Do

Begin

For j:=_N+1 to _N+_M-1 Do

Begin

MoveTo(x+j*k,i*10+y);

Str(Obr_Matr[i,j],Elm);

OutText(Elm);

End;

End;

 End;

{----------------------------------}

{Вывод полученной кодовой комбинации}

Procedure OutPut(x,y : Integer;F,A : Mass1);

 Var k,s : Integer;

Elm : String;

Begin

MoveTo(x+10,y-20);

Str(_N+_M-1,Elm);

OutText(Elm);

MoveTo(x+(_N+_M)*12-3,y-20);

Str(0,Elm);

OutText(Elm);

k:=12;

For i:=1 to _N Do Cicle_Kod[i]:=F[i];

s:=1;

For i:=_N+1 To _N+_M-1 Do

Begin

Cicle_Kod[i]:=A[s];

s:=s+1;

End;

For i:=1 to _N Do

Begin

MoveTo(x+i*k,y);

Str(Cicle_Kod[i],Elm);

OutText(Elm);

End;

SetColor(4);

For i:=_N+1 to _N+_M-1 Do

Begin

MoveTo(10+x+i*k,y);

Str(Cicle_Kod[i],Elm);

OutText(Elm);

End;

End;

{---------------------------------}

{выход из программы}

Function _Exit(Fon,Color : Integer;Col_Simv : Byte) : integer;

 Var x,y,k : Integer;

Stop : Boolean;

Ch : Char;

Begin

Window_(250,200,450,300,1,'Выход');

x:=225;

y:=260;

k:=80;

SetTextStyle(0,0,1);

SetColor(Col_Simv);

For i:=1 to 2 do

Begin

MoveTo(x+i*k,y);

OutText(Y_No[i]);

End;

i:=1;

SetFillStyle(1,Fon);

Bar(x+i*k-30,y-15,x+i*k+30,y+15);

MoveTo(x+i*k,y);

Setcolor(Color);

OutText(Y_No[i]);

Stop:=False;

Repeat

ch:=ReadKey;

Case ch Of

#75:Begin

SetFillStyle(1,7);

Bar(x+i*k-30,y-15,x+i*k+30,y+15);

Setcolor(Col_Simv);

MoveTo(x+i*k,y);

OutText(Y_No[i]);

i:=i-1;

if(i<1)then i:=1;

SetFillStyle(1,Fon);

Bar(x+i*k-30,y-15,x+i*k+30,y+15);

SetColor(Color);

MoveTo(x+i*k,y);

OutText(Y_No[i]);

Stop:=False;

End;{влево}

#77:Begin

SetFillStyle(1,7);

Bar(x+i*k-30,y-15,x+i*k+30,y+15);

Setcolor(Col_Simv);

MoveTo(x+i*k,y);

OutText(Y_No[i]);

i:=i+1;

if(i>2)then i:=2;

SetFillStyle(1,Fon);

Bar(x+i*k-30,y-15,x+i*k+30,y+15);

SetColor(Color);

MoveTo(x+i*k,y);

OutText(Y_No[i]);

Stop:=False;

End;{вправо}

#13:Begin Stop:=True; _Exit:=i End;

End;{Case}

Until Stop;

SetTextStyle(0,0,0);

End;

{---------------------------------}

{ОСНОВНАЯ ПРОГРАММА }

{---------------------------------}

Begin

 InitGrf;

Repeat

flag:=false;

Fon(3,2,GetMaxX-3,30);

setcolor(0);

moveto(20,465);

SetTextJustify(0,1);

outtext('Esc - Выход');

Menu(3,'Работа','О программе','Помощь','','','');

Case t Of

1:Begin

Repeat

SetFillStyle(1,7);  {Строка состтояния}

Bar(3,450,getmaxx-3,getmaxy-3);

SetColor(15);

Line(3,450,getmaxx-3,450);

Line(3,450,3,getmaxy-3);

SetColor(0);

Line(3,getmaxy-3,getmaxx-3,getmaxy-3);

 Line(getmaxx-3,450,getmaxx-3,getmaxy-3);

{moveto(20,465);

SetTextJustify(0,1);

SetColor(0);

outtext('Нажмите любую клавишу ...');}

VerMenu(3,'Ввод комбинации','Образующая матрица','Выход','','','');

Case Np Of

1 : Begin

Visual(Mas);

Dopoln(F);

Delenye(F,P);

Window_(30,300,610,410,1,'Закодированное сообщение. Красные

символы - контрольные.');

OutPut(40,370,F,R);

ReadKey;

SetFillStyle(1,3);

Bar(30,150,610,410);

End;

2 : Begin

Window_(30,50,610,445,1,'Образующая матрица');

Ed_Matrix(Obraz_Matrix);

Obr_Matrix(Obraz_Matrix);

OutPutObr_Matrix(40,90,Obraz_Matrix);

ReadKey;

SetFillStyle(1,3);

Bar(30,50,610,450);

End;

3 : Begin

Case _Exit(1,15,0) of

1 : begin

Np:=3;

flag:=true;

end;

2 : Flag:=False;

end

End;

End;

Until (Np=3) or (Np=4);

Ramka_Off(x1,y1,x2,y2);

End;

2:Begin

SetFillStyle(1,7); {Строка состтояния}

Bar(3,450,getmaxx-3,getmaxy-3);

SetColor(15);

Line(3,450,getmaxx-3,450);

Line(3,450,3,getmaxy-3);

SetColor(0);

Line(3,getmaxy-3,getmaxx-3,getmaxy-3);

Line(getmaxx-3,450,getmaxx-3,getmaxy-3);

Window_(100,80,510,400,1,'О программе');

moveto(130,130);

SetTextJustify(0,1);

outtext('Данная программа является курсовой работой');

 moveto(300,145);

SetTextJustify(1,1);

outtext('по курсу :');

moveto(300,160);

SetTextJustify(1,1);

outtext('" Передача информации " ');

moveto(120,200);

SetTextJustify(0,1);

outtext('Задание : Построить кодирующее устройство');

moveto(185,220);

outtext('для кода Файра.Кодируемых сообщений 63,');

moveto(185,240);

outtext('число обнаруживаемых ошибок Br=4, число');

moveto(185,260);

outtext('исправляемых ошибок Bs=3.');

moveto(120,290);

outtext('Студент : Иванов А. Е.');

moveto(120,310);

outtext('Группа : BM-1-97');

moveto(120,330);

outtext('Преподаватель : Каевченко .');

moveto(300,380);

SetTextJustify(1,1);

outtext('СМОЛЕНСК 1999 г.');

moveto(20,465);

SetTextJustify(0,1);

SetColor(0);

outtext('Нажмите любую клавишу ...');

Readkey;

Ramka_Off(x1,y1,x2,y2);

End;

3:Begin

SetFillStyle(1,7); {Строка состтояния}

Bar(3,450,getmaxx-3,getmaxy-3);

SetColor(15);

Line(3,450,getmaxx-3,450);

Line(3,450,3,getmaxy-3);

 SetColor(0);

Line(3,getmaxy-3,getmaxx-3,getmaxy-3);

Line(getmaxx-3,450,getmaxx-3,getmaxy-3);

Window_(100,50,500,350,1,'Помощ');

moveto(120,110);

SetTextJustify(0,1);

outtext('<-- --> ПЕРЕДВИЖЕНИЕ ПО ГОРИЗОНТАЛЬНОМУ МЕНЮ.');

moveto(120,130);

outtext('‑ |');

moveto(120,135);

outtext('| | ПЕРЕДВИЖЕНИЕ ПО ВЕРТИКАЛЬНОМУ МЕНЮ.');

moveto(120,140);

outtext('| ­');

moveto(114,150);

moveto(114,155);

outtext('<Enter> АКТИВАЦИЯ ПУНКТА МЕНЮ.');

moveto(140,200);

outtext('В программе использованы соотношения :');

moveto(120,220);

outtext('L >= Bs c >= Bs+Br-1');

moveto(160,235);

outtext('L');

 moveto(120,240);

outtext('e = 2 -1 m = c + L');

moveto(120,260);

outtext('n = НОК(e,c)');

moveto(120,280);

outtext('После расчетов получили образующий многочлен');

moveto(120,300);

outtext('Файра : P(x)=1011001011');

moveto(20,465);

SetTextJustify(0,1);

SetColor(0);

outtext('Нажмите любую клавишу ...');

ReadKey;

Ramka_Off(x1,y1,x2,y2);

End;

End; {Case}

Until flag;

closegraph;

End.

Оглавление.

Аннотация

Введение

1. Теоретическое введение

1.1. Постановка задачи.
1.2. Понятие двоичных циклических кодов.
1.2.1. Общие понятия и определения.

1.2.2. Методы построения циклических кодов.

1.3.Технические средства кодирования для двоичных

циклических кодов.

1.4. Коды Файра.

2. Разработка схемы кодирующего устройства.

2.1. Построение кода Файра.
2.2. Структурная схема кодирующего устройства.

 3. Анализ технического задания.

 4. Работа устройства

5.Выбор узлов принципиальной схемы.

5.1. Расчет генератора тактовых импульсов
5.2. Счетчик К555 ИЕ10
5.3. Тригер К555 ТВ6
5.4. Регистр К155ИР13.

 6. Описание разработки системы.

6.1. Модульная структура системы.
6.2. Организация пользовательского интерфейса .
6.2.1. Меню системы.
6.2.2. Обработка ошибочных ситуаций.
6.3. Спецификация на программные модули.

 7 . Тестирование.

7.1. Выбор методики тестирования.
7.2. Результаты тестирования

8. Ограничения на разработку.

8.1. Инструкция пользователя

 Заключение.

 

 Список литературы.

 

 Приложения

 

Приложение 1. Перечень элементов.

 

Приложение 2. Блок схема алгоритма.

 

Приложение 3. Текст программных модулей.

 

Приложение 4. Экранные формы.

 


Информация о работе «Кодирующее устройство для кода Файера»
Раздел: Коммуникации и связь
Количество знаков с пробелами: 47742
Количество таблиц: 6
Количество изображений: 5

0 комментариев


Наверх