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