Cредства автоматизации тестирования

А. Автоматизация прогона тестов - актуально для регрессионного тестирования -

автоматический запуск программы с каждым тестом из набора, сравнение реального результата с ожидаемым и выдача отчета об обнаруженных расхождениях - ошибках.

Это сравнительно просто делается для неинтерактивной программы, считывающей все входные данные из файла: пишется командный файл или скрипт. Существует стандарт IEEE скриптового языка для описания тестовых наборов. Для интерактивной программы приходится перенаправлять клавиатурный ввод и экранный вывод на файловые. Здесь две проблемы: невозможность задания временных параметров ввода и трудность формального определения ошибок видимых на экране. Первая проблема решаются специальными средствами перехвата и запоминания ввода с клавиатуры и мыши; процесс такой записи на порядок более трудоемкий, чем ручной ввод, поэтому затраты на нее окупаются только после десятого прогона тестового набора.

В целом разумно автоматизировать прогон только ограниченного набора тестов – «приемочного», в который включают наиболее важные тесты.

B. Средства автоматизации анализа результатов тестов:

1. Отладчики стандартных систем программирования - помогают локализовать ошибку. Вопрос 1.

2. Анализаторы динамики (profilers - профайлеры) - помогают проверять соответствие тестовых наборов структурным критериям тестирования (а также служат средством протоколирования времени выполнения отдельных функций, т.е. измерения производительности отдельных частей программы с целью ее оптимизации).

Профайлеры входят в состав стандартных отладчиков; существуют также специальные инструменты производства компании Rational:

Rational Pure Coverage - выявляет участки кода, пропущенные при тестировании: инструмент подсвечивает их красным цветом. То есть, он помогает убедиться, выполнен ли критерий С1.

Rational Quantify - генерирует в табличной форме список всех вызываемых в процессе работы приложения функций, указывая временные характеристики каждой из них. Это делается путем вставки счетчиков машинных циклов в код для каждого функциональ-ного блока тестируемой программы, включая все используемые ею компоненты (DLL, системные вызовы).

Rational Purify – собирает статистику об использовании памяти приложением, написанном на VC++, и позволяет локализовать ошибки: утечки памяти, потерянные блоки, фиктивные ссылки.

С. Средства автоматизации подготовки тестов

· Генераторы случайных тестов в заданных классах входных данных.

· Средства автоматической генерации структурных тестов, например, по методу "символического выполнения" Кинга.

Метод символического выполнения (М.Кинг, IBM, 1967)

Цель: генерация структурных тестов. Идея метода: установить соответствие между классами вх (и заодно, вых) данных и возможными путями в программе, прослеживая условия прохождения того или иного пути. Идею иллюстрирует рис. 11-1, где классы эквивалентности представлены связными точечными областями, а стрелкам соответ-ствуют различные пути - траектории вычислений, приводящие к отображению вх данных на вых. Звездочками отмечены точки – тестовые данные. Идея в том, чтобы вместо реального выполнения программы на тестовых данных проводить «символическое» выполнение сразу на классе вх данных.

Рис. 11-1. Программа как функциональный преобразователь.

Классы вх, вых и промежуточных данных описываются условиями, т.е. предикатами на множестве данных. Операторы программы «преобразуют» предикаты, например:

 
 


k > 0 B

       
 
   
 


да нет

k > 2
a > 2

k > 6 В & a > 2 В & a =< 2

Проследив преобразования на протяжении всего конкретного пути, получим условие его прохождения в виде конъюнкции такого количества термов, сколько разветвлений на этом пути. Это – формальная операция и поэтому может быть автоматизирована. Эта импликация описывает класс исходных данных, эквивалентный данному пути. Однако чтобы найти явное выражение для входных данных, приходится разрешать это логическое выражение относительно искомых переменных. В численных алгоритмах это приводит к решению системы неравенств, в общем случае нелинейных. (Задание 1).

Их решение тоже можно автоматизировать, что и попытался сделать М.Кинг в системе EFFIGY для подмножества Кобола (1971). Сложность численных методов не позволила построить эффективную программу для практических нужд, однако идея программы, аннотированной условиями, нашла развитие в работах Флойда, Дейкстры и Хоара, посвященных формальной верификации.

Альтернатива тестированию: понятие формальной верификации программ

- т.е., доказательства правильности программ без их выполнения. Идея: доказывать программу логически, как теорему. Подход Дейкстры – Хоара: метод наислабейшего предусловия – применение логики предикатов первого порядка для описания свойств и поведения программ. Состояние программы = состояние памяти = отображение множества идентификаторов на множество значений. Предикат P выражает множество состояний, в которых он истинен. И наоборот, для любого множества состояний можно построить предикат, его выражающий.

       
 
   
 


YP (X,Y) = X>0 & X>Y

S

P 0 X


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: