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