Генератор тестов InputSpace TestGenerator. Часть 2

Волченков Евгений

Модель программного гнезда

Последовательности вводов (треки)

Входы гнезда при проходе трассы посещаются (в пределах транзакции, охватывающей гнездо в целом) в определенной последовательности. Кроме того, некоторые входы могут не посещаться (пропуск входа соответствует установке значения по умолчанию (default))) или, напротив, посещаться повторно. Линейно-последовательная деятельность пользователя приводит к понятию последовательности вводов (ПВ) или трека гнезда.

Рисунок. 2. Пример трека.

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

В таблице 4 приведено представление трека для примера на рисунке 2.

Input1

Input2

Input3

Input4

Input5

2

1

4+

0

3

 

Таблица 4. Пример вектора  последовательности ввода.

Выход гнезда может как зависеть, так и не зависеть от  последовательности вводов. В последнем случае использование подмножеств ВТПВ носит проверочный (контрольный) характер.

Домены и представляющие тест-значения

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

Домены (соответственно и гнезда)  разбиваются на два существенно различающихся типа:

1.       домены с независимыми параметрами входов;

2.       домены с взаимозависимыми параметрами входов;

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

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

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

Комплект опорных тест-значений арифметического типа

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

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

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

Граничные смещения

Граница смежных субинтервалов должна удовлетворять условию Si+1 > Fi , где Fi - конец i -го субинтервала; Si+1 - начало (i+1)-го субинтервала. Для целого типа это соответствует следующему соотношению граничных значений смежных субинтервалов Si+1 = Fi + 1. Для вещественных типов Si+1 = Fi + ε , где ε - локальный эпсилон - логическая или машинная бесконечно малая:

ε(V) = (min ε / V+ε > V && V-ε < V},

f(Si+1) = f(Fi).

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

Рисунок 3: граничные смещения .

Для получения граничных смещений необходимо только указать, с какой из границ в точности совпадает это значение: Fi или Si+1 ? В первом случае Si+1 = V, Fi = V - ε, а во втором Fi = V, Si+1 = V + ε.

Тест-значения перечислимого типа

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

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

Генерация тест-наборов в InputSpace TestGenerator

Тест-примеры

Единицей тестирования в InputSpace TestGenerator является программное гнездо (состоящее не менее чем из 2 входов). Единичный или элементарный тест ( тест-пример ) включает вектор тест-значений (ВТЗ) и вектор тест-последовательности вводов (ВТПВ). В таблице 5 приведен образец элементарного тест-примера для ВТПВ, приведенного в примере таблицы 4. Здесь Value ij - j -е тест-значение из комплекта опорных тест-значений i -го входа.

Таблица 2. Образец тест-примера.

Input1

Input2

Input3

Input4

Input5

2

1

4+

0

3

Value 15

Value 21

Value 37

Default

Value 52

 

Методы генерации

В основе InputSpace TestGenerator  лежат эвристические методы ранжирования полного множества векторов тест-значений  по степени предполагаемой эффективности обнаружения ошибок приложения.

Основой для генерации ВТЗ является комплект представляющих (опорных) тест-значений. В инструменте InputSpace TestGenerator  используются два класса методов генерации ВТЗ.

При комбинационной генерации ВТЗ образуются путем всевозможных комбинаций представляющих тест-значений. Векторы тест-значений полученные таким способом, мы будем называть векторами комбинаций тест-значений (ВКТЗ).

Полное транс-комбинирование тест-значений - генерация различных сочетаний тест-значений из комплектов опорных тест-значений входов программного гнезда по одному значению для каждого входа в сочетании. В полном множестве транс-комбинаций гнезда каждое тест-значение из комплекта каждого входа должно сочетаться со всеми тест-значениями комплектов остальных входов. Если входы (имена или идентификаторы входов) рассматривать как атрибуты, то результат такого комбинирования можно представить в форме реляционной таблицы - таблицы комбинаций тест-значений, в которой каждому сочетанию значений соответствует строка - кортеж или вектор КТЗ (ВКТЗ). В концептуальном плане комбинирование моделирует потенциальную «свободу» пользователя в спецификации информационного задания программной системе.

