Покрытие тестами классов эквивалентности
Отчет по курсовой работе
по дисциплине
«Тестирование и отладка программного обеспечения»
Выполнил студент группы IV-42,
обучающийся по направлению:
231000 –Программная инженерия
Профиль: Разработка программно-информационных систем,
Шарыкин С.П.
Преподаватель:
доцент каф. ПОКС Зубков В.П.
Дата сдачи: __________
Оценка: _____________
Иваново
2016
Оглавление
Цели и задачи курсовой работы.. 3
Часть 1. Разработка программы.. 4
Предметная область. 4
Описание алгоритма. 5
Описание реализации. 6
Часть 2. Тестирование методом «черного ящика». 8
Спецификация программы.. 8
Ограничения. 9
Классы эквивалентности. 10
Покрытие тестами классов эквивалентности. 11
Часть 3. Тестирование методом «белого ящика». Модульное тестирование. 14
Модуль DictionaryParser.Parse() 14
Модуль String.Capitalize() 24
Часть 4. Интеграционное тестирование. 30
Определение модулей и способа тестирования. 30
Набор юнит-тестов. 31
Набор интеграционных тестов. 32
Часть 5. Регрессионное тестирование. 35
Понятие регрессионного тестирования. Основные положения. 35
Виды тестов регрессии. 36
Выбор тестов регрессии. 40
Автоматизация тестирования. 41
Заключение. 43
Цели и задачи курсовой работы
Целью настоящей курсовой работы является закрепление знаний по тестированию программного обеспечения, полученных при изучении дисциплины «Тестирование и отладка программного обеспечения» и использование их для решения практических задач.
Для достижения поставленной цели в ходе работы необходимо выполнить следующие задачи:
1. Разработать программу превращения, обращения, противопоставления предикату произвольного суждения. Операции выполнять над общеутвердительными (A), и общеотрицательными (E) суждениями.
2. Разработать спецификацию задачи и выполнить тестирование программы методом «черного ящика», описав классы эквивалентности.
3. Выполнить тестирование двух модулей разработанной программы, имеющих среднюю или высокую логическую сложность, методом «белого ящика».
4. Выполнить интеграционное тестирование не менее трех модулей разработанной программы.
5. Описать методику выполнения регрессионного тестирования.
Отчет по курсовой работе должен содержать:
- код разработанной программы;
- спецификацию программы; описание классов эквивалентности;
- программный код и результаты выполнения модульных и интеграционных тестов;
- выводы по работе
Часть 1. Разработка программы
Предметная область
Суждения – это форма мышления, в которой утверждается или отрицается связь между предметом и его признаком, отношения между предметами или факт существования предмета и которая может быть либо истинной, либо ложной. Языковой формой выражения суждения является повествовательное предложение. Вопросительные и побудительные предложения суждениями не являются.
Простое (атрибутивное) суждение — это суждение о принадлежности предметам свойств (атрибутов), а также суждения об отсутствии у предметов каких-либо свойств. В атрибутивном суждении могут быть выделены термины суждения — субъект, предикат, связка, квантор.
Для упрощения записи операций над суждениями введем следующие обозначения:
- символ «S» используется для обозначения субъекта;
- символ «P» используется для обозначения предиката;
- символ «:» применяется для обозначения связки «есть»;
- символ «~» используется для обозначения отрицательной частицы «не»;
- символ «"» применяется для обозначения терминов «все», «всякий», «любой»;
- символ «#» обозначает термин «ни один»;
- символ «!» применяется для обозначения термина «только»;
- символ «$» обозначает термины «существует», «некоторый».
Тогда результат выполнения операций в общем виде может быть представлен в виде таблицы (см. Таблица 1).
Таблица 1. Правила выполнения операций над суждениями
Операция | Суждение | |
Общеутвердительное " S : P | Общеотрицательное # S ~: P | |
Превращение | # S ~: ~P | " S : ~P |
Обращение | $ Р : S | # P ~: S |
Противопоставление предикату | # ~P ~: S | $ ~ Р : S |
Описание алгоритма
На вход программе подается одна или несколько строк. Эти строки представляет собой простое категорическое суждение, над которым следует выполнить три требуемые операции. Для удобства дальнейшей работы строка разбивается на компоненты (квантор, субъект, связка, предикат).
Дополнительными входными данными для работы программы являются словари, которые хранят используемые кванторы, субъекты, связки и прдикаты (то есть все компоненты суждения).
В случае, если формат строки не удовлетворяет требованиям, или тип суждения не соответствует указанному в задании (в соответствии с классификацией, приведенной выше), генерируется исключение (ошибка времени выполнения).
При успешном разборе суждения последовательно выполняются требуемые операции и их результат возвращается пользователю в виде строки на естественном языке. При этом реализация грамматической точности построенного предложения не является приоритетной задачей.
Входные данные могут быть считаны из текстового файла (файл input.txt находится в той же директории, что и исполняемый файл). В случае отсутствия указанного файла пользователю предлагается ввести исходные данные с клавиатуры. Выходные данные выводятся на экран и дублируются в текстовом файле (файл output.txt находится также в той же директории, что и исполняемый файл). Данные словарей находятся в текстовых файлах, расположенных в подкаталоге Data (сам подкаталог располагается в том же каталоге, что и исполняемый файл) и имеют имя: <Название_компонента>.txt
Описание реализации
Ниже приведена диаграмма классов для разработанной программы, созданная с использованием средств интегрированной среды разработки (IDE) Visual Studio (см. Рисунок 1).
Рисунок 1. Диаграмма классов
На диаграмме приведены только значимые классы и перечисления, с которыми наиболее активно ведется работа и которые будут задействованы в тестировании. Также программа содержит ряд классов-утилит и классов, расширяющих класс Exception из .NET Framework.
Процесс выполнения операций над суждениями представлен в виде блок-схемы на Рисунок 2: выполняется построчное чтение данных из потока ввода (файл или консоль), для каждой строки определяет тип суждения и выполняются допустимые операции над ним.
Рисунок 2. Схема работы программы
Часть 2. Тестирование методом «черного ящика»
Спецификация программы
Написать консольную программу выполнения операций превращения, обращения и противопоставления предикату над общеутвердительными и общеотрицательными суждениями.
Входные данные находятся в текстовых файлах (расширение .txt). Каждая строка файла содержит единственную запись – суждение. При отсутствии входного файла осуществляется пользовательский ввод. Словари компонентов суждений так же хранятся в текстовых файлов в соответствии с определенным форматом.
Результаты выполнения операций записываются в текстовый файл (расширение .txt). Также осуществляется вывод результатов на экран.
Программа должна быть написана на алгоритмическом языке высокого уровня C#. Требуемая версия .NET Framework – 4.0 и выше. Программа должна выполняться на операционных системах семейства Windows версии XP и выше.
При ошибках пользовательского ввода или внутренних ошибках программа должна осуществлять вывод соответствующего сообщения.
Ограничения
1. По умолчанию, суждения записываются на русском языке. Для записи суждений на английском языке следует изменить строку 11 в файле app.config. Допустимые значения: Ru – русский зык (по умолчанию), En – английский язык.
2. Формат записи суждений:
<Квантор> <Субъект> <Логическая связка> <Предикат>
Все компоненты являются обязательными. Компоненты Субъект и Логическая связка должны состоять из единственного слова.
3. Формат записи элементов словарей:
<Начальная_форма> ([Форма_слова] [,Форма_слова] … [,Форма_слова])
То есть, в файле должна быть записана начальная форма фразы (слово или словосочетание), затем в скобках через запятую перечислены формы этой фразы, используемые в суждениях.
4. Предикат должен иметь положительный характер (не должен иметь отрицательной частицы «не»)
5. При записи результата все компоненты новых суждений должны иметь либо начальную форму фразы, как она указана в словарях компонентов, либо ту же форму, что и в записи исходного суждения. Знаки препинания игнорируются. Выходные суждения записываются в верхнем регистре.
6. Текстовые файлы должны кодироваться UTF-8 и иметь расширение .txt.
7. Требование к структуре файловой системы: текстовые файлы для ввода и вывода данных должны находиться в том же каталоге, что и исполняемый файл. Текстовые файлы со словарями компонентов должны располагаться в подкаталоге Data в том же каталоге, что и исполняемый файл и именоваться в формате <Компонент>.txt
8. При возникновении любой ошибки выполнение программы останавливается.
Классы эквивалентности
Классы эквивалентности будем представлять в виде таблицы (см. Таблица 2)
Таблица 2. Классы эквивалентности
№ | Ситуация | Классы эквивалентности | |
Допустимые | Недопустимые | ||
Ввод данных | Данные успешно считаны из файла | ||
Файл не найден, пользователь вводит данные | |||
Синтаксический анализ | Запись суждения соответствует формату, обнаружены все компоненты в словарях | Отсутствует любой (любые) из компонентов суждения | |
Все компоненты присутствуют, но не могут быть распознаны | |||
Тип суждения не соответствует заявленному в задании | |||
Файл со словарем для какого-либо компонента не обнаружен | |||
Выполнение операций | Операции выполнены успешно | ||
Вывод данных | Данные успешно записаны в существующий файл | ||
Данные успешно записаны в созданный файл |
Покрытие тестами классов эквивалентности
Тесты, покрывающие классы эквивалентности, приведены в нижеследующей таблице (Таблица 3).
Таблица 3. Используемые тесты[1]
№ | Значение входных данных | Значение выходных данных | Тип ошибки | Причина |
Файл пустой | Пустая строка | Ошибки нет | ||
Файл не существует, пользователь вводит пустую строку | Пустая строка | Ошибки нет | ||
Все студенты учатся хорошо | I > Входные данные: ВСЕ СТУДЕНТЫ УЧИТЬСЯ ХОРОШО I > Тип: Общеутвердительное I > Превращение: НИ ОДИН ИЗ ТЕХ КТО СТУДЕНТЫ НЕ УЧИТЬСЯ НЕ ХОРОШО I > Обращение: НЕКОТОРЫЕ ИЗ ТЕХ КТО УЧАТСЯ ХОРОШО СТУДЕНТЫ I > Противопоставление: НИ ОДИН ИЗ ТЕХ КТО НЕ УЧАТСЯ ХОРОШО НЕ СТУДЕНТЫ | Ошибки нет | ||
Студенты учатся хорошо | E > Квантор не определен | Неверный формат ввода | Отсутствует квантор суждения | |
Почти все студенты учатся хорошо | E > Не могу считать данные для объекта: Квантор, так как Не обнаружена требуемая форма | Неверный формат ввода | Квантор суждения не определен | |
Все учатся хорошо | E > Субъект не определен | Неверный формат ввода | Отсутствует субъект суждения | |
Все студенты хорошо | E > Не могу считать данные для объекта: Связка, так как Не обнаружена начальная форма | Неверный формат ввода | Отсутствует логическая связка | |
Все студенты учатся | E > Предикат не определен | Неверный формат ввода | Отсутствует предикат суждения | |
Некоторые студенты учатся хорошо | I > Входные данные: НЕКОТОРЫЕ СТУДЕНТЫ УЧИТЬСЯ ХОРОШО I > Тип: Частноутвердительное W > Данное суждение не является общеутвердительным или общеотрицательным | Несоответствие типа | Тип суждения не соответствует указанному в задании | |
Все студенты учатся хорошо | E > Не могу считать данные для объекта: Предикат, так как Файл со справочиком не обнаружен | Файл не найден | Отстутствует файл со справочником |
При выполнении тестов использовались следующие записи в словарях компонентов:
1) Кванторы (Квантор.txt)
Все (Вся, Всё, Всех)
Некоторые (Некоторых, Некоторым, Некоторыми)
Ни один (Ни одного, Ни одному, Ни одна, Ни одно)
Ни один из (Ни одного из, Ни одному из, Ни одна из, Ни одно из)
Ни один из тех кто (Ни одного из тех кто, Ни одному из тех кто, Ни одна из тех кто, Ни одно из тех кто)
2) Субъекты (Субъект.txt)
Студент (Студента, Студенту, Студентом, Студенте)
Студенты (Студентов, Студентам, Студентами, Студентах)
3) Логические связки (Связка.txt)
Учиться (учусь, учимся, учишься, учится, учатся)
Быть (есть, был, была, было, были, будет, будут)
Бывать (бывает, бывают, бывал, бывала, бывало, бывали)
4) Предикаты (Предикат.txt)
Хорошо ()
Плохо ()
Умный (умная, умное, умные, умного, умную, умных, умному, умной, умным, умными, умном, умных)
Используемые тесты покрывают следующие классы эквивалентности (см. Таблица 4):
Таблица 4. Соотношение классов эквивалентности и тестов
№ | Описание класса эквивалентности | Допустимый класс? | Номер(-а) тестов |
Данные успешно считаны из файла | + | 1, 3-9 | |
Файл не найден, пользователь вводит данные | + | 2-9 | |
Запись суждения соответствует формату, обнаружены все компоненты в словарях | + | ||
Отсутствует любой (любые) из компонентов суждения | – | 4,6-8 | |
Все компоненты присутствуют, но не могут быть распознаны | – | 5,7 | |
Тип суждения не соответствует заявленному в задании | – | ||
Файл со словарем для какого-либо компонента не обнаружен | – | ||
Операции выполнены успешно | + | ||
Данные успешно записаны в существующий файл | + | 1-10 | |
Данные успешно записаны в созданный файл | + | 1-10 |
Часть 3. Тестирование методом «белого ящика». Модульное тестирование