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 – Тесты для модуля 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 – Тесты для модуля Vvod
№ теста | Действие | Предполагаемое поведение Функции | Соответствие |
-- Критерий тестирования: покрытие решений | |||
1 | Нажать клавишу <↑> (вверх) | курсор должен переместиться вверх | полное соответствие |
2 | Нажать клавишу<↓> (вниз) | курсор должен переместиться вниз | полное соответствие |
3 | Нажать клавишу<←> (влево) | курсор должен переместиться влево | полное соответствие |
4 | Нажать клавишу<→> (вправо) | курсор должен переместиться вправо | полное соответствие |
5 | Нажать клавишу‘Esc’ | выход из программы | полное соответствие |
Критерий тестирования: покрытие условий | |||
6 | Нажать клавишу <↑> (вверх) и передвигать курсор до тех пор, пока не достигнет границы | - Курсор не должен выходитьза границы поля | полное соответствие |
7 | Нажать клавишу<↓> (вниз) и передвигать курсор до тех пор, пока не достигнет границы | - Курсор не должен выходитьза границы поля | полное соответствие |
8 | Нажать клавишу<←> (влево) и передвигать курсор до тех пор, пока не достигнет границы | - Курсор не должен выходитьза границы поля | полное соответствие |
9 | Нажать клавишу<→> (вправо) и передвигать курсор до тех пор, пока не достигнет границы | - Курсор не должен выходить- за границы поля | полное соответствие |
10 | навести курсор на дверь и нажать Enter | - Функция не будет реаги-- ровать на ввод | полное соответствие |
11 | навести курсор на комнату и нажать Enter | Функция должна попроси ть ввести выход из лаби ринта. | полное соответствие |
Тестируемый модуль: