Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теплов_КР.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
182.27 Кб
Скачать

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

Примечание: ребра записаны через тире для наглядности.