Тестирование черного ящика. Б. Бейзер (2004) (1186170), страница 70
Текст из файла (страница 70)
Предикаты могут быть покрыты при тестировании, но это может не дать полной картины поведения тестируемой системы. Советую быть внимательными. Искусственная среда тестирования. По своей природе инструменты тестирования работают в искусственной среде. При этом прерывания, многозадачность, кэширование памяти и многие другие средства операционной системы и аппаратуры либо не работают, либо работают по-другому (не так, как они это делают в действительности).
Поэтому советую выполнить все тесты еще раз в реальной среде. 2. Покрытие блоков (профайлеры). Как мы можем покрыть тестами объектный код системы, состоящей из нескольких миллионов байт команд, если возможности инструментов для покрытия тестирования модулей настолько ограничены? Вы можете использовать инструменты покрытия блоков 10.4. Базовый пакет инструментов 275 или профайлеры. Профайлер не пытается интерпретировать выполняемые команды (как делает нормальный инструмент покрытия), а просто регистрирует изменение данной области памяти (выполнение команды на объектном уровне). С практической точки зрения это настолько же хорошо, как и регистрация исполнения ветвей операторов и предикатов в исходной программе.
Профайлеры могут обеспечить такое покрытие данных для отдельных байтов, отдельных команд объектной программы или блоков из байтов или команд. Покрытие объектов может быть выполнено для каждого исполнения команды, в этом случае результаты будут очень четкие, но неточные, так как система тратит большую часть времени на измерение самой себя.
Такая форма называется детерминистическим покрытием. Альтернативной формой является периодическая выборка выполнения команд. Это называется статистическим покрытием. Преимуществом статистического покрытия является то, что режим тестирования реалистичен и влияние, которое оказывают инструменты покрытия, можно аналитически скорректировать. Недостатком же является то, что для получения статистически достоверного измерения надо провести тысячи повторений тестов. 3. Инструменты для покрытия потоков данных и других покрытий. Хотя тестирование потоков данных определяется здесь в контексте поведенческого тестирования, существуют соответствующие структурные концепции и связанные с ними инструменты покрытия. Уже разработаны инструменты, которые измеряют все использования, все определения, все пути определение-использование и даже все пути [ГКАН85, НОКО92, КОКЕ85, 05ТВ911.
Ни одного из них не было в свободной продаже к 1994 году, Существуют также инструменты покрытия (коммерческие) для регистрации высокоуровневого тестирования, которое не обсуждалось в этой книге, например, покрытие древовидных схем, которые необходимы при тестировании интеграции. 10.4.3. Автоматизация проведения тестирования Автоматизации проведения тестирования следует уделить первоочередное внимание, так как даже умеренная автоматизация разработки тестов сразу же создает огромное число тестов, которые бесполезны без автоматического исполнения.
Во многих системах и средствах разработки программного обеспечения есть возможность на 95 процентов или больше автоматизировать выполнение тестов. Стопроцентное автоматическое выполнение, по всей видимости, нежелательно. Это точно нежелательно, если единственная возможность это реализовать — создать сложного робота-наборщика, который будет имитировать действия пользователя с клавиатурой и мышью. Если автоматизацию проведения тестирования принять во внимание с самого начала и если это будет обязательным условием при проектировании системы, то возможна очень высокая степень автоматизации выполнения — около 99 процентов. Основной инструмент автоматизации 276 Глава 10 «Инструментальные средства и автоматизация выполнения тестирования — это тестовый драйвер.
Наиболее популярная форма тестового драйвера — это инструмент захвата/воспроизведения. 1. Наглядное, но плохое первое приближение. Наиболее обшим первым приближением к автоматизации проведения тестирования является создание добавочного кода. Пишется специальная программа, в коде которой заложены все данные для тестирования, критерий соответствия и все остальное, Хорошо, но кто будет тестировать этот вновь созданный код? Должны ли мы «тестировать тестируемый код» или «тестировать тестирование тестируемого кода», и если да, то выполняет ли этот подход покрытие и как быстро? Это не лучший способ работы. Только в исключительно редких случаях оправдано создание специализированного программного обеспечения для тестирования. Как правило, универсальные инструменты тестирования, типа драйверов, в которых исходные данные теста и ожидаемый результат рассматриваются как данные, а не как программный код, удовлетворяют большинству потребностей тестировшиков.
Тестовый драйвер (сушествуют сотни доступных, коммерческих и свободно распространяемых драйверов) используется для проведения автоматического тестирования 1СОНК89, НО)Т, 8?, РАН278]. Законченные драйверы (хотя таких драйверов на данный момент немного) должны иметь все приведенные ниже особенности. Используйте это как памятку. Существуют три определенные фазы управления тестированием: начальная установка, выполнение и постпроцессинг.
Соответствующие инструменты структурного покрытия могут быть (должны быть) частью пакета. ° Фаза начальной установки. Подтвердите конфигурацию аппаратного/ программного обеспечения, ведь иначе вы не узнаете, действительно ли вы работаете в той среде, в которой собирались? Загружаются и инициализирук>тся требуемые заранее или совместно используемые компоненты.
Инициализируются другие необходимые аппаратные средства и программное обеспечение. Устанавливается доступ к требуемым структурам данных. Инициализируются инструментальные средства и инструменты покрытия. ° Фаза выполнения. Каждый тест необходимо инициализировать должным образом. Без этого инструмент тестирования не может стать средством автоматизации исполнения. Загружаются и контролируются входные данные для каждого теста.
Оцениваются утверждения. Собираются выходные данные. По мере необходимости производится сброс инструментального средства для каждого теста. «Фаза постпроцессинга. Используется подходящий критерий соответствия результатов теста. При аварии сообщается об отказах теста. С помощью интеллектуальных методов сравнения сравниваются реальные и прогнозируемые итоги (методы позволяют определять, что надо учитывать при сравнении и в какой степени).
Данные о выполнении передаются в инструмент покрытия. Подтверждается правильность путей. 10.ч. Базовый пакет инструментов 277 Проверяется наличие лишних и побочных результатов. При отказе теста управление передается пакету отладки. Захват/воспроизведение данных. Другие названия: захват/проигрывание и запись/воспроизведение. На рынке коммерческие инструменты захвата и воспроизведения превалируют над другими инструментами автоматического тестирования. Я рассматриваю захват/воспроизведение данных и при автоматизации исполнения теста, и при автоматизации проектирования теста, так как он применим в обоих случаях. Захват/ воспроизведение данных является фундаментальным инструментом и наиболее популярным способом обеспечения перехода от ручного к автоматическому выполнению тестов.
Инструмент захват/воспроизведение работает в двух фазах, фазе захвата и фазе воспроизведения. В фазе воспроизведения он представляет собой просто тестовый драйвер. Фаза захвата будет обсуждаться в следуюшем разделе, который посвяшен автоматизации проектирования тестов. 10.4.4. Автоматизация проектирования тестов Цель автоматизации проектирования тестов — уменьшение усилий, затрачиваемых на создание тестов. Связь коммерческих инструментов с различными методами, обсуждаемыми в этой книге, рассматривалась в каждой главе и не будет повторяться еше раз. Достаточно сказать, что каждый метод, обсуждаемый в этой книге, может быть дополнен соответствуюшими инструментами или, по крайней мере, ошутимо улучшен при их использовании. 1.