Разделы портала

Онлайн-тренинги

.
Технология каскадного тестирования программного обеспечения
29.09.2008 14:48

Автор: Антон Михайлов

За последнее время компьютерные системы и выполняемое на них программное обеспечение проникло во все области человеческой деятельности. С ростом компьютерных технологий предъявляются все более высокие требования к качеству создаваемого программного продукта и его последующего сопровождения. Вместе с тем повышаются требования к разработчикам и тестировщикам в плане обеспечения должного уровня качества программного обеспечения, которое смогло бы удовлетворить потребителя. Каскадная модель тестирования программных продуктов предполагает выполнение процедур статического и динамического тестирования.

Наша компания ООО «ИМС-Информ» ориентирована на разработку и внедрение передовых и конкурентоспособных технологий для нефтегазовой промышленности. Поэтому программное обеспечение подлежит обязательному тестированию. Используемая нами в ООО «ИМС-Информ» каскадная модель тестирования программных продуктов (схема 1) предполагает выполнение процедур статического и динамического тестирования. Представленный материал является подтверждением соответствия между общепринятыми этапами тестирования и нашими практическими шагами в тестировании программного продукта отрасли.



Открыть схему крупнее

Статическое тестирование — процедура выявления дефектов в продукте без прогона программного кода, т.е. проверка программы без запуска на машине.

  • Анализ требований.
    Процесс статического тестирования начинается с определения и анализа требований к системе. Изучаются существующие материалы и методические вопросы (техническое задание на разработку, рабочий и технический проект, пр.), уясняются основные используемые понятия, термины и определения, ожидаемые функциональные требования к системе, такие как требования к интерфейсу (описывает входы, получаемые из внешних систем, и выходы, направляемые во внешние системы. Накладываются ли на эти интерфейсы какие-то ограничения?), данным (описывают входные и выходные данные системы, формат данных, их хранение), производительности (описывают проблемы масштабирования и синхронизации, например, сколько пользователей одновременно должна обслуживать система), требования к пользователям и человеческому фактору (кто будет работать с программным обеспечением, учет необходимого уровня удобства и простоты использования), физическим средствам тестирования (операционная система под управлением которой выполняется программный продукт, и вычислительная платформа, на которой эксплуатируется система), безопасности (доступ к программному продукту и управление данными), документации (определяется в каком виде она должна быть и должна ли быть вообще), устранению неисправностей (реакция системы на неисправности), сопровождению (определяется, как производится устранение проблем обнаруженных в системе).
  • Планирование испытаний.
    Для того чтобы тестирование было эффективным, необходимо потратить значительные средства и усилия на планирование. Действия, выполняемые на стадии планирования испытаний, представляют собой подготовительные этапы для этапов системных и приемочных тестов. На этапе планирования определяется стратегия тестирования, производится оценка времени для проведения тестовых работ, определяется состав и структура испытательной системы (выявление аппаратных и программных средств тестирования), подготовка и утверждение плана проведения испытаний. План проведения испытаний дает описание подхода, который предусматривается задействовать при проведении тестирования, а также объем трудозатрат на тестирование.
  • Проектирование тестов.
    На этапе проектирования и разработки тестов определяются цели теста, спецификация для ввода каждого теста, тестовая конфигурация. Производится автоматизация часто используемых тестов, требующих больших затрат времени. Разрабатывается методика тестирования, обладающая требуемым уровнем детализации. В результате выполнения этих действий будет получен набор тестовых случаев, который может использоваться для проведения системных испытаний.

Следующая часть тестирования относится к этапам динамического тестирования. Динамическое тестирование состоит из прогона программного продукта и сравнения поведения системы с ожидаемым.

  • Реализация и отладка тестов.
    После этапа проектирования тест необходимо проверить на наличие дефектов с целью их немедленного устранения, и затем испытать на некоторой сборке программного продукта. После прогона тестов необходимо провести анализ неудачных исходов прогона тестов, выяснить причину источника неудачи теста — программный код или сам тест.
  • Системное тестирование.
    Входными данными для системного тестирования являются набор завершенных отлаженных тестов. Системное тестирование проводится для удостоверения того, что программное обеспечение делает именно то, что от него ожидает пользователь. Используются два основных типа испытаний: функциональная проверка и испытания для определения рабочих характеристик.

    Функциональная проверка использует набор тестов, которые определяют, выполняет ли система все то, что она должна делать с точки зрения пользователя. Производится тестирование функций программного продукта (т.е. поиск различий между разработанной программой и ее внешней спецификацией). Проверяются наличие всех функциональных требований технического задания; корректность и полнота выполняемых функций. Проводятся многократное тестирование каждой функции системы, всех функций системы, множества их сочетаний, имитация и проверка на наличие сбоев применительно к каждому функциональному требованию.

    После того, как тестирование подтвердило адекватность базовой функциональности системы, задачей тестирования становятся испытания для определения рабочих характеристик. В рамках данной задачи выполняется тестирование в предельных режимах, нагрузочные испытания (так например, если программа рассчитана на подключение к ней большого числа пользователей (БД, терминальный режим доступа или же режим клиент — сервер), то ее необходимо тестировать при максимально возможной нагрузке. Для программ, выполняющих операции «запись-чтение», проводится тестирование операций обработки больших массивов данных с оценкой изменения времени отклика для выявления коэффициента пропорциональности падения быстродействия с увеличением количества обрабатываемых данных.), контроль синхронизации. Испытания на надежность и эксплуатационную готовность. Также проводится ряд дополнительных испытаний, таких как проверка безопасности, установочная проверка, проверка на совместимость, проверка удобства и простоты использования (GUI), проверка возможности наращивания.
  • Приемочные испытания.
    По завершении системного тестирования продукт может быть передан пользователю для проведения приемочных испытаний. Производится бета тестирование, также возможен случай, когда заказчик выполняет заранее определенный набор тестовых случаев, имитирующих типовые условия, в которых система будет работать после ввода в эксплуатацию. Заключительным типом приемочных испытаний является установочная проверка, по условиям которой завершенная версия программного продукта устанавливается на площадках заказчика с целью получить от него подтверждение, что программный продукт соответствует всем требованиям.
  • Сопровождение.
    Сопровождение обозначает проверку результатов исправления дефектов, которые были найдены заказчиком в процессе эксплуатации программного продукта, тестирование расширенных функциональных возможностей и выполнение регрессионных тестов на новых версиях программного продукта. Цель всего этого заключается в получении подтверждения того, что ранее исправно работавшие функциональные средства не пострадали от внесения изменений в программный продукт.

Библиографический список:

1. Быстрое тестирование. Автор — Роберт Калбертсон, Крис Браун, Гэри Кобб. Изд. Вильямс 2002.
2. Автоматизированное тестирование программного обеспечения. Автор — Элфрид Дастин, Джефф Рэшка, Джон Пол. Изд. Лори 2003.