- •Отчет по курсовой работе
- •Цели и задачи курсовой работы
- •Часть 1. Разработка программы Предметная область
- •Описание алгоритма
- •Описание реализации
- •Часть 2. Тестирование методом «черного ящика» Спецификация программы
- •Ограничения
- •Классы эквивалентности
- •Покрытие тестами классов эквивалентности
- •Часть 3. Тестирование методом «белого ящика». Модульное тестирование Модуль DictionaryParser.Parse() Алгоритм и код
- •Тестирование базового пути
- •Построение потового графа
- •Оценка цикломатической сложности
- •Определение базового множества независимых путей
- •Подготовка тестовых вариантов
- •Тестирование ветвей и операторов отношений
- •Тестирование потоков данных
- •Тестирование циклов
- •Набор модульных тестов.
- •Модуль String.Capitalize() Алгоритм и код
- •Тестирование базового пути
- •Построение потового графа
- •Оценка цикломатической сложности
- •Определение базового множества независимых путей
- •Подготовка тестовых вариантов
- •Тестирование ветвей и операторов отношений
- •Тестирование потоков данных
- •Тестирование циклов
- •Набор модульных тестов
- •Часть 4. Интеграционное тестирование Определение модулей и способа тестирования
- •Набор юнит-тестов
- •Набор интеграционных тестов
- •Часть 5. Регрессионное тестирование Понятие регрессионного тестирования. Основные положения
- •Виды тестов регрессии. Верификационные тесты (Verification Test).
- •Тесты регрессии (Regression Test Pass).
- •Тесты регрессии на "закрытых" багах.
- •Классификация с. Канера
- •Классификация по способу сопровождения
- •Выбор тестов регрессии
- •Автоматизация тестирования
- •Заключение
Оценка цикломатической сложности
Приведенный граф позволяет оценить минимальное количество тестов, которые должны быть проведены. Оценку цикломатической сложности будем производить тремя указанными методами:
V(G) = количество регионов = 4
V(G) = количество дуг – количество узлов + 2 = 15 – 13 + 2 = 4
V(G) = количество предикатных узлов +1 = 3 + 1 = 4
Таким образом, необходимо составить 4 теста, охватывающих независимые пути в графе.
Определение базового множества независимых путей
Путь начинается в начальном узле, а заканчивается в конечном узле графа. Независимые пути необходимо разрабатывать в порядке от самого короткого к самому длинному.
Были выявлены следующие независимые пути:
1-12-13
1-2-3-12-13
1-2-3-4-5-6-8-10-11-3-12-13
1-2-3-4-5-6-7-9-10-11-3-12-13
В представленном списке не учитывался факт наличия цикла (отрезки путей 3-4…-…-11могут повторяться неоднократно)
Подготовка тестовых вариантов
Для тестирования каждого из независимых путей были созданы тестовые варианты исходных данных. Сами данные (ИД), ожидаемый от них результат (ОЖ. РЕЗ.) и результат, полученный фактически при выполнении программы (Ф. РЕЗ.), приведены в Таблица 5. Тестирование выполняется для справочника «Субъекты».
Таблица 5. Тестовые варианты для метода базового пути
№ |
ИД |
ОЖ. РЕЗ. |
1 |
Файл Субъекты.txt отсутствует |
Выброшено исключение FileNotFoundException, которое затем перехвачено в методе Program.Main. |
2 |
Файл Субъекты.txt не содержит данных |
Свойство DictionaryParser.Dictionary инициализировано пустым словарем. |
3 |
Файл Субъекты.txt содержит одну или несколько корректных строк:
Студент (Студента, Студенту, Студентом, Студенте) Студенты (Студентов, Студентам, Студентами, Студентах) |
Свойство DictionaryParser.Dictionary содержит словарь: СТУДЕНТ -> [0]: "СТУДЕНТ" [1]: "СТУДЕНТА" [2]: "СТУДЕНТУ" [3]: "СТУДЕНТОМ" [4]: "СТУДЕНТЕ" СТУДЕНТЫ -> [0]: "СТУДЕНТЫ" [1]: "СТУДЕНТОВ" [2]: "СТУДЕНТАМ" [3]: "СТУДЕНТАМИ" [4]: "СТУДЕНТАХ"
|
4 |
Файл Субъекты.txt содержит одну или несколько некорректных строк: Студент Студента, Студенту, Студентом, Студенте)
Примечание: отсутствует символ ‘(‘ |
Выброшено исключение DictionaryException, которое затем перехвачено в методе Program.Main. |
Тестирование ветвей и операторов отношений
В рассматриваемом модуле есть три условных оператора, условия для которых записаны операторами 1, 3, 6. Метод ветвей и операторов отношений будем выполнять только в последнем случае, так как первый реализован средствами .NET Framework, а второй задает условие цикла и будет протестирован позднее:
if (openBracket == -1)
throw new DictionaryException(_dictionaryType,
DictionaryExceptionReason.НевозможноПроанализироватьВариантыФорм);
В этом случае, очевидно, достаточно рассмотреть два случая:
Переменная openBracket имеет значение -1, то есть строка в файле имеет неверный формат (отсутствует символ ‘(‘ как разделитель начальной формы слова и используемых форм). Тогда будет сгенерировано исключение DictionaryException, которое затем будет обработано в главном цикле программы.
Переменная openBracket имеет значение, отличное от -1. Тогда программа будет успешно продолжена.
