- •Тема 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. Организация процесса тестирования программного обеспечения
- •Методика тестирования программных систем
- •Тестирование элементов
- •Тестирование итераций
- •Восходящее тестирование интеграции
- •Тестирование правильности
- •Системное тестирование
Тестирование итераций
Тестирование итераций поддерживает сборку единой программной системы. Цель сборки и тестирование итераций заключается в том, чтобы взять модули, протестированные как элементы, и построить программную структуру, требуемую проектом. При тестировании итераций тесты проводятся для обнаружения ошибок интерфейса.
Категории ошибок интерфейса:
потеря данных при прохождении через интерфейс;
отсутствие в модуле необходимой ссылки;
неправильное влияние одного модуля на другой;
подфункции при объединении не образуют требуемую главную функцию;
отдельные допустимые неточности при интеграции выходят за допустимый уровень;
возникают проблемы при работе с глобальными структурами данных.
Существует два варианта тестирования, поддерживающих процессы интеграции:
нисходящее тестирование;
восходящее тестирование.
При нисходящем тестировании интеграции модули объединяются движением сверху вниз по управляющей иерархии, начиная от главного управляющего модуля.
Подчиненные модули добавляются в структуру в результате поиска в глубину или в ширину. Интеграцией поиска в глубину подключаются все модули, находящиеся на главном управляющем пути структуры по вертикали. Выбор главного управляющего пути отчасти произволен и зависит от характеристик, определяемых приложением.
При интеграции поиска в ширину последовательно проходят по уровням горизонтали. На каждом уровне подключаются модули, непосредственно подчиненные вышестоящему, управляющему модулю.
Возможные шаги процесса нисходящей интеграции:
Главный управляющий модуль, находящийся на вершине иерархии, используется как тестовый драйвер. Все подчиненные ему модули замещаются заглушками.
Одна из заглушек заменяется реальным модулем. Этот модуль выбирается поиском в глубину или в ширину.
После подключения каждого модуля и установки на нем заглушек проводится набор тестов, проверяющих полученную структуру.
Если в модуле-драйвере уже нет заглушек, производится смена модуля-драйвера поиском в ширину или в глубину.
Выполняется возврат на шаг два до тех пор, пока не будет протестирована вся структура.
Достоинство нисходящей интеграции состоит в том, что ошибки в главной управляющей части системы выявляется в первую очередь.
Недостатком нисходящей интеграции является то, что возникают трудности в ситуациях, когда для полного тестирования на верхних уровнях нужны результаты обработки с нижних уровней иерархии.
Существует три пути борьбы с этим недостатком:
откладывать некоторые тесты до замещения заглушек реальными модулями;
разработать заглушки, частично выполняющие функции модулей;
подключать модуль движением снизу вверх.
Восходящее тестирование интеграции
При восходящем тестировании интеграций сборка тестирования системы начинается с модулей, располагающихся на нижних уровнях интеграции. Модуль подключается движением снизу вверх. В результате подключенные модули всегда доступны и нет необходимости в заглушках.
Шаги методики восходящего тестирования интеграции:
Модули нижнего уровня объединяются в так называемые кластеры (группы, блоки), выполняющие определенную программную подфункцию.
Для координации ввода/вывода тестового варианта пишется драйвер, управляющей тестированием кластеров.
Тестируется кластер.
Драйверы тестирования удаляются, а кластеры объединяются в структуру движения вверх.
Основной недостаток восходящего тестирования заключается в том, что система не существует как объект до тех пор, пока не будет добавлен последний модуль.
Основное достоинство восходящего тестирования заключается в том, что оно упрощает разработку тестовых вариантов благодаря отсутствию заглушек.
При проведении тестирования интеграции актуальной задачей является выявление критических модулей.
Признаки критического модуля:
реализуют несколько требований в программной системе;
имеет высокий уровень управления, то есть находится достаточно высоко в иерархии программной структуры;
имеет высокую цикломатическую сложность;
имеет определенные требования производительности обработки.
Критические модули должны тестироваться, как можно, раньше. Кроме того, к ним рекомендуется применять регрессионное тестирование, то есть повторять уже выполненные тесты в полном или частичном объеме.