При покрывающей генерации ВТЗ для получения подмножеств ВТЗ (ВПТЗ)  используются методы случайного покрытия полного входного пространства по подходящим законам многомерного распределения пробных точек. Представление подмножеств аналогично - реляционная таблица ВПТЗ.

В основе построения подмножеств ВТЗ лежат следующие классы эвристических методов:

  • генерация категорий и подмножеств ВТПВ (треков);
  • генерация полного или ограниченного множества комбинаций тест-значений всех или подмножества входов гнезда;
  • кластеризация полного множества комбинаций на определенные категории или структурированные подмножества;
  • выделение 100% покрывающих с -комбинационных случайных выборок (разновидность т. н. комбинаторного частично покрывающего метода);
  • покрытия входного пространства или его субобластей случайными множествами с определенным распределением.

Формирование тестовых подмножеств

Тест-подмножества  ВТЗ формируются путем:

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

Тест-подмножества ВТЗ могут формироваться путем наложения базовых методов. Тест-набор  образуется как прямое произведение подмножеств ВТПВ и ВТЗ.       

Комбинационная генерация

Метод граничных категорий

Каждому тест-значению в соответствии с интерпретацией его как точки интервала оси значений арифметического типа можно приписать граничный тип . Символические обозначения граничных типов используются в InputSpace TestGenerator в качестве префиксов имен значений (или маркеров) значений в таблицах ВТЗ. В примере таблицы 3: Mn_ - граничная точка начала диапазона (минимум), Mx_ - граничная точка конца диапазона (максимум), Md_ - внутренняя точка диапазона.

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

Рисунок 4: пример граничных категорий .

Для охвата полного множества комбинаций граничных типов естественно ввести 12 граничных категорий , которые разбиваются на 3 типа: ВНЕ, ГРАНИЦА, ВНУТРИ. На рисунке 4 приведена иллюстрация для примера категорий типа ГРАНИЦА (таблица 6).

Таблица 3. Примеры ВКТЗ типа ГРАНИЦА.

Граничная категория

Input1

Input2

Input3

BN

Mx_  Value 12

Mn_   Value 2 2

Mx_  Value 34

BA

_Md   Value 11

Mn_   Value 22

Mx_   Value 3 4

BF

_Md   Value 15

_Md   Value 2 7

Mn_   Value 22

Совокупность введенных граничных категорий полностью охватывает полное множество комбинаций тест-значений. Введенная геометрическая интепретация по аналогии с «одномерными» методами представляет интерес с точки зрения категоризации тест-комбинаций по величине априорного риска проявления дефекта программного продукта. Так, по степени «концентрации» экстремальных точек вида ГРАНИЦА можно ранжировать следующим образом: BN > BA > BF .

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

Кластеризация на граничные категории позволяет специфицировать и получить любое требуемое подмножество ВКТЗ

Метод профилей использования

Ранжирование

Профиль использования программного гнезда позволяет упорядочить ВТЗ по актуальности тестирования соответствующих областей входных доменов в связи с частотой использования конечным пользователем (или рисками).

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

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

Для ранжирования дискретных переменных (входов перечислимого типа) каждому тест-значению приходится приписать индивидуальное значение ранга приоритета.

Профилем использования входа мы будем называть зависимость

ri = f (xi).

Число интервалов определяет детальность описания профиля использования. Для задания ранга приоритета, r, мы используем для наглядности интервал r100 Є (0;100].  Входам  в целом можно приписать также ранги или веса, vn (vn Є (0;100]).

Рейтинги ВТЗ

Используя ранги веса входов и ранги значений, можно ввести ранги приоритета ВТЗ с помощью рейтинговой меры

R100 = 1/k ∑n vn *(rn /100),

где

  • n - номера входов,
  • vn - вес n-го входа,
  • rn - ранг тест-значения n-го входа,
  • k - число входов в гнезде.

Из определения видно, что R100 Є (0;100].

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


Страница сайта http://185.71.96.61
Оригинал находится по адресу http://185.71.96.61/home.asp?artId=10073