Смекни!
smekni.com

Поиск кратчайшего пути в лабиринте (стр. 3 из 4)

void vyvod(int x, int y) – функция рисует рамочку белого цвета, служащую курсором для расстановки и удаления комнат и дверей а также служащую для ввода входа и выхода в лабиринте.

void maska (int x, int y) – функция скрывает(закрашивает) курсор.

void Vvod(struct Lab *P, int *x1, int *y1, int *x2,int *y2) – функция запрашивает ввести вход в лабиринт, после чего с помощью клавиш управления курсором и клавиши Enter функция считывает вход, далее функция запрашивает ввести выход.

int Find(struct Lab *P, int x1, int y1, int x2,int y2) – выполняет поиск пути.

void Puty(struct Lab *P, int x1, int y1, int x2,int y2) – функция прорисовывает путь.

Используемые технические средства

Необходимы следующие технические средства:

486 DX-4 100 MHz процессор и выше;

8 Мб ОЗУ и выше;

Монитор, мышь и клавиатура.

Вызов и загрузка

Вызов программы осуществляется посредством запуска файла sapr_kyrsovik.exe. Программа занимает 40 байт.

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

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

чтобы ввести комнату необходимо нажать клавишу <к>;

чтобы ввести дверь необходимо нажать клавишу <д>;

чтобы удалить комнату или дверь необходимо нажать клавишу <я>.

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

Выходными данными является отображение введённого лабиринта, т. е. отображение комнат и дверей, а также отображение найденного кратчайшего пути в лабиринте, и в случае сохранения - файл.

ПРИЛОЖЕНИЕ Б

(справочное)

Описание применения

Назначение программы

Программа “Поиск кратчайшего пути” находит кратчайший путь в лабиринте.

Условия применения

Необходимы следующие технические средства:

1) 486 DX4 100 процессор и выше;

8 Мбайта ОЗУ и выше;

Монитор, Клавиатура.

Программа предназначена для работы в ОС Windows 9x.

Описание задачи

Программа “Поиск кратчайшего пути” находит кратчайший путь в лабиринте.

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

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

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

чтобы ввести комнату необходимо нажать клавишу <к>;

чтобы ввести дверь необходимо нажать клавишу <д>;

чтобы удалить комнату или дверь необходимо нажать клавишу <я>.

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

Выходными данными является отображение введённого лабиринта, т. е. отображение комнат и дверей, а также отображение найденного кратчайшего пути в лабиринте, и в случае сохранения - файл.

Приложение В.

(обязательное)

Программа и методика испытаний

Объект испытаний

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

Цель испытаний

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

Требования к программе

Во время испытаний необходимо проверить соответствие требований на программу, указанных в “Техническом задании”, а именно:

1) “Требования к функциональным характеристикам”;

2) “Требования к надёжности”;

3) “Требования к составу и параметрам технических средств”;

4) “Требования к информационной и программной совместимости”.

Требования к программной документации

На испытание должен быть предъявлен следующий состав программной документации:

текст программы;

программа и методика испытаний;

описание программы;

описание применения;

Средства и порядок испытаний

Испытания будут проводиться в несколько этапов. Первый этап – проверка правильности работы отдельных модулей программы. Второй этап – проверка работы всех модулей вместе.

Испытания должны проходить при следующих технических и программных средствах:

486 DX4 100 процессор и выше;

8 Мбайта ОЗУ и выше;

Монитор, Клавиатура.

Программное обеспечение: оболочка Borland C 3.1.

Методы испытаний

При испытании программы будет использоваться стратегия “чёрного ящика” в частности следующие методы:

эквивалентное разбиение;

предположение об ошибке;

Эквивалентное разбиение:

1) Для неправильного класса эквивалентности необходимо проверить следующие тесты:

ввести клавиши ‘g’, ’d’, ‘v’,…1, 2, 3, ….

Результат: программа не риагирует на введённые клавиши.

2) Для правильного класса эквивалентности необходимо проверить следующие тесты:

ввести клавиши ‘к’, ’д’

Результат: на мониторе отображаются комнаты и двери.

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

Для функции «Rasstan», испытание необходимо проводить по методу «Предположение об ошибке». Для испытания данной функции необходимо выполнить следующие действия:

Проверка №1:

Нажать клавишу <к>;

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

Проверка №2:

Нажать клавишу <д>;

Результат:На экране появился отрезок, обозначающий дверь.

Проверка №3:

Нажать клавишу <я>, на комнате;

Результат:Изображение комнаты исчезло, а на его месте будет пусто.

Для функции «Vvod», испытание необходимо проводить по методу «Предположение об ошибке». Для испытания данной функции необходимо выполнить следующие действия:

Проверка №1:

При запросе входа в лабиринт нажать клавишу <enter> на пустом месте;

Результат:Ничего не произойдет

Проверка №2:

При запросе выхода из лабиринта нажать клавишу <enter> на двери;

Результат:Ничего не произойдет

Проверка №3:

При запросе входа в лабиринт нажать клавишу <enter> на комнате;

Результат:Программа попросит ввести выход.

Тесты для программы:

1) ввести отдельно стоящие, не связанные комнаты и ввести вход и выход. Программа выдаёт результат

Результат: Путь не найден.

2) ввести правильный лабиринти найти путь между входом и выходом. Программа выдаёт результат

Результат: Кратчайший путь найден.

Испытания по методу “белого ящика”:

Для тестирования решено применить пошаговое тестирование сверху вниз (нисходящее), при котором тестирование начинается с верхнего, головного модуля программы, причём модули будут тестироваться не изолированно друг от друга, а подключаться поочерёдно для выполнения теста к набору уже ранее оттестированных модулей.

Тестируемый модуль:

void Rasstan(struct Lab* P)

{

int x=1 , y=1;

char a;

do{

a=getch();

if(!a) a=getch();

switch (a)

{

case 80 :if (y<MY) ++y ;break;

case 72 :if (y>1 ) --y ;break;

case 75 :if (x>1 ) --x ;break;

case 77 :if (x<MX) ++x ;break;

case 'z' :P->Map[y][x]=0 ;

break;

case 'x' :P->Map[y][x]=1 ;

break;

case 'c' :P->Map[y][x]=2 ;

break;

case 27 : exit(0);

}

}while(a!=13);

}

Этот модуль должен получать карту поля из структуры лабиринта, создадим её .

- Для этого модуля имеем следующие тесты (Таблица 1):

Таблица 1 – Тесты для модуля Rasstan

№ теста Действие Событие Соответствие

-

- Критерий тестирования: покрытие решений

1 Нажать клавишу <↑> (вверх) курсор переместился вверх полное соответствие
2 Нажать клавишу<↓> (вниз) курсор переместился вниз полное соответствие
3 Нажать клавишу<←> (влево) курсор переместился влево полное соответствие
4 Нажать клавишу<→> (вправо) курсор переместился вправо полное соответствие
5 ввести клавишу’х’ (ребро) на карте поля отобразилось значение ‘1’ полное соответствие
6 ввести клавишу’с’ (вершину) на карте поля отобразилось значение ‘2’ полное соответствие
7 навести курсор на значение‘1’или‘2’ и ввести клавишу’z’ (т.е.удалить) на карте поля отобразилось значение ‘0’ вместо значения‘2’или‘1’ полное соответствие
8 Нажать клавишу‘Esc’ выход из программы полное соответствие
Критерий тестирования: покрытие условий
9 Нажать клавишу <↑> (вверх) и передвигать курсор до тех пор, пока не достигнет границы

- Курсор не выходит

за границы поля
полное соответствие
10 Нажать клавишу<↓> (вниз) и передвигать курсор до тех пор, пока не достигнет границы

- Курсор не выходит

за границы поля
полное соответствие
11 Нажать клавишу<←> (влево) и передвигать курсор до тех пор, пока не достигнет границы

- Курсор не выходит

за границы поля
полное соответствие
12 Нажать клавишу<→> (вправо) и передвигать курсор до тех пор, пока не достигнет границы

- Курсор не выходит

за границы поля
полное соответствие

Тестируемый модуль:

void Vvod(struct Lab* P, int* x1, int* y1, int* x2, int* y2)

{

gotoxy(3,2);printf("Введите вход в лабиринт");

int x=1,y=1;

char a;

do{

a=getch();

if(!a) a=getch();

CursorHide(x,y);

switch(a){

case 80 :if (y<MY) ++y ;break;

case 72 :if (y>1 ) --y ;break;

case 75 :if (x>1 ) --x ;break;

case 77 :if (x<MX) ++x ;break

case 27 :exit(0);

}

if ((a==13) && (P->Map[y][x]==2)) break;

}while(1);

*x1=x;*y1=y;

gotoxy(3,4);printf("Введите выход из лабиринта");

do{0

a=getch();

if(!a) a=getch();

switch(a){

case 80 :if (y<MY) ++y ;break;

case 72 :if (y>1 ) --y ;break;

case 75 :if (x>1 ) --x ;break;

case 77 :if (x<MX) ++x ;break;

case 27 :exit(0);

}

if ((a==13) && (P->Map[y][x]==2)) break;

}while(1);

*x2=x;*y2=y;

gotoxy(3,5); printf("x2=%3i y2=%3i ",x,y);

}

-

- Для этого модуля имеем следующие тесты (Таблица 2):

Таблица 2 – Тесты для модуля Vvod

№ теста Действие Предполагаемое поведение Функции Соответствие

-

- Критерий тестирования: покрытие решений

1 Нажать клавишу <↑> (вверх) курсор должен переместиться вверх полное соответствие
2 Нажать клавишу<↓> (вниз) курсор должен переместиться вниз полное соответствие
3 Нажать клавишу<←> (влево) курсор должен переместиться влево полное соответствие
4 Нажать клавишу<→> (вправо) курсор должен переместиться вправо полное соответствие
5 Нажать клавишу‘Esc’ выход из программы полное соответствие
Критерий тестирования: покрытие условий
6 Нажать клавишу <↑> (вверх) и передвигать курсор до тех пор, пока не достигнет границы

- Курсор не должен выходить

за границы поля
полное соответствие
7 Нажать клавишу<↓> (вниз) и передвигать курсор до тех пор, пока не достигнет границы

- Курсор не должен выходить

за границы поля
полное соответствие
8 Нажать клавишу<←> (влево) и передвигать курсор до тех пор, пока не достигнет границы

- Курсор не должен выходить

за границы поля
полное соответствие
9 Нажать клавишу<→> (вправо) и передвигать курсор до тех пор, пока не достигнет границы

- Курсор не должен выходить

- за границы поля

полное соответствие
10 навести курсор на дверь и нажать Enter

- Функция не будет реаги-

- ровать на ввод

полное соответствие
11 навести курсор на комнату и нажать Enter Функция должна попроси ть ввести выход из лаби ринта. полное соответствие

Тестируемый модуль: