
- •Курсовая работа
- •Казань 2009 содержание
- •1. Задание
- •2. Описание применения
- •2.1. Постановка задачи
- •В программе используются следующие определения [1].
- •2.2. Обращение к программе
- •2.3. Входные данные
- •2.4. Выходные данные
- •2.5. Сообщения
- •2.5.1. Информационные сообщения
- •2.5.2. Сообщения об ошибках
- •3. Описание программы
- •3.1. Метод решения задачи
- •3.2. Структура программы
- •3.3. Описание модулей
- •3.3.1. Main - главный модуль
- •3.3.2. Calc_distances – вычисление расстояний до заданной вершины
- •3.3.3. Input_graph - ввод графа
- •3.3.4. Output_message - вывод сообщения
- •3.3.5. Trans_graph - преобразование графа
- •3.3.6. Get_edges_count - вычисление количества ребер
- •4. Подготовка к отладке программы
- •4.1. План отладки
- •4.2. Проектирование тестов
- •4.2.2. Тесты белого ящика
- •5. Заключение
- •Литература
- •Приложение Текст программы
4. Подготовка к отладке программы
4.1. План отладки
Особенности данной программы затрудняют применение для нее в чистом виде традиционной стратегии тестирования: возможно более быстрого подключения к программе модулей ввода/вывода и сложных модулей с их предварительной автономной отладкой [3, 4]. Дело в том, что наиболее сложный модуль имеет довольно громоздкие входные и выходные данные. Для его автономной отладки эти данные пришлось бы передавать с помощью имитаторов и драйверов близких по функциям и сложности к модулям main, input_graph. Поэтому trans_graph и calc_distances удобно отлаживать после модулей main, input_graph или совместно с ними.
Работа модулей main и input_graph тесно переплетена: main сообщает об ошибках, обнаруженных модулем input_graph. При автономной отладке каждого из них, особенно при вводе ошибочных данных, драйверили имитатор практически должен дублировать работу другогомодуля. Поэтому их удобно отлаживать совместно.
Из приведенных соображений принят следующий план отладки в два этапа.
1. Совместное тестирование модулей trans_graph, calc_distances и main с модулем input_graph (т. е. всей программы) на "правильных" тестах.
2. Тестирование всей программы для совместной отладки модулей main и input_graph на "неправильных" тестах.
4.2. Проектирование тестов
4.2.1. Тесты черного ящика
Для проектирования тестов программы методами черного ящика [3, 4] с помощью эквивалентного разбиения входных/выходных данных на области (классы) эквивалентности составлен список ситуаций, каждая из которых должна создаваться хотя бы одним тестом. Тестовые ситуации приведены в табл. 4.1, в скобках указаны их номера.
Таблица 4.1
Области входных/выходных данных тестов программы
Входное/выходное условие (значение)
|
"Правильные" классы эквивалентности |
"Неправильные" классы эквивалентности |
Количество вершин n |
2…NMAX(1) |
<1(2), >NMAX(3) |
Количество ребер |
1…n*(n-1)(4) |
0(5), >n*(n-1)(6) |
Кол. вершин в ребре |
2(7) |
< 2(8) |
Номер вершины в начальном графе |
1..n(9) |
<=0(10), > n(11) |
Номер вершины в конечном графе |
1..n’(12) |
<1(13), >n’(14) |
Сообщения программы |
1(15), 2(16), 3(17), 4(18), 5(19), 6(20), 7(21), 8(22), 16(30)
|
9(23), 10(24), 11(25), 12(26), 13(27), 14(28), 15(29) |
Входной файл существует |
Да(31) |
Нет(32) |
Для создания перечисленных тестовых ситуаций разработаны тесты, представленные в табл. 4.2. Входные и выходные данные тестов по возможности выбирались ближе к границам классов эквивалентности.
Таблица 4.2
Тесты черного ящика для отладки программы
N |
Вход |
Выход |
Основные ситуации |
1 |
n=0
|
Сообщения: 1, 10, 15 |
2, 15, 24, 29, 31 |
2 |
n=21
|
Сообщения: 1, 10, 15 |
3, 15, 24, 29, 31 |
3 |
n=5 ребра: 1-2 2-7
|
Сообщения: 1, 2, 12, 15 |
1, 4, 7, 11, 15, 16, 26, 29, 31 |
4 |
n=2 ребра: нет
|
Сообщения: 1, 2, 3, 13, 15 |
1, 5, 15, 16, 17, 27, 29, 31 |
5 |
n=3 ребра: 1-2 2-1 1-3 3-1 2-3 3-2 1-1 номер вершины: 1
|
Сообщения: 1, 2, 3, 4, 5, 6, 7, 8, 16, 18 |
1, 6, 7, 9, 12, 15, 16, 17, 18, 19, 20, 21, 22, 30, 31 |
6 |
n=4 ребра: 3-2 3
|
Сообщения: 1, 2, 11, 15 |
1, 4, 7, 8, 9, 15, 16, 25, 29, 31 |
7 |
n=4 ребра: 1-2 2-3 0-2
|
Сообщения: 1, 2, 12, 15 |
1, 4, 7, 10, 15, 16, 26, 29, 31 |
8 |
n=5 ребра: 1-2 2-4 3-4 номер вершины: 0
|
Сообщения: 1, 2, 3, 4, 5, 6, 12, 15 |
1, 4, 7, 9, 13, 15, 16, 17, 18, 19, 20, 26, 29, 31 |
9 |
n=5 ребра: 1-2 2-4 3-4 номер вершины: 4
|
Сообщения: 1, 2, 3, 4, 5, 6, 12, 15 |
1, 4, 7, 9, 14, 15, 16, 17, 18, 19, 20, 26, 29, 31 |
10 |
n=4 ребра: 0-3 1-2
|
Сообщения: 1, 2, 12, 15 |
1, 4, 7, 10, 15, 16, 26, 29, 31 |
11 |
n=5 ребра:1-2 2-4 3-5
|
Сообщения 1, 2, 3, 4, 5, 6, 14, 15, 17 |
1, 4, 7, 9, 15, 16, 17, 18, 19, 20, 28, 29, 31 |
12 |
n=5 ребра: 1-2 2-3 3-4 4-5 5-1 номер вершины: 3 |
номера вершин: 2 5 Сообщения: 1, 2, 3, 4, 5, 6, 7 |
1, 4, 7, 9, 12, 15, 16, 17, 18, 19, 20, 21, 31 |
13 |
n=3 ребра: 1-2 1-3 2-3 номер вершины: 1
|
Сообщения: 1, 2, 3, 4, 5, 6, 7, 8, |
1, 4, 7, 9, 12, 15, 16, 17, 18, 19, 20, 21, 22, 31 |
Примечание: ребра записаны через тире для наглядности.