Портал магістрів       Донецький національный технічний університет
Магістр ДонНТУ Єрьомічев Вадим Вікторович
Резюме
Бiографiя
Реферат







Укр Рус 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

3. Кулямин В.В., Тестирование на основе моделей.

4. Монахов А., Петренко А., Бритвина Е., Петренко О., Грошев С. Тестирование на основе моделей.

5. Дастин Э., Рэшка Д., Пол Д. Автоматизированное тестирование программного обеспечения. Внедрение, управление и эксплуатация. М.: Лори, 2003.

6. Melanie Mitchell. Genetic Algorithms: An Overview

7. Koza J. Genetic Programming: On the programming of Computers by Means of Natural Selection. Cambridge: MIT Press, 1992.

8. В.Е. Алексеев, В.А. Таланов Графы и алгоритмы.

9. Дидковская М.В. Технологии разработки и тестирования программ

10. А.М. Карпушинский. Анализ неявного потока управления и его влияние на выбор структурных критериев тестирования объектно-ориентированных программ.