Иерархическая структура процесса тестирования сложного программного обеспечения

УДК 004-4

ИЕРАРХИЧЕСКАЯ СТРУКТУРА ПРОЦЕССА ТЕСТИРОВАНИЯ СЛОЖНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

А.Д. Данилов, А.И. Фёдоров

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

Ключевые слова: тестирование, программное обеспечение, системный анализ

На сегодняшний день важную роль играет создание высокоэффективных программных продуктов отвечающих всем требованиям и условиям современности. [1] От работы программ зависит уровень развития современной экономики .

Поэтому контроль качества является одной из наиболее важных областей в современной разработке программного обеспечения. Понятие качества программного обеспечения (ПО) в соответствии со стандартом ISO 9126 определяется такими понятиями как:

1) функциональность,

2) надёжность,

3) удобство использования

4) удобство сопровождения

5) эффективность

6) портативность

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

Цель статьи - декомпозировать систему на элементарные составляющие для того чтобы, в дальнейшем, оптимизировать процесс управления.

Тестирование представляет собой многоуровневую систему, которая

характеризуется множеством различных свойств:

- сложность структуры,

- многофункциональность,

- автоматическое, решающее и самоорганизующееся поведение,

Данилов Александр Дмитриевич - ВГТУ, д-р техн. наук, профессор, е-таП:ёаш1оу-аё@уа.ги Фёдоров Александр Игоревич- ВГТУ, аспирант, е-mai1:a1femmm@gmai1.com

- централизованное^.

Можно выделить три подсистемы, которые используют разные подходы, методы, объекты тестирования: функциональное тестирование, нефункциональное тестирование,

тестирование, связанное с изменениями. Более подробно можно увидеть на рисунке.

Функциональное тестирование проверяет соответствие конечного продукта

функциональным требованиям, безопасности, соответствие правилам и стандартам, способности к взаимодействию. Выделяется несколько видов функционального

тестирования:

- собственно, функциональное тестирование,

- тестирование взаимодействия.

Тестирование взаимодействия определяет

насколько легко данное приложение способно взаимодействовать с другими системами и приложениями. Например, одной из важных характеристик взаимодействия в веб-технологиях является время работы приложения - чем меньше время обработки запроса, тем лучше приложение способно к взаимоде йствию.

Функциональное тестирование проверяет работу приложения на соответствие его спецификации. Типичное функциональное тестирование включает в себя пять шагов:

- Описание функциональных возможностей, которые должны выполняться.

- Создание входных данных на основе спецификаций для данной функции.

-Определение выходных данных на основе спецификаций для данной функции.

-Исполнение тест кейса.

- Сравнение полученных результатов и ожидаемых результатов (они описываются при определении выходных данных).

Иерархическая структура тестирования ПО

Нефункциональное тестирование

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

тестирования:

- нагрузочное тестирование,

- тестирование установки,

- тестирование удобства пользования,

- тестирование на отказ и восстановление,

- конфигурационное тестирование,

- тестирование безопасности,

- тестирование документации,

- объёмное тестирование,

- тестирование масштабируемости,

- стресс тестирование. [2]

Нагрузочное тестирование — это процесс,

в котором на систему или устройство подаётся определённая нагрузка, а затем измеряется способность системы к адекватной реакции на эту нагрузку.

Тестирование установки включает в себя проверку полной и частичной инсталляции,

обновления и удаления приложения.

Тестирование удобства пользования производит сравнение на соответствие современным требованиям к удобству, эти требования могут быть как

документированными, так и нет.

Тестирование на отказ и восстановление отвечает на вопрос насколько приложение способно к восстановление после программных и аппаратных сбоев.

Конфигурационное тестирование

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

Тестирование безопасности выявляет критические ошибки, связанные с защищённостью пользовательских данных.

Тестирование документации детектирует пробелы и противоречия в документированном описании системы, которые в дальнейшем могут привести к критическим ошибкам и сбоям в работе приложения.

Объёмное тестирование оценивает

производительность приложения при определённом количестве входных данных.

Тестирование масштабируемости

устанавливает, насколько корректно система справляется с понижением и повышением нагрузки на систему.

Стресс тестирование проверяет работу системы в экстремальных условиях и их точках пересечения с нормальными условиями.

Тестирование, связанное с изменениями, отслеживает сохранность всего функционала и работоспособности системы после появления изменений в программном коде или аппаратной части. Существуют следующие виды:

- «дымовое» тестирование,

- регрессионное тестирование,

- тестирование сборки,

- санитарное тестирование.

«Дымовое» тестирование представляет

собой обзорное поверхностное тестирование, которое определяет степень готовности к более обстоятельному тестированию.

Регрессионное тестирование применяется в тех случаях, когда нужно знать, что после внесения новых изменений, старая функциональность по-прежнему работает корректно.

Тестирование сборки проверяет текущую версию системы перед началом углубленного изучения, тесты преимущественно

автоматические.

Санитарное тестирование включает в себя тесты, которые являются подмножеством набора тестов регрессионного тестирования.

Теперь рассмотрим уровни и подуровни каждого вида тестирования, которые являются общими для всех элементов более высоких уровней.

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

Системное тестирование (высокий уровень) проверяет работу всего приложения в целом, в том виде, в каком приложение предоставляется системным архитекторам и руководителям разработки.

Выделяют два подхода к системному тестированию: на базе требований и на базе случаев использования. На базе требований пишутся только тестовые сценарии по спецификации, в то время как на базе случаев использования описываются варианты использования и уже по ним пишутся тестовые сценарии.

Интеграционное тестирование (средний уровень) проверяет согласованность работы отдельных компонентов и подсистем, в том виде, в каком они предоставляются разработчикам приложения. Выделяют два уровня интеграционного тестирования: компонентный и системный. В компонентном работа ведётся только с компонентами одной системы, в системном ведётся работа с различными подсистемами. Возможны следующие подходы: снизу-вверх, вначале тестируются низкоуровневые модули, затем они объединяются, и тестируются более высокоуровневые модули, этот процесс повторяется до определённого момента. Сверху-вниз - вначале тестируются высокоуровневые модули, затем они разбиваются на низкоуровневые, после этого этот процесс повторяется вновь. Большой взрыв - происходит сбор всех модулей, и они тестируются.

Модульное тестирование (низкий уровень) проверяет работу отдельных модулей и компонентов, в том виде, в каком они предоставляются разработчикам приложения.

По виду представления приложения происходит разделение на: белый ящик, серый ящик, чёрный ящик. Белый ящик

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

Тест-кейс представляет собой

минимальную структурную единицу тестирования, через которую задаётся набор требований и условий для данного конкретного испытания при определённом виде тестирования. Тест кейс представляет собой пошаговое описание тестовой ситуации, воспроизведение которого позволяет получать одинаковые результаты с очень высокой степенью вероятности. Тестовая ситуация формализуется в соответствии с техническим заданием. Чем сложнее пользовательский интерфейс, тем нестабильнее могут быть результаты тестов. Также в тест кейс включается описание тестового окружения: операционная система, версии программ, аппаратные ресурсы и другие характеристики.

Заключение. В статье рассмотрена иерархическая структура процесса

тестирования, она рассматривается как основа системы управления, которая позволит улучшить процесс тестирования программного обеспечения. Эта система рассматривает в качестве основы тест-кейс, что позволяет вводить математические модели и метрики, основанные на нём. Новые метрики и подходы в оценке качества и эффективности тестирования очень важны, поскольку они помогают выбрать наиболее подходящие методы и способы тестирования программного продукта и в тоже время развивают всю область тестирования в целом.

Литература

1. Канер С., Нгуен Е.К., Фолк Дж., Тестирование программного обеспечения.Фундаментальные концепции менеджмента бизнес-приложений: Пер. с англ. -К: Диасофт, 2001. - 544 с.

2. Майерс Г.Искусство тестирования программ/ Пер. С англ. под ред. Б. А. Позина. - М.: Финансы и статистика, 1982. - 176 с.

3. Подвальный, С. Л.Многоальтернативные системы: обзор и классификация[Текст] / Подвальный С.Л.// Системы управления и информационные технологии. -2012. - № 2(48). - С. 4-13.

4. Подвальный, С. Л.Информационно-управляющие системы мониторинга сложных объектов / С. Л.Подвальный - Воронеж. - 2010.

5. Подвальный, С. Л.Имитационное управление технологическими объектами с гибкой структурой/С. Л. Подвальный,В.Л.Бурковский- Воронеж.- 1988.

6. Подвальный, С. Л. Интеллектуальные системы моделирования: принципы разработки[Текст] / С.Л. Подвальный,Т.М.Леденева// Системы управления и информационные технологии. - 2013. -№ 1(51). - С. 4-10.

Воронежский государственный технический университет

HIERARCHICAL STRUCTURE OF THE PROCESS OF TESTING COMPLEX SOFTWARE

A.D. Danilov, A.I. Fedorov

The article describes types and levels of software testing and overviews hierarchical structure of testing terms system analysis. There are three major subsystems: functional testing, non-functional testing, testing associated with the changes. They, in turn, are pick out sub of testing in which common elements are described in order to find the component parts, on which process of control can be optimized

Key words: testing, software, system analysis