Портал магистров       Донецкий национальный технический университет
Резюме Биография Библиотека Инд.раздел
Поиск
Реферат
Ссылки

Укр Рус Eng

Ерёмичев Вадим Викторович

Факультет компьютерных наук и технологий.

Кафедра автоматизированных систем управления.

Специальность:Информационные управляющие системы и технологии

Тема выпускной работы:Автоматизированная разработка тестовых наборов программного обеспечения по критерию С1.

Научный руководитель: к.т.н., доц. Савкова Елена Осиповна.

Реферат по теме выпускной работы

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

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

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

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

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

  1. Конструирование УГП
  2. Выбор тестовых путей
    • Статические методы - построение каждого пути посредством постепенного его удлинения за счет добавления дуг, пока не будет достигнута выходная вершина. Недостатки – не учитывается возможная нереализуемость построенных путей тестирования (непредсказуемый процент брака). - Трудоемкость (переход от покрывающего множества путей к полной системе тестов осуществляется вручную) Достоинство - сравнительно небольшое количество необходимых ресурсов
    • Динамические методы - построение полной системы тестов, удовлетворяющих заданному критерию, путем одновременного решения задачи построения покрывающего множества путей и тестовых данных. При этом можно автоматически учитывать реализуемость или нереализуемость ранее рассмотренных путей или их частей. Достоинство - некоторый качественный уровень - реализуемость путей.
    • Методы реализуемых путей- выделение из множества путей подмножества всех реализуемых путей, из которых строится покрывающее множество путей.
  3. Генерация тестов, соответствующих тестовым путям.

Ниже представлены не все задачи, связанные с тестированием ПО, а только те, которые могут быть интересны с точки зрения научных исследований, а также требуют специальных подходов к решению:

  1. Генерация и выбор тестовых данных.
  2. Создание модели тестирования.
  3. Задача тестового оракула.
  4. Выбор критериев тестового покрытия и оценка тестового покрытия.
  5. Генерация тестовых сценариев.

Задачи тестирования основаны на следующих постулатах тестирования ПО:

  • полное тестирование невозможно;
  • стопроцентная автоматизация тестирования невозможна;
  • отсутствие общей теории тестирования.

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

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

К примеру, имеется код программы, которая по значению целого числа должна печатать его простую характеристику – ноль это, четное или нечетное число, положительное или отрицательное.

пример кода
Управляющий граф программы (УГП) на рисунке 1 отображает поток управления программы. Нумерация узлов графа совпадает с нумерацией строк программы.

Управляющий граф программы

Рисунок 1 – Управляющий граф программы

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

Схема прохождения оп ветвям

Рисунок 2 – Конечный расширенный автомат (анимация: 7 кадров, 6 Кб, 7 циклов)

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

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

Мы имеем набор внешних переменных, задействованных на выбранной последовательности переходов. Этот набор можно рассматривать как вектор значений внешних переменных < x1, x2, …, x n >, где xi – значение внешней переменной, а n – число внешних переменных для этого пути.Для использования оптимизационных алгоритмов необходимо определить функцию приспособленности – функцию, которая оценивает, насколько хромосома решает проблему, и позволяет выбирать лучшие решения из всего поколения. В данной задаче функция приспособленности на вход принимает вектор значений и выдает число, характеризующее приспособленность этого вектора для выполнения заданного пути. Чем меньше это число, тем больше подходит данный вектор значений. Таким образом, задача поиска подходящего набора значений внешних переменных сводится к задаче оптимизации, где требуется найти вектор, которому соответствует минимальное значение функции приспособленности.

Для данной задачи хромосома будет представлять собой вектор значений внешних переменных, состоящий из одного элемента – переменной n. Для общего случая один ген является значением одной переменной для заданного пути. Скрещивание происходит классическим одноточечным способом. Мутация представляет собой замену произвольного гена случайным значением из области допустимого диапазона значений. Однозначного способа определения функции приспособленности не существует. Тем не менее, существует критерий, который называется расстоянием до условия (Branchdistance), для определения приспособленности хромосом. Расстояние до условия позволяет оценить, насколько близка была данная хромосома к выполнению конкретного условия, которое на практике не было выполнено. Например, для условия A > B, расстояние до условия будет вычисляться по формуле |A - B|. Чем меньше значение |A - B|, тем ближе значение A к B и тем ближе хромосома к тому, чтобы это условие было выполнено. Если условие выполнено, то расстояние до условия ноль. При этом расстояние до условия можно представить как (1)

Функция приспособленности(1)

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

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

  1. Событие, по которому этот переход может произойти.
  2. Охранное условие, которое должно быть выполнено для совершения перехода.
  3. Действия на переходе: вызов методов объектов управления, получение значений внешних переменных из среды или изменение значений переменных модели.
  4. Предусловия перехода, включающие в себя требования спецификации программы, которые должны быть выполнены для выполнения перехода, и требования спецификации объектов управления, которые должны быть выполнены для вызова методов объектов управления, задействованных при переходе.
  5. Постусловия перехода, включающие в себя требования спецификации программы и ее объектов управления.
Таким образом, даже в рамках одного перехода может быть задействовано большое число условий. Для более точного вычисления расстояния до условия перехода в работе каждый переход разбивается на несколько меньших шагов.

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

Оценка приспособленности всей последовательности шагов(2)

где m– число шагов в пути, m=n*3, здесь n– число переходов в пути;
fi– расстояние до условия для i-го шага.
di– вес i-го с шага, di=(m-i)2

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

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

  1. Wegener J., Buhr K., Pohlheim H., Automatic test data generation for structural testing of embedded software systems by evolutionary testing /In Proceedings of the Genetic and Evolutionary Computation Conference (GECCO 2002). NY: Morgan Kauf-mann. 2002, pp. 1233–1240.
  2. Ms.Roshni Rajkumari, Ms.Roshni Rajkumari. Autmatic test data generation using genetic algorithm and program dependence graph. Journal of Computer Applications, Vol-III, No.4 ,Oct-Dec 2010
  3. Кулямин В.В., Тестирование на основе моделей. Страница автора
  4. Монахов А., Петренко А., Бритвина Е., Петренко О., Грошев С. Тестирование на основе моделей. «Открытые системы» , № 09, 2003
  5. Дастин Э., Рэшка Д., Пол Д. Автоматизированное тестирование программного обеспечения. Внедрение, управление и эксплуатация. М.: Лори, 2003.
  6. Melanie Mitchell. Genetic Algorithms: An Overview, Cambridge, MA: MIT Press.
  7. Koza J. Genetic Programming: On the programming of Computers by Means of Natural Selection. Cambridge: MIT Press, 1992.
  8. Алексеев В.Е. , Таланов В.А. Графы и алгоритмы.М.: Изд-во "Интернет-университет информационных технологий - ИНТУИТ.ру", 2006. - 320 c.: ил.
  9. Дидковская М.В. Технологии разработки и тестирования программ. Учебная работа с грифом НТУУ «КПИ» НМУ № Е 9/10-389 от 17.06.2010
  10. Карпушинский А.М. Анализ неявного потока управления и его влияние на выбор структурных критериев тестирования объектно-ориентированных программ.VI Всероссийская межвузовская конференция молодых ученых 14 - 17 Апреля 2009 с.157