- •Отчет по курсовой работе
- •Цели и задачи курсовой работы
- •Часть 1. Разработка программы Предметная область
- •Описание алгоритма
- •Описание реализации
- •Часть 2. Тестирование методом «черного ящика» Спецификация программы
- •Ограничения
- •Классы эквивалентности
- •Покрытие тестами классов эквивалентности
- •Часть 3. Тестирование методом «белого ящика». Модульное тестирование Модуль DictionaryParser.Parse() Алгоритм и код
- •Тестирование базового пути
- •Построение потового графа
- •Оценка цикломатической сложности
- •Определение базового множества независимых путей
- •Подготовка тестовых вариантов
- •Тестирование ветвей и операторов отношений
- •Тестирование потоков данных
- •Тестирование циклов
- •Набор модульных тестов.
- •Модуль String.Capitalize() Алгоритм и код
- •Тестирование базового пути
- •Построение потового графа
- •Оценка цикломатической сложности
- •Определение базового множества независимых путей
- •Подготовка тестовых вариантов
- •Тестирование ветвей и операторов отношений
- •Тестирование потоков данных
- •Тестирование циклов
- •Набор модульных тестов
- •Часть 4. Интеграционное тестирование Определение модулей и способа тестирования
- •Набор юнит-тестов
- •Набор интеграционных тестов
- •Часть 5. Регрессионное тестирование Понятие регрессионного тестирования. Основные положения
- •Виды тестов регрессии. Верификационные тесты (Verification Test).
- •Тесты регрессии (Regression Test Pass).
- •Тесты регрессии на "закрытых" багах.
- •Классификация с. Канера
- •Классификация по способу сопровождения
- •Выбор тестов регрессии
- •Автоматизация тестирования
- •Заключение
Модуль String.Capitalize() Алгоритм и код
Программный код модуля приведен в листинге 2.
Листинг 2
1 |
public static string Capitalize(this string s) |
|
2 |
{ |
|
3 |
if (String.IsNullOrEmpty(s)) |
1 |
4 |
return ""; |
2 |
5 |
|
|
6 |
string res = ""; |
3 |
7 |
res += s[0]; |
|
8 |
|
|
9 |
for (int i = 1; i < s.Length; i++) |
4 |
10 |
{ |
|
11 |
res += (_delimeters.Contains(s[i - 1]) |
5 |
12 |
? Char.ToUpper(s[i]) |
6 |
13 |
: s[i]); |
7 |
14 |
} |
8 |
15 |
res = res.Remove(" "); |
9 |
16 |
|
|
16 |
return res; |
10 |
16 |
} |
11 |
Нижеприведенный Рисунок 6 отражает блок-схему метода. Посимвольно перебирая строку, этот метод исключает все пробелы и знаки препинания из строки и заменяет следующие за ними символы их заглавными вариациями.
Например, строка «Это строка из НЕСКОЛЬКИХ слов» будет преобразована к виду «ЭтоСтрокаИзНесколькихСтрок».
Данный метод является методом расширения для стандартного класса String из .NET Framework. Он используется в качестве вспомогательного для работы с перечислением Quntifier (Квантор) – см. полный программный код в Приложении (или электронном приложении к отчету).
Рисунок 6. Блок-схема модуля String.Capitalize
Тестирование базового пути
Построение потового графа
Потоковый граф рассматриваемого модуля с указанием регионов и выделенными предикаторными узлами приведен ниже (см. Рисунок 7).
Рисунок 7. Потоковый граф модуля String.Capitalize
Оценка цикломатической сложности
Приведенный граф позволяет оценить минимальное количество тестов, которые должны быть проведены. Оценку цикломатической сложности будем производить тремя указанными методами:
V(G) = количество регионов = 4
V(G) = количество дуг – количество узлов + 2 = 13 – 11 + 2 = 4
V(G) = количество предикатных узлов +1 = 3 + 1 = 4
Таким образом, необходимо составить 4 теста, охватывающих независимые пути в графе.
Определение базового множества независимых путей
Путь начинается в начальном узле, а заканчивается в конечном узле графа. Независимые пути необходимо разрабатывать в порядке от самого короткого к самому длинному.
Были выявлены следующие независимые пути:
1-2-11
1-3-4-9-10-11
1-3-4-5-6-8-10-4-…-4-9-10-11
1-3-4-5-7-8-10-4-…-4-9-10-11
В представленном списке не учитывался факт наличия цикла (отрезки путей 3-4…-…-8 могут повторяться неоднократно)
Подготовка тестовых вариантов
Для тестирования каждого из независимых путей были созданы тестовые варианты исходных данных. Сами данные (ИД), ожидаемый от них результат (ОЖ. РЕЗ.) и результат, полученный фактически при выполнении программы (Ф. РЕЗ.), приведены в Таблица 6.
Таблица 6. Тестовые варианты для метода базового пути
№ |
ИД |
ОЖ. РЕЗ. |
1 |
null |
Пустая строка |
2 |
Пустая строка |
Пустая строка |
3 |
Это другая строка |
ЭтоДругаяСтрока |
4 |
Это Еще Одна Строка |
ЭтоЕщеОднаСтрока |
