- •Тема 1. Введение. Основы методологии проектирования информационных систем 5
- •Жизненный цикл программного обеспечения
- •Модели жизненного цикла программного обеспечения
- •Макетирование
- •Спиральная модель жизненного цикла
- •Компонентно-ориентированная модель
- •Тема 2. Структурный анализ и проектирование Определение структурного анализа
- •Средства структурного анализа
- •Моделирование потоков данных
- •Контекстная диаграмма
- •Построение иерархии диаграмм потоков данных
- •Методология функционально стоимостного анализа
- •Методология функционального моделирования sadt (Structured Analysis and Design Technique)
- •Состав функциональной модели sadt
- •Иерархия диаграмм
- •Словарь данных
- •Тема 3. Построение информационной модели системы. Проектирование баз данных Диаграммы сущность-связь (erd)
- •Сущности, отношения и связи в нотации Чена
- •Типы связей в нотации Чена
- •Ассоциативная связь
- •Диаграммы атрибутов в классической модели Чена
- •Диаграмма категоризации
- •Нотация Баркера. Модель сущность- связь в нотации Баркера
- •Методология idef1x
- •Тема 4. Методика построения информационной модели данных (модели «сущность-связь»)
- •Идентификация отношений между сущностями
- •Разрешение неспецифических отношений
- •Использование средств и техники структурного системного анализа
- •Основные виды работ, рекомендуемые при построении логической и физической моделей программной системы
- •Подход Мартина (ie–методология)
- •Тема 5. Методология rad (Rapid Application Development)
- •Основные принципы методологии rad
- •Состав, структура и функциональные особенности case-средств
- •Поддержка графических моделей
- •Требования к современному диаграммеру
- •Тема 6. Структурное тестирование программного обеспечения Основные понятия и принципы тестирования программного обеспечения
- •Особенности тестирования белого ящика
- •Способ тестирования базового пути
- •Потоковый граф
- •Цикломатическая сложность
- •Шаги способа тестирования базового пути
- •Способы тестирования условий
- •Тестирование ветвей и операторов отношения
- •Способ тестирования потоков данных
- •Тестирование циклов
- •Тема 7. Функциональное тестирование программного обеспечения Особенности тестирования черного ящика
- •Способы разбиения на эквивалентности
- •Способ анализа граничных значений
- •Способ диаграмм причин–следствий
- •Тема 8. Организация процесса тестирования программного обеспечения
- •Методика тестирования программных систем
- •Тестирование элементов
- •Тестирование итераций
- •Восходящее тестирование интеграции
- •Тестирование правильности
- •Системное тестирование
Способы разбиения на эквивалентности
Разбиение на эквивалентности является самым популярным способом тестирования черного ящика. В этом способе входная область данных программы делится на классы эквивалентности и для каждого класса эквивалентности разрабатывается один тестовый вариант. Класс эквивалентности – это набор данных с общими свойствами. Обрабатывая разные элементы класса, программа должна вести себя одинаково, иначе говоря, при обработке любого набора данных из классов эквивалентности в программе задействуется один и тот же набор операторов и связей между ними.
Разбиение на эквивалентности можно представить следующим образом.
Рисунок 15– Разбиение на эквивалентности
На данном рисунке представлены входные классы эквивалентности допустимых и недопустимых исходных данных, а так же классы выходных результатов. Классы эквивалентности могут быть определены на основе спецификаций на программу. Например, если спецификация задает в качестве допустимых входных величин целые числа в диапазоне 15–70, то класс эквивалентности допустимых исходных данных включает величины от 15 до 70 и несколько классов эквивалентности недопустимых исходных данных, к которым относятся целые числа <15, целые числа >70, исходные данные нецелочисленных типов.
Класс эквивалентности обычно включает множество значений данных, допустимых и недопустимых по условиям ввода.
Условия ввода может задавать:
Определенное значение;
Диапазон значений;
Множество конкретных величин;
Булево условие;
Сформулируем правила формирования классов эквивалентности.
Если условие ввода задает диапазон от n до m, то определяется два допустимых и один недопустимый класс эквивалентности V_Class={n…m}, Inv_Class1={x| x, x<n}, Inv_Class2={x| x, x>m}.
Если условие ввода задает конкретное значение a, то определяется один допустимый и два недопустимых класса эквивалентности V_Class={a}, Inv_Class1={x| x, x<a}, Inv_Class2={x| x, x>a}.
Если условие ввода задает множество значений {a, b, c}, то определяется один допустимый и один недопустимый класс эквивалентности V_Class={a, b, c}, Inv_Class={x| x, (xa)&(xb)&(xc)}.
Если условие ввода задает булево значение, например, True, то определяется один допустимый и один недопустимый класс эквивалентности V_Class={True}, Inv_Class={False}.
После построения классов эквивалентности разрабатываются тестовые варианты, причем каждый тестовый вариант выбирается таким образом, чтобы проверить сразу наибольшее количество свойств класса эквивалентности.
Способ анализа граничных значений
Как правило, большая часть ошибок происходит на границах области ввода, а не в центре.
Анализ граничных значений заключается в получении тестовых вариантов, которые анализируют граничные значения. Данный способ тестирования дополняет способ разбиения на эквивалентности.
Основные отличия анализа граничных значений от разбиения на эквивалентности:
Тестовые варианты создаются для проверки только границ классов эквивалентностей.
При создании тестовых вариантов учитываются не только условия ввода, но и область вывода.
Правила анализа граничных значений:
Если условие ввода задает диапазон от n до m, то тестовые варианты должны быть построены:
для значений n и m;
для значений, чуть левее n и чуть правее m на числовой оси.
Если условие ввода задает дискретное множество значений, то создаются тестовые варианты:
для проверки минимального и максимального из значений;
для значений, чуть меньше минимума и чуть больше максимума.
Применяется к условиям в области вывода, например, когда в программе требуется выводить таблицу значений. Количество строк и столбцов таблицы в этом случае может меняться. В этом случае задается тестовый вариант для минимального объема таблицы вывода, а также тестовый вариант для максимального размера выходной таблицы.
Если внутренние структуры данных программы имеют предписанные границы, то разрабатываются тестовые варианты, проверяющие эти структуры на их границах.
Если входные и выходные данные программы являются упорядоченными множествами, например, последовательным файлом, линейным списком или таблицей, то надо тестировать обработку первого и последнего элементов этих множеств.