Хелпикс

Главная

Контакты

Случайная статья





Текущие разработки



 

УДК 621.372

Исследование методов генерации тестов в диаграмматическом базисе языка UML

С.И. Бочков[1]

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

Введение

Язык моделирования UML 2.0 [1] фактически является стандартом в объектно-ориентированном моделировании и проектировании. Он предназначен для проектирования, документирования, моделирования поведения артефактов систем [2] и широко применяется в технике и промышленности [2].

UML-диаграммы разделяются две группы: структурные и поведенческие [4]. Структурные диаграммы отображают статическую структуру системы и её компонентов на различных уровнях абстракции и реализации, а также взаимосвязь компонентов. Поведенческие диаграммы моделируют принципы работы системы и её компонентов в динамике, тем самым показывая изменения в системе в определённые моменты времени.

Особый интерес в теории и практике представляет диаграмма состояний (UML Statechart Diagram) [2, 5]. Данный вид диаграмм моделирует динамику систем, выделяя поток управления, следующий от состояния к состоянию. По сути, диаграмма состояний представляет собой конечный автомат, моделирующий поведение, которое определяет последовательность состояний в ходе существования объекта. Эта последовательность рассматривается как ответ на события и включает реакции на эти события.

UML-диаграммы применяются не только для проектирования автоматизированных систем. Особый интерес представляет использование UML-диаграмм в тестировании и создании тестовых наборов (test case).

Тестирование ПО является наиболее важной частью жизненного цикла разработки программного продукта, которое занимает в среднем 50% времени разработки [7]. Основными целями тестирования автоматизированных систем является проверка программного обеспечения на работоспособность, соответствие функций заявленным требованиям, сравнение выходных данных. Сложность задачи тестирования состоит в том, что система, представленная в виде UML-диаграммы состояний, содержит большое количество состояний, в т.ч. вложенных, и переходов между ними.

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

1. Текущие разработки

В работах [8] авторы предлагают метод построения тестовых последовательностей посредством промежуточной диаграммы тестового потока (Testing Flow Graph, TFG). Данная диаграмма состоит из s- и g-узлов и s- g-переходов. S-узлы представляют собой состояния, g-узлы соответствуют выходным переходам из данного состояния. S-переходы начинаются соответственно s-узлах, g-переходы – в g-узлах (рис. 1).

Рис. 1. Диаграмма тестового потока

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

В работе [9] для генерации тестов и проверки на соответствие авторы используют математический аппарат, основанный на операционной семантике. Предлагается формализация отношения соответствия для маркированных переходных систем (labelled transition system [10]), которая включает в себя переходы, маркированные парой сигналов "вход-выход" (transitions labelled by input/output pairs, IOLT, рис. 2). В данной системе каждое состояние имеет по крайней мере один выход для каждого элемента входного алфавита системы переходов. Вводится критерий точности реализации (accuracy criterion of the implementation). Недостатком работы является отсутствие как критериев покрытия, так и практического применения разработанного математического аппарата.

В работе [11] авторы описывают методологию создания тестов с помощью UML-диаграмм, основанную на определении состояний системы, соответствующих событиям и переходам внутри тестов, а также входным значениям и действиям. Используются техники нормализации, анализа операционных контрактов и условий переходов. Формируется дерево последовательностей запросов, которое в дальнейшем используется для определения ограничений на тесты. Для этого авторы предложили тип данных "дерево последовательности вызовов" (Invocation Sequence Tree, ICT, рис. 3).

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

В работе [13] используется метод, работающий со спецификацией программного обеспечения. UML-диаграмма состояний моделирует спецификацию, которая затем представляется с помощью марковских цепей (рис. 4). В них набор текущих состояний составляет конфигурацию, изменяющуюся по сигналу события. Спецификация переходов, выраженная конечным автоматом, написана на языке PerformCharts, основанном на XML. Для генерации тестов используется инструмент Condado, работающий с конечными автоматами. Он производит контроль действительных последовательностей в автомате методом покрытых переключений (switch cover), т.е. пар переходов, покрытие которых и должно обеспечиваться тестами.

 

Рис. 2. Диаграмма состояний и соответствующая ей IOLT-система

Рис. 3. Дерево последовательности вызовов

Рис. 4. Диаграмма состояний и соответствующая ей марковская цепь

В работе [14] предлагается тестировочная UML-диаграмма состояния (Test Ready UML Statechart, рис. 5), отличающаяся от обычной диаграммы состояний тем, что события моделируются в виде диаграмм потоков данных или расширенной контекстно-свободной грамматики. В данной грамматике события переходов являются узлами генерации (терминальные символы), агрегирования (нетерминальные символы с правым преобразованием в 1 и более нетерминалов), выбора данных (нетерминальные символы с правилами продукции). Задача генерации тестов сводится к определению достижимых путей в предложенной грамматике. Критерии покрытия, охватываемые разработанной моделью, включают в себя покрытие путей (сгенерированные тесты должны соответствовать всем возможным путям, или сентенциальным формам расширенной контекстно-свободной грамматики) и базовое покрытие путей (во всех сгенерированных тестах каждый цикл должен выполняться по крайней мере один раз). К недостаткам тестировочной UML-диаграммы состояний относится взаимодействие только с данными логического типа.

Рис. 5. Тестировочная диаграмма состояний



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.