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