Методы и средства инженерии программного обеспечения

Тестирование ПО (Software Testing)


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

Область знаний «Тестирование ПО (Software Testing)» включает  следующие разделы:

– основные концепции и определение тестирования  (Testing Basic Concepts and definitions),

– уровни тестирования (Test Levels),

– техники тестирования  (Test Techniques),

–  метрики тестирования (Test Related Measures),

– управление процессом тестирования  (Managing the Test Process).

 

Основная  концепция тестирования базируется на терминологии, теории и инструментах   подготовки и проведения процесса тестирования ПО, а также   оценке данных статистического анализа процесса тестирования. При тестировании выявляются  недостатки: отказы (faults) и  дефекты (defects), как причины нарушения работы системы, сбои (failures), как нежелательные ситуации, ошибки (errors), как последствия сбоев и др. Базовым понятием тестирования является тест, который выполняется в заданных условиях и на  наборах данных.  Тестирование считается успешным, если найден дефект или ошибка, и они устраняются. Степень тестируемости зависит от задания критериев покрытия системы тестами и вероятности появления сбоев. Данные базовые понятия  зависят от уровня, видов и техник тестирования ПО.

 

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

 –  тестирование отдельных элементов, которое заключается  в  проверке  отдельных,  изолированных и независимых  частей ПО;

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



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


 

К видам тестирования относятся:

 – функциональное тестирование,  которое заключается в проверке соответствия выполнения  специфицированных  функций;

– регрессионное  тестирование –  тестирование системы или ее компонентов после внесения в  них изменений;

 – тестирование  эффективности – проверка производительности,  пропускной способности, максимального объема данных и системных ограничений в соответствии со спецификациями требований;

 – нагрузочное (стресс) тестирование – проверка поведения системы при максимально допустимой нагрузке или  при  превышении;

 – альфа и бета-тестирование – внутреннее и внешнее тестирование системы. Альфа – без плана, бета  с планом  тестирования;

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

К видам тестирования  относятся  также подходы и методы  проверки поведения системы на этапе  испытания ПО и  приемки в соответствии с  требованиями и  заданными параметрами относительно  состава ПО,  количества и типа   компьютеров, среды  и ОС.

 

Техники тестирования бывают таких видов:

 –  «белый (стеклянный) ящик», основанный на задании информации о структуре ПО или системе;

 – «черный ящик»,  основанный на задании  тестовых наборов данных для проверки  правильности работы компонентов и системы в целом без  знания  их структуры;

– основанные на  спецификациях, анализе граничных значений, таблицах принятия решений, критериев потоков данных,  статистики отказов и др.;

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

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

 

Управление тестированием это:

– планирование процесса тестирования (составление планов, тестов, наборов данных) и  измерение  показателей качества ПО;

– проведение тестирования reuse-компонентов и паттернов, как  основных объектов  сборки ПО; 



– генерация необходимых  тестовых сценариев, соответствующих  среде выполнения ПО;

– верификация правильности реализации системы и валидация реализованных требований к ПО;

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

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

Стандарт  ISO/IEC, ГОСТ 12207   не выделяет деятельность по тестированию в качестве самостоятельного процесса, а рассматривает тестирование, как  необъемлемую часть  ЖЦ.

 

Измерение результатов тестирования.  Измерение, как часть планирования и разработки тестов, базируется на размере программ, их структуре и количестве обнаруженных дефектов. Метрики тестирования обеспечивают измерение процесса  планирования,  проектирования и тестирования; а также результатов тестирования на основе таксономии отказов и дефектов, покрытия  границ тестирования, проверки  потоков данных и др. Документация на тестирование включает, согласно стандарту IEEE 829-98, описание тестовых документов, их связи между собой и с процессом тестирования.  Без документации по процессу тестирования, невозможно провести сертификацию продукта и оценку модели СММ1 [22]. После завершения тестирования рассматриваются вопросы стоимости и рисков, связанных с появлением сбоев и недостаточно надежной работой системы. Стоимость тестирования является одним из ограничений, на основе которого принимается решение о прекращении  или продолжении тестирования.

 

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


Содержание раздела