Организация подготовки тестов
Для проверки правильности программ специально разрабатываются тесты и тестовые данные. Под тестом понимается некоторая программа, предназначенная для проверки работоспособности другой программы и обнаружения в них ошибочных ситуаций. Тестовую проверку можно провести также путем введения в проверяемую программу отладочных операторов, которые будут сигнализировать о ходе ее выполнения и получения результатов.
Тестовые данные служат для проверки работы системы и готовятся разным способом: генератором тестовых данных, проектной группой на основе внемашинных документов или имеющихся файлов, пользователем по спецификациям требований и т.д. Очень часто разрабатываются специальные формы входных документов, в которых отображается процесс выполнения программы с помощью тестовых данных.
Создаются тесты, проверяющие:
– полноту функций;
– согласованность интерфейсов;
– корректность выполнения функций и правильность функционирования системы в заданных условиях;
– надежность выполнения системы;
– защиту от сбоев аппаратуры и не выявленных ошибок и др.
Тестовые данные готовятся как для проверки отдельных программных элементов, так и для групп программ или комплексов на разных стадиях процесса разработки. На рис. 7.5 приведена классификация тестов проверки по объектам тестирования на основных стадиях разработки.
Многие типы тестов готовятся заказчиком для проверки работы программной системы. Структура и содержание тестов зависят от вида тестируемого элемента, которым может быть: модуль, компонента, группа компонент, подсистема или система. Некоторые тесты зависят от цели и необходимости знать: работает ли система в соответствии с ее проектом, удовлетворены ли требования и участвует ли заказчик в проверке работы тестов и т.п.
Тестирование Тестирование Тестирование Тестирование
спецификаций программ комплекса при испытаниях
Тесты проверки: Тесты проверки: Тесты проверки: Тесты проверки:
– полноты и согласо– – структуры програм– –– структуры комплек– – соответствия тре–
ванности функций; мы; са; бованиям;
– согласованности – вычислений и пре– – интерфейса компо– – удобства установки
интерфейсов образования данных; нент; рабочей версии;
– полноты выполняе– – ограничений по – работы комплекса
мых функций памяти; на оборудовании;
– длительности испо– – удобства интерфей–
нения; са пользователя;
– полноты решения – удобства модифика–
задач комплекса ции и сопровождения
Рис.7.5 Классификация тестов проверки
В зависимости от задач, которые ставятся перед тестированием программ, эта команда составляет тесты проверки промежуточных результатов проектирования элементов системы на стадиях ЖЦ, а также создает тесты испытаний окончательного кода системы.
Тесты интегрированной системы.Тесты для проверки отдельных элементов системы и тесты интегрированной системы имеют общие и отличительные черты. Так, на рис.7.6 в качестве примера приведены шаги стадии интеграции системы из готовых оттестированных элементов, заданы связи между разными шагами тестирования интегрируемой программной системы.
Для каждого шага команда тестировщиков готовит тесты и наборы данных, используемые для проверки разных состояний интегрированной системы и соответствий с принятыми ограничениями на каждом шаге и требованиями к элементу тестирования.
Первый шаг этого процесса – интеграция элементов, которая основывается на интеграционных тестах, создаваемых по спецификациям проекта. Рассмотрим этот шаг более подробно на примере схемы (рис. 7.4) интеграции отдельных элементов.
Каждая компонента этой схемы тестируется отдельно от других компонент с помощью тестов, включающих наборы данных и сценарии, составленные в соответствии с их типами и функциями, специфицированными в проекте системы. Тестирование проводится в контрольной среде на предопределенном множестве тестовых данных и операциях, производимыми над ними.
Тесты обеспечивают проверку внутренней структуры, логики и граничных условий выполнения каждой компоненты.
Согласно приведенной схеме, вначале тестируются компоненты А, В, D независимо друг от друга и каждая с отдельным тестом. После их проверки выполняется следующий шаг – проверка интерфейсов для последующей их интеграции, суть которой заключается в анализе выполнения операторов вызова А à E, B à C, D à G, на нижних уровнях графа: компоненты – Е, С, G. При этом предполагается, что указанные вызываемые компоненты так же должны быть отлажены отдельно. Аналогично проверяются все обращения к компоненте F, являющейся связывающим звеном с вышележащими элементами.
Тести – Тести– Тести–
рование рование рование
А В D
Тести– Тести– Тести–
рование рование рование
А, Е В, С D, G
F
Тестирование
интеграции элементов
A, B, C, D, E, G
Рис.7.4. Интеграционное тестирование компонент
При этом могут возникать ошибки, в случае неправильного задания параметров в операторах вызова или при вычислениях процедур или функций. Возникающие ошибки в связях устраняются, а затем повторно проверяется связь с компонентой F в виде троек: компонента – интерфейс – компонента.
Следующим шагом тестирования системы является проверка функционирования системы с помощью тестов проверки функций и требований к ним. После проверки системы на функциональных тестах идет проверка системы на исполнительных и испытательных тестах, подготовленных согласно требований к ПО, аппаратуре и выполняемым функциям. Испытательному тесту предшествует верификация и валидация ПО.
Тест испытаний системы в соответствии с требованиями заказчика проверяется в реальной среде, в которой система будет в дальнейшем использоваться.
Команда тестировщиков
За функциональные и исполнительные тесты несут ответственность разработчики, а заказчик больше влияет на составление тестов испытаний и инсталляции системы.
Для этих целей, как правило, создается служба проверяющих ПС в виде команды тестировщиков, которая не зависит от штата разработчиков ПС. Ннекоторые члены этой команды являются опытными или даже профессионалами в этой области. К ним относятся аналитики, программисты, инженеры–тестировщики, которые посвящают все время проблемам тестирования систем. Они имеют дело не только со спецификациями, но и с методами и средствами тестирования, организуют создание и выполнение тестов на машине. С самого начала создания проекта тестировщики включают в процесс планы составления тестовых наборов и сценариев, а также графиков выполнения тестов.
Профессиональные тестировщики работают совместно с группой управления конфигурацией, чтобы обеспечить их документацией и другими механизмами для связи между собой тестов с требованиями проекта, конфигурацией и кодом. Они разрабатывают методы и процедуры тестирования. В эту команду включаются дополнительные люди, которые знакомы с требованиями системы или с подходами к их разработке. Аналитиков включают в качестве членов команды, так как они понимают проблемы определения спецификаций заказчиков.
Многие специалисты сравнивают тестирование системы с созданием новой системы, в которой аналитики отражают потребности и цели заказчика, работая совместно с проектировщиками и добиваясь реализации идей и принципов работы системы.
Проектировщики системы сообщают команде тестировщиков проектные цели, чтобы они знали декомпозицию системы на подсистемы и функции, а также принципы их работы. После проектирования тестов и тестовых покрытий команда тестировщиков подключает проектантов для анализа возможностей системы.
Так как тесты и тестовые сценарии являются прямым отражением требований и проекта в целом, перспективы управления конфигурацией системы определяются именно этой командой. Встречаемые ошибки в программе и изменения в системе отражаются в документации, требованиях, проекте, а также в описаниях входных и выходных данных или в других разрабатываемых артефактах. Вносимые изменения в процессе разработки приводят к модификации тестовых сценариев или в большей части к изменению планов тестирования. Специалисты по управлению конфигурацией учитывают эти изменения и координируют составление тестов.
В команду тестировщиков входят также пользователи. Они оценивают получаемые результаты, удобство использования, а также высказывают свое мнение о принципах работы системы.
Уполномоченные заказчика планируют работы для тех, кто будет использовать и сопровождать систему. При этом они могут привнести некоторые изменения в проект из–за неполноты заданных требований и сформулировать системные требования для проведения верификации системы и принятия решений о ее готовности и полезности.
План тестирования. Для проведения тестирования создается план (Test Plan), в котором описываются стратегии, ресурсы и график тестирования отдельных компонент и системы в целом. В плане отмечаются работы для разных членов команды, которые выполняют определенные роли в этом процессе. План включает также места теста в каждом процессе, степень покрытия программы тестами и процент тестов, которые выполняются со специальными результатами.
Тестовые инженеры создают множество тестовых сценариев (Test Cases), каждый из которых проверяет результат взаимодействия между актером и системой на основе определенных пред– и пост–условий использования таких сценариев. Сценарии в основном относятся к тестированию по типу белого «ящика» и ориентированы на проверку структуры и операций интеграции компонентов системы.
Для проведения тестирования тестовые инженеры предлагают процедуры тестирования (Test Procedures), включающие валидацию объектов и верификацию тестовых сценариев в соответствии с планом графикам. Оценка тестов (Test Evaluation) заключается в оценке результатов тестирования и степени покрытия программ сценариями и статуса полученных ошибок. На рис. 7.5. приведен круг обязанностей тестового инженера.
Тестировщик интегрированной системы проводит тестирование интерфейсов и оценку результатов выполнения соответствующих тестов. И наконец, тестовик системы является ответственным за выполнение системных тестов и проведенного тестирования предыдущими членами команды. При выполнении системных тестов, как правило, находятся дефекты, являющиеся результатом глубоко скрытых погрешностей в программах, обнаруживаемых при длительной прогонке системы на тестовых данных и сценариях.
Teстировщик
Программы Тестовые Тестовые Оценка План
тестов ситуации процедуры тестов теста
Рис.7.5. Ответственности инженера– тестировщика