- •Ю.М. Бородянский
- •Содержание
- •1. Верификация информационных систем
- •1.1. Концепция тестирования
- •1.2. Основная терминология
- •1.3. Организация тестирования
- •1.3.1. Три фазы тестирования
- •1.4. Требования к идеальному критерию тестирования
- •1.5. Классы критериев
- •1.5.1. Структурные критерии (класс I).
- •1.5.2. Функциональные критерии (класс II)
- •1.5.3. Стохастические критерии (класс III)
- •1.5.4. Мутационный критерий (класс IV)
- •1.6. Оценка Покрытия Программы и Проекта
- •1.7. Типы процессов тестирования и верификации и их место в различных моделях жизненного цикла
- •1.7.1. Модульное тестирование
- •1.7.2. Интеграционное тестирование
- •1.7.3. Системное тестирование
- •1.7.4. Нагрузочное тестирование
- •1.7.5. Формальные инспекции
- •1.8. Системное тестирование
- •1.8.1. Задачи и цели системного тестирования
- •1.8.2. Виды системного тестирования
- •1.8.3. Системное тестирование, приемо-сдаточные и сертификационные испытания при разработке сертифицируемого программного обеспечения
- •1.9. Задачи и цели процесса верификации
- •1.10. Тестирование, верификация и валидация – различия в понятиях
- •1.11. Документация, создаваемая на различных этапах жизненного цикла
- •1.12. Документация, сопровождающая процесс верификации и тестирования
- •1.12.1. Технологические процессы верификации и роли в проекте, документация, создаваемая в ходе жизненного цикла проекта, ее назначение
- •1.12.3. Стратегия и планы верификации
- •1.13. Тест-требования
- •1.13.1. Технологические цепочки и роли участников проекта, использующих тест-требования. Связь тест-требований с другими типами проектной документации.
- •1.13.2. Свойства тест-требований
- •1.13.3. Тест-планы
- •1.13.3.1 Технологические цепочки и роли участников проекта, использующих тест-планы. Связь тест-планов с другими типами проектной документации.
- •1.13.4. Возможные формы подготовки тест-планов
- •1.13.5. Сценарии
- •1.14. Формальные инспекции
- •1.14.1. Задачи и цели проведения формальных инспекций
- •1.14.2. Этапы формальной инспекции и роли ее участников
- •1.14.2.1. Инициализация
- •1.14.2.2. Планирование
- •1.14.2.3. Подготовка
- •1.14.2.4. Обсуждение
- •1.14.2.5. Завершение
- •1.14.3. Документирование процесса формальной инспекции
- •1.14.3.1. Бланк инспекции
- •1.14.3.2. Титульный лист
- •1.14.3.3. Список контрольных вопросов
- •1.14.3.4. Список несоответствий
- •1.14.3.5. Колонтитул
- •1.14.4. Жизненный цикл инспектируемого документа
- •1.14.5. Формальные инспекции программного кода
- •1.14.5.1.. Особенности этапа просмотра инспектируемого кода
- •1.14.5.2. Особенности этапа проведения собрания
- •1.14.5.3. Особенности этапа завершения и повторной инспекции
- •1.14.6. Формальные инспекции проектной документации
- •1.14.6.1. Особенности этапа просмотра документации
- •1.14.6.2.. Особенности этапа завершения
- •2. Сопровождение информационных систем
- •2.1. Введение
- •2.2. Организация процесса сопровождения
- •2.3. Методы сопровождения
- •2.3.1. Анализ влияния факторов
- •2.3.2. Обратное проектирование
- •2.3.3. Реинжиниринг
- •2.3.4. Рефакторинг
- •2.3.5. Унаследованные приложения
- •2.3.6. Обновление документации
- •2.4. Стандарт ieee 1219-1992
- •5. Системное тестирование
- •2.5. Управление сопровождением
- •2.6. Качество сопровождения
- •2.6.1. Метрики сопровождения
- •2.6.2. Применение метрик сопровождения
- •2.6.3. Удобство сопровождения
- •2.7. Подведение итогов
1.12. Документация, сопровождающая процесс верификации и тестирования
1.12.1. Технологические процессы верификации и роли в проекте, документация, создаваемая в ходе жизненного цикла проекта, ее назначение
В ходе работы над проектом по созданию любой сложной программной системы создается большое количество проектной документации. Основное ее назначение – координация совместных действий большого количества разработчиков в течение более или менее длительных промежутков времени – в процессе первоначальной разработки системы, в процессе выполнения работ по ее модификации, в процессе сопровождения.
Структурный состав проектной документации в большинстве проектов практически одинаков – это требования к системе различного уровня (системные, функциональные и структурные), описание ее архитектуры, программный код, тесты и документы, сопровождающие процесс внедрения (руководства по установке, настройке, пользовательские руководства).
Поскольку верификация программной системы (в оптимистичном случае) выполняется в течение всего жизненного цикла разработки достаточно большим коллективом разработчиков, при тестировании создается тестовая документация.
Основное ее назначение, помимо синхронизации действий тестировщиков различных уровней – обеспечение гарантий того, что тестирование выполняется в соответствии с выбранными критериями оценки качества, а также того, что все аспекты поведения системы протестированы. Кроме того, тестовая документация используется при внесении изменений в систему для проверки того, что как старая, так и новая функциональность работает корректно (Рис. 1.13).
Перед началом верификации менеджером тестирования (test manager) создается документ, называемый планом верификации (или планом тестирования, но это не то же самое, что тест-план). План тестирования – организационный документ, содержащий требования к тому, как должно выполняться тестирование в данном конкретном проекте.
В нем определяются общие подходы к согласованию процессов разработки и верификации, определяются методики проведения верификации, состав тестовой документации и ее взаимосвязь с документацией разработчиков, сроки различных этапов верификации, различные роли и квалификация тестировщиков, необходимые для выполнения всех работ по тестированию, требования к инструментам тестирования и тестовым стендам, оцениваются риски и приводятся пути для их преодоления.
В данном документе также определяются требования собственно к тестовой документации – тест-требованиям, тест-планам, отчетам о выполнении тестирования.
Согласно этим требованиям по системным и функциональным требованиям разработчиками тестов (test procedure developers) создаются тест-требования – документы, в которых подробно описано то, какие аспекты поведения системы должны быть протестированы. На основании описания архитектуры создаются низкоуровневые тест-требования, в которых описываются аспекты поведения конкретной программной реализации системы, которые необходимо протестировать.
Рис. 1.13 Документация, сопровождающая процесс верификации
На основании тест-требований разработчиками тестов (test developers) создаются тест-планы – документы, которые содержат подробное пошаговое описание того, как должны быть протестированы тест-требования.
На основании тест-требований и проектной документации разработчиков также создается тестовое окружение, необходимое для корректного выполнения тестов на тестовых стендах – драйверы, заглушки, настроечные файлы и т.п.
По результатам выполнения тестов тестировщиками (testers) создаются отчеты о выполнении тестирования (они могут создаваться либо автоматически, либо вручную),которые содержат информацию о том, какие несоответствия требованиям были выявлены в результате тестирования, а также отчеты о покрытии, содержащие информацию о том, какая доля программного кода системы была задействована в результате выполнения тестирования.
По несоответствиям создаются отчеты о проблемах – документы, которые направляются на анализ в группу разработчиков с целью определения причины возникновения несоответствия.
Изменения в систему вносятся только после всестороннего изучения этих отчетов и локализации проблем, вызвавших несоответствие требованиям. Для того, чтобы процесс изменений не вышел из под контроля и любое изменение протоколировалось (и связывалось с тестами, обнаружившими проблему), создается запрос на изменение системы. После завершения всех работ по запросу на изменение процесс тестирования повторяется до тех пор, пока не будет достигнут приемлемый уровень качества программной системы.
Форматы различных тестовых документов описаны в стандартах IEEE 1012 и IEEE 829 , при дальнейшем изложении мы будем придерживаться духа этих стандартов.
Следует особо отметить, что все документы должны иметь уникальные идентификаторы и храниться в единой базе документов проекта. Это позволит сохранить управляемость процессом тестирования и поддерживать необходимое качество разрабатываемой системы. Нет ничего хуже ситуации, в которой найденная проблема не была исправлена из-за того, что отчет о ней был утерян и не попал к разработчику.