Тестирование ПО (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 представляет разработчику методы проверки правильности ПО: верификация, валидация, тестирование. Определяются типы, уровни и техники тестирования ПО, методы планирования процесса и тестовых наборов данных для прогонки ПО в режиме испытания конкретного модуля или системы в целом, а также методы измерения результатов тестирования.

Наши рекомендации