- •Лекция 22. Этап «Разработка» программных продуктов
- •Первый этап: анализ и рационализация
- •Второй этап: реализация
- •Третий этап: аттестация
- •Управление рисками
- •Промежуточные этапы
- •Промежуточные версии для внутреннего пользования
- •Промежуточные версии для внешнего пользования
- •Пересмотренный план проекта
- •Пересмотренный график проекта
- •Пересмотренный сводный документ оценки рисков
- •Код и исполняемые модули
- •Средства повышения эффективности работы пользователей и сопроводительные материалы
- •Ориентация на отсутствие дефектов
- •Ежедневная сборка
Средства повышения эффективности работы пользователей и сопроводительные материалы
Диапазон средств повышения эффективности работы пользователей широк — от мастеров и документации до материалов для учебных курсов. Проектная группа должна совместными усилиями разработать все материалы, перечисленные в функциональных спецификациях и. работая в тесном контакте с пользователями, добиться стабильности работы промежуточных выпусков продукта.
Вот что пишет Стив Магуайр в своей книге «Debugging the Development Process»:
«Если, читая документацию, пользователь не испытывает затруднений, значит разработчики на верном пути. Создавая код, программист должен постоянно помнить о пользователях. Если написанный код кажется программисту недостаточно ясным или эффективным, впечатление пользователя скорее всего будет таким же».
При тестировании функциональных возможностей промежуточных версий продукта бета-тестеры не должны заниматься теми компонентами, качество кода которых не соответствует критериям качества. В противном случае заведомо некачественные компоненты будут влиять на общее впечатление от продукта, которое складывается у группы тестирования. При бета-тестировании не требуется добиваться идеальной работы приложения — проверяются только конкретные элементы, которые должны быть доведены до группы тестирования.
Тестирование
В этом разделе мы обсудим методы тестирования, которые помогают спроектировать и разработать удачный программный продукт. Мы обсудим тестирование промежуточных версий продукта, а также стратегию отсутствия дефектов, рецензирование кода и ежедневную сборку продукта.
Сводное тестирование промежуточных версий
Без тестирования можно обойтись лишь при «Стабилизации» — во всех остальных случаях это неотъемлемая часть процесса разработки.
На этапе одобрения плана проекта проектная группа намечает график тестирования и детально прорабатывает спецификации тестирования отдельных функциональных возможностей продукта.
Создание спецификации тестов надо завершить к этапу «Завершение разработки», поскольку на этом этапе функциональные возможности продукта фиксируются, а их расширение возможно лишь в следующих версиях. Реализацию продукта на этапе «Завершение разработки» следует рассматривать как альфа-версию для стадии «Стабилизация». Не следует путать эту альфа-версию с альфа- и бета-тестированием промежуточных версий на стадии «Разработка». Отметим, что часть операций по тестированию промежуточных версий на стадии «Разработка» повторится на стадии «Стабилизация».
С точки зрения тестирования переход от стадии «Разработка» к стадии «Стабилизация» — это переход от тестирования наличия функций к проверке их работоспособности и эффективности. Приведем некоторые примеры методов тестирования, применяемых на стадии «Разработка».
• Тестирование модулей — наиболее распространенный метод тестирования вручную. Отслеживание версий, верификация сборки и регрессионное тестирование, как правило, автоматизируют, поскольку эти операции выполняются регулярно в течение всего проекта. Тестирование модулей и функций позволяет разработчику находить ошибки раньше, чем они попадут к тестерам.
• Функциональные тесты — проверка наличия конкретных функций приложения и их работоспособности.
• Тесты перед сдачей версии модуля — это простые автоматизированные тесты, которые выполняются перед сдачей новой версии модуля в базы данных исходных текстов проекта.
Иногда используются и другие методы тестирования.
• Проверка сборки — обычно выполняется после ежедневной сборки приложения, чтобы удостовериться, что она прошла успешно.
• Регрессионное тестирование — автоматизированный тест, проводимый после ежедневной сборки для проверки работоспособности всех функций предыдущей сборки в новой версии.
Теперь рассмотрим примеры методов тестирования, характерных для стадии «Стабилизация».
• Тестирование конфигурации — проверяет работоспособность продукта на аппаратно-программной платформе.
• Тестирование совместимости — проверка корректности взаимодействия приложения с другими программами.
• Тестирование под нагрузкой — работа приложения в условиях критической нагрузки. Цель такого тестирования — определить предельно допустимую нагрузку, включая такие факторы, как использование памяти, дисковой подсистемы, работу в условиях высокой нагрузки на сеть и при большом числе пользователей.
• Тестирование производительности — исследование производительности приложения; взаимосвязано с тестированием под нагрузкой,
• Проверка документации и справочной системы — выявление ошибок и несоответствий в документации и справочных материалах.
Альфа-тестирование — первая проверка полнофункциональной версии продукта. Бета-тестирование — проверка продукта группой внешних пользователей, часто позволяющая выявить проблемы, незамеченные проектной группой. Несмотря на широко распространенное мнение, что ошибка — это какая-то неточность в программе, программисты считают огрехи программирования лишь частным случаем ошибки. Вообще, ошибкой называется любая проблема, выявленная при использовании разрабатываемого продукта.
Классификация ошибок позволяет определить их приоритет и опасность. При этом следует изучать серьезность проблемы (влияние неисправленной ошибки на работу приложения) и ее приоритет (важность исправления ошибки для сохранения стабильности приложения). Наличие ошибок со степенью серьезности или приоритетом следует рассматривать как препятствие выпуску текущей версии приложения.