- •Понятие программного обеспечения
- •Понятие программного изделия
- •Требования к программному изделию
- •Жизненнный цикл программного продукта
- •Метод декомпозиции модулей
- •Отладка и сопровождение программных продуктов ошибки программного обеспечения
- •Методы отладки
- •Интегрированный отладчик delphi
- •Тестирование. Принципы тестирования
- •Тестирование правильности
- •Системное тестирование
- •Метод покрытия условий
- •Анализ граничных значений
- •Система классификации информации
- •3 Уровень-
- •Комерч-й
- •Классификация методов кодирования информации
- •Классификаторы и их применение
- •Постановка задачи
- •Роль пользователя в создании аис и аит и постановке задач
- •План постановки задачи
- •Концептуальная структура предметной области
- •Инструментальные средства для поддержки методологий проектирования
Тестирование правильности
Процесс тестирования состоит из:
тестирование элементов. Цель - индивидуальная проверка каждого модуля. Используется способ тестирования «белого ящика».
тестирование интеграции. Цель – тестирование сборки модулей в программную систему(«черный ящик»).
тестирование правильности. Цель –проверка реализации в программной системе всех функциональных и поведенческих требований, и требований эффективности используются исключительно методы черного ящика.
системное тестирование. Цель – проверка правильности объединения и взаимодействия всех элементов компьютерной системы, реализации всех системных функций.
Важным элементом подтверждения правильности является проверка конфигурации ПС. Конфигурация ПС - совокупность всех элементов информации, вырабатываемых в процессе конструирования ПС. Минимальная конфигурация ПС включает следующие базовые элементы: системную спецификацию, план программного проекта, спецификацию требований к ПС, (работающий или бумажный) макет, предварительное руководство пользователя, спецификацию проектирования, листинги исходных текстов программ, шин и методику тестирования, тестовые варианты и полученные результаты, руководства по работе и инсталляции, ехе - код выполняемой программы, описание базы данных, руководства пользователя по настройке, документы сопровождения, отчеты о проблемах ПС, стандарты и методики конструирования ПС.
Проверка конфигурация гарантирует, что все элементы конфигурации ПС правильно разработаны и учтены и достаточно детализированы для этапа сопровождения в жизненном цикле ПС.
Разработчик не может предугадать, как заказчик будет реально рассматривать ПС. Для обнаружения ошибок, которые способен найти только конечный пользователь, используют процесс, включающий α - и β - тестирование.
α- тестирование проводится заказчиком в организации разработчика. Разработчик фиксирует все выявленные заказчиком ошибки и проблемы использования.
β- тестирование проводится конечным пользователем в организации заказчика. Разработчик в этом процессе участия не принимает. Фактически β - тестирование - реальное применение ПС в среде, которая не управляется разработчиком. Заказчик сам записывает все обнаруженные проблемы и сообщает о них разработчику, β - тестирование проводится в течение фиксированного срока (около года). По результатам выявленных проблем разработчик изменяет ПС и тем самым подготавливает продукт полностью на базе заказчика
Системное тестирование
Системное тестирование подразумевает выход за рамки области действия программного проекта и проводится не только программным разработчиком. Классическая проблема системного тестирования - указание причины. Она возникает, когда разработчик одного системного элемента обвиняет разработчика другого элемента в причине возникновения дефекта. Для защиты от подобного обвинения разработчик программного элемента должен:
предусмотреть средства обработки ошибки, которые тестируют все вводы информации от других элементов системы;
провести тесты, моделирующие неудачные данные или другие потенциальные ошибки интерфейса ПС;
записать результаты тестов для использования их как доказательства невиновности в случае «указания причины»;
принять участие в планировании и проектировании системных тестов, чтобы гарантировать адекватное тестирование ПС.
Системные тесты должны проверять, что все системные элементы правильно объединены и выполняют назначенные функции. Рассмотрим основные типы системных тестов
ТЕСТИРОВАНИЕ ВОССТАНОВЛЕНИЯ
Многие компьютерные системы должны восстанавливаться после отказов и возобновлять обработку в пределах заданного времени. В некоторых случаях система должна быть отказоустойчивой, т.е. отказы обработки не должны быть причиной прекращения работы системы. В других случаях системный отказ должен быть устранен в пределах заданного кванта времени, иначе заказчику наносится значительный экономический ущерб.
Тестирование восстановления использует самые разные пути для того, чтобы заставить ПС отказать, и проверяет полноту выполненного восстановления. При автоматическом восстановлении системы оцениваются правильность повторной инициализации, механизмы копирования контрольных точек, восстановление данных, перезапуск. При ручном восстановлении оценивается, находится ли среднее время восстановления в допустимых пределах.
ТЕСТИРАНИЕ БЕЗОПАСНОСТИ
Компьютерные системы часто являются мишенью незаконного проникновения, од которым понимается широкий диапазон действий: попытки хакеров проникнуть в систему из спортивного интереса, месть рассерженных служащих и взлом мошенниками для незаконной наживы. Тестирование безопасности проверяет фактическую реакцию защитных механизмов, встроенных в систему на проникновение.
В ходе тестирования безопасности испытатель играет роль взломщика. Ему разрешено все:
попытки узнать пароль с помощью внешних средств;
атака системы с помощью специального утилита, анализирующих защиты;
подавление, ошеломление системы (в надежде, что она откажется обслуживать др. клиентов);
целенаправленное введение ошибок в надежде проникнуть в систему в ходе восстановления;
просмотр несекретных данных в надежде найти ключ для входа в систему.
Конечно, при неограниченном времени и ресурсах хорошее тестирование
безопасности
взломает любую систему. Задача проектировщика системы - сделать цену проникновения более высокой, чем цена получаемой в результате информации.
Существует 2 принципа тестирования программы: функциональное и структурное тестирование.
[При тестировании «белого ящика» известна внутренняя структура программы и исследуются внутренние элементы программы и связи между ними. Объект тестирования - внутреннее поведение программы. Проверяется корректность построения всех элементов программы и правильность их взаимодействия друг с другом. Такое тестирование характеризуется степенью , в какой тесты выполнят или покрывают логику (исходный текст) программы.
При тестировании «черного ящика» известны функции программы и исследуется работа каждой функции на всей области определения. Эти тесты демонстрируют: как выполняются функции программ, как принимаются исходные данные, как вырабатываются результаты, как сохраняется целостность информации.
При тестировании «черного ящика» рассматриваются системные характеристики программ, игнорируется их внутренняя логическая структура. Тестирование «черного ящика» реагирует на многие особенности программных ошибок.]
Тестирование программы как «черного ящика»(стратегия «черного ящика» определяет тестирование с анализом входных данных и результатов работы программы). Критерием исчерпывающего входного тестирования является использование всех возможных наборов входных данных.
Тестирование программы как «белого ящика» заключается в стратегии управления логикой программы, позволяет использовать ее внутреннюю структуру. Критерием выступает исчерпывающее тестирование всех маршрутов и управляющих структур программы.
НИСХОДЯЩЕЕ ПРОГРАММИРОВАНИЕ [top-down programming]
Способ разработки программ, при котором программирование ведется методом «сверху вниз», от общего к деталям. Алгоритм решения задачи разбивается на несколько более простых частей или подзадач. Их выделяют таким образом, чтобы программирование подзадач было независимым. При этом составляют план решения задачи, пунктами которого и являются выделенные части. План записывают графически в виде блок-схемы, где определяют головную и подчиненные подзадачи и связи между ними, т.е. интерфейс. Здесь же устанавливают, какие начальные данные (или аргументы) получает каждая подзадача для правильного функционирования и какие результаты она выдает. По блок-схеме составляется программа, в которой содержатся вызовы подпрограмм (процедур или функций), соответствующих выделенным подзадачам. Эту программу можно сразу отлаживать, временно заменив «заглушками» подпрограммы для подзадач. Затем аналогично производят детализацию и программирование каждой подзадачи. Процесс последовательной детализации идет до тех пор, пока не будет написана программа для каждого фрагмента алгоритма. При этом на каждом этапе нисходящего программирования имеется действующий вариант программы, отладка которой ведется по ходу всей разработки программы.
ЗАГЛУШКА [module stub] - фиктивная подпрограмма, имитирующая одну или несколько функций временно отсутствующего модуля разрабатываемой программы. Например, заглушка при модульном программировании для того, чтобы можно было проводить компиляцию, тестирование и отладку незаконченной программы, не дожидаясь, когда некоторые отсутствующие в ней модули будут разработаны в надлежащем виде и испытаны. В зависимости от функций заменяемого модуля заглушка может выдавать либо правдоподобный результат (например, значения из таблицы), либо некоторое сообщение (например, фиксирующее вызов отсутствующей подпрограммы).
ВОСХОДЯЩЕЕ ПРОГРАММИРОВАНИЕ [bottom up programming ].
Способ разработки программ, при котором программирование ведется методом «снизу-вверх», от деталей к общему. Сначала разрабатываются и тестируются функции (подпрограммы) нижнего уровня. Затем на их основе программируются функции более высокого уровня и т.д. При этом структура и функциональное назначение функции более высоких уровней вытекает из функций нижних уровней