Методы и средства инженерии программного обеспечения

Динамические методы тестирования


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

Динамическое тестирование ориентировано на  проверку корректности ПС на множестве тестов, прогоняемых по ПС, в целях проверки и  сбора данных на этапах ЖЦ и проведения измерения отдельных элементов тестирования для оценки характеристик качества, указанных в требованиях посредством   выполнения системы  на ЭВМ. Оно основывается на  систематических, статистических, (вероятностных) и  имитационных  методах.

Дадим краткую характеристику этим методам.

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

Целью  динамического тестирования программ  по  принципу  «черного  ящика» является выявление одним тестом максимального числа  ошибок с   использованием небольшого подмножества  возможных входных данных.

Методы «черного ящика» обеспечивают:

– эквивалентное разбиение;

– анализ граничных значений;

– применение функциональных диаграмм,  которые в объединении с реверсивным анализом дают  достаточно  полную  информацию о функционировании тестируемой программы.

Эквивалентное разбиение   состоит   в  разбиении  входной области данных   программы   на   конечное    число    классов эквивалентности так,     чтобы     каждый    тест,    являющийся представителем некоторого класса,  был эквивалентен любому другому тесту этого класса.


Классы эквивалентности выделяются путем перебора  входных условий и  разбиения  их  на  две  или более  групп.  При  этом различают два  типа  классов эквивалентности:  правильные,  задающие  входные    данные для    программы, и неправильные, основанные на задании   ошибочных   входных   значений.

Разработка тестов   методом   эквивалентного    разбиения осуществляется в два этапа: выделение классов эквивалентности и построение тестов.  При  построении тестов, основанных на выборе   входных   данных,   проводится  символическое выполнение  программы.



Итак, методы тестирования по принципу «черного ящика» используются для тестирования функций, реализованных в программе, путем проверки несоответствия между реальным поведением функций и ожидаемым поведением с учетом  спецификаций требований. Во время подготовки к этому тестированию строятся: таблицы условий, причинно–следственные графы и области разбивки. Кроме того, подготавливаются тестовые наборы, учитывающие параметры и условия среды, которые влияют на поведение функций. Для каждого условия определяется множество значений и ограничений предикатов, которые тестируются.

 

Метод «белого   ящика» позволяет исследовать внутреннюю структуру  программы,  причем обнаружение всех ошибок  в  программе  является  критерием исчерпывающего тестирования  маршрутов ее потоков   (графа) передач управления, среди которых рассматриваются:

(а) критерий   покрытия   операторов –   набор   тестов  в совокупности должен обеспечить прохождение  каждого  оператора не менее одного раза;

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

Критерий (б) соответствует простому структурному тесту  и наиболее распространен  на практике.  Для удовлетворения этого критерия необходимо построить систему  путей,  содержащую  все ветви программы.  Нахождение  такого  оптимального  покрытия в некоторых случаях осуществляется просто,  а в других  является более сложной задачей.



Тестирование  по принципу « белого ящика» ориентировано на проверку прохождения всех путей программ посредством применения   путевого и имитационного тестирования

.  

Путевое тестирование  применяется  на уровне модулей и графовой модели программы путем выбора тестовых ситуаций, подготовки данных и включает тестирование:

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

– путей по заданному  графу потоков управления для выявления разных маршрутов передачи управления с  помощью  путевых  предикатов,  для вычисления которого  создается набор тестовых  данных,  гарантирующих прохождение   всех путей. Однако, все пути выполнить невозможно, поэтому остаются  и невыявленные ошибки, которые могут проявиться в процессе эксплуатации;

– блоков,   разделяющих программы на отдельные части–блоки, которые выполняются  один раз или многократно при нахождении путей в программе, включающих  совокупность блоков реализации одной функции либо нахождения входного множества данных,  которое будет  использоваться для выполнения указанного пути.

       

«Белый ящик» базируется на структуре программы, а «черный ящик»,   когда о структуре ничего неизвестно. Для выполнения тестирования с помощью этих «ящиков» известными считаются  выполняемые функции, входы (входные данные) и выходы (выходные данные), а также логика обработки, представленные в документации.


Содержание раздела