Lecture 06 11/24/2011 3:33:00 PM Фазы тестирования. Наиболее

advertisement
Lecture 06
1/23/2016 7:19:00 AM
Фазы тестирования.
Наиболее заметным процессом тестирования является исполнение тестов – выполнение тестовых сценариев.
Помимо этого необходимо проанализировать тесты, подготовить необходимый материал для тестов и
определиться с критерием окончания тестов. Очень сложно проводить тесты без решения того как, когда и
что тестить.
Стадии процесса тестирования
Для этого в процесс тестирования включены следующие стадии:
1. Test planning and control
2. Test analysis and design
3. Test implementation and execution
4. Evaluating exit criteria and reporting
5. Test closure activities
Несмотря на то, что эти стадии идут в строгой последовательности она не всегда строго соблюдается.
1. Test planning and control
Планирование (planning) - это определение того, что должно быть протестировано и того, как этого
достичь, определяется completion criteria.
Основные цели планирования:
 Определение областей и целей тестирования
 Определение подхода тестирования (объектов тестирования, рисков)
 Планирование анализа результатов
 Планирование времени исполнения заданий
 Определние выходного критерия
Контроль (control) – это определение того, что должно быть сделано, если исполняемые задачи не
совпадают с планом. Контроль осуществляется на протяжении всего тестирования – сравнивается прогресс
тестирования в с планом.
Цели контроля:
 Анализ результатов
 Сравнение текущего прогресса выполнения тестов с запланированым
 Исправление ошибок, если тестирование пошло не по плану
2. Test analysis and design
На этой стадии происходит детальное определение того, что должно быть протестировано и выбор
наименьшего списка тест кейсов, которое удовлетворяет заданым целям.
-
изучение требований к продукту, архитектуры, интерфейса
анализ тестируемых компонентов, спецификаций
создание тестов
определение степени готовности реквайрементов
3. Test implementation and execution
Эта стадия подразумивает исполнение тестов. Во время исполнения тестов производится сравнение между
полученым и ожидаемым результатом.
Test implementation and execution обычно включает следующие части:
 Создание кейсов, подготовка данных необходимых для тестирования, подготовка автоматических
инструментов
 Проверка среды тестирования на готовность
 Исполнение тестов (ручное или автоматическое тестирование)
1
Lecture 06


1/23/2016 7:19:00 AM
Сохранение результатов тестирования (статусов, версий компонентов и т.п.)
Сравнение полученых и ожидаемых результатов
4. Evaluating exit criteria and reporting
Выходной критерий определяется на стадии планирования, до начала исполнения тестов. По окончанию
исполнения тестов менеджер проверяет, если результаты соответсвуют критериям.
Например, если критерием было покрытие в 85% от общего а в результате было покрыто 75%, то есть два
выхода – продолжить тестирование или изменить выходной критерий.
Таким



образом выявляются следующие цели этой стадии:
Определение соответствия выходному критерию
Определение необходимости прогона дополнительных тестов
Создание репортов по результатам тестирования
5. Test closure activities
На этой стадии тестирование закончивается. На этой стадии необходимо убедиться, что все баги в нужном
статусе, написаны репорты, все тесты завершены.
Выявляются замечания для будущих тестов, которые могли бы улучшить процесс.
-------------------------------------Environment - программное и аппаратное обеспечение, в котором будут проводиться тесты. Сюда попадает не
только только то программное обеспечение, которое будет тестироваться, но и дополнительное неоходимое
для проведения тестов ПО – операционная система, базы данных и т.д.
•
Development Environment
– Среда разработки. Используется программистами для создания и развития (upgrade)
системы/программы
•
Test Environment
– Среда, в которой будут проводиться тесты. Помимо самого продукта могут быть установленне
различные тестовые программы такие как симуляторы, ПО для автоматического выполнения
тестовых скриптов и др.

Production environment
– реальная среда, в которой программа или система функционирует в стабильном варианте и
доступна конечному пользователю. Используются реальные данные и т.п.
2
Lecture 06
1/23/2016 7:19:00 AM
Уровни тестирования (test levels)
Test levels
Разработка системы, как правило, идет на различных уровнях – вначале разрабатывается концепция системы,
системные требования, затем архитектура системы, ее разбиение на модули, затем разрабатываются
отдельные модули.
Процесс верификации также разбивается на отдельные уровни:
 системное тестирование, в ходе которого тестируется система в целом;
 интеграционное тестирование, в ходе которого тестируются группы взаимодействующих
модулей и компонент системы;
 модульное тестирование, в ходе которого тестируются отдельные компоненты;
Модульное тестирование (Unit testing)
Каждая сложная программная система состоит из отдельных частей – модулей, выполняющих ту или иную
функцию в составе системы. Для того, чтобы удостовериться в корректной работе системы в целом,
необходимо вначале протестировать каждый модуль системы по отдельности.
Основная цель модульного тестирования – удостовериться в соответствии требованиям каждого отдельного
модуля системы перед тем, как будет произведена его интеграция в состав системы.
Unit testing обычно проводиться программистами, которые написали код.
Интеграционное тестирование (Integration testing)
Тестирование корректности взаимодействия нескольких модулей, объединенных в единое целое. Его цель –
удостовериться в корректности совместной работы компонент системы.
Интеграционные тесты проверяют корректность взаимодействия компонентов системы.
Примером проверки корректности взаимодействия могут служить два модуля, один из которых накапливает
сообщения протокола о принятых файлах, а второй выводит этот протокол на экран. В функциональных
требованиях на систему записано, что сообщения должны выводиться в обратном хронологическом порядке.
Однако, модуль хранения сообщений сохраняет их в прямом порядке, а модуль вывода – использует стек для
вывода в обратном порядке.
В результате проведения интеграционного тестирования и устранения всех выявленных дефектов получается
согласованная и целостная архитектура программной системы, т.е. можно считать, что интеграционное
тестирование – это тестирование архитектуры и низкоуровневых функциональных требований.
Структурная классификация методов интеграционного тестирования
Как правило, интеграционное тестирование проводится уже по завершении модульного тестирования для
всех интегрируемых модулей. Однако это далеко не всегда так. Существует несколько методов проведения
интеграционного тестирования:
•
восходящее тестирование;
•
монолитное тестирование;
•
нисходящее тестирование.
Каждый узел на такой диаграмме представляет собой программный модуль, а стрелки между ними
представляют собой зависимость по вызовам между модулями. Основное различие методик интеграционного
тестирования заключается в направлении движения по этим диаграммам и в широте охвата за одну
итерацию.
3
1/23/2016 7:19:00 AM
Lecture 06
Восходящее тестирование (Buttom-up integration)
1
2
4
3
5
6
7
В этом подходе модулили низкого уровня тестивуются первыми, а затем подсоединяются уровни более
высокого уровня. При таком подходе значительно упрощается локализация ошибок: если модули
протестированы по отдельности, то ошибка при их совместной работе есть проблема их интерфейса.
Однако, у восходящего метода тестирования есть существенный недостаток – необходимость в
разработке драйвера и заглушек для модульного тестирования перед проведением интеграционного
тестирования и необходимость в разработке драйвера и заглушек при интеграционном тестировании части
модулей системы.
Монолитное тестирование (Big-bang integration) предполагает, что отдельные компоненты
системы серьезного тестирования не проходили. Основное преимущество данного метода – отсутствие
необходимости в разработке тестового окружения, драйверов и заглушек. После разработки всех модулей
выполняется их интеграция, после чего система проверяется вся в целом, как она есть.
Монолитное тестирование имеет ряд серьезных недостатков:
•
Очень трудно выявить источник ошибки (идентифицировать ошибочный фрагмент кода).
•
Трудно организовать исправление ошибок. В результате тестирования тестировщиком
фиксируется найденная проблема, которую сложно локализовать на уровне кода.
Нисходящее тестирование (Top-down integration)
1
2
4
3
5
6
7
Сначала при нисходящем подходе тестируют только самый верхний управляющий уровень системы, без
модулей более низкого уровня. Затем постепенно с более высокоуровневыми модулями интегрируются более
низкоуровневые.
4
Download