|
|||||||||||
Єрьомічев Вадим Вікторович Факультет комп'ютерных наук та технологій. Кафедра автоматизованых систем керування. Спеціальність: Тема випускної роботы: Науковий керівник: к.т.н., доц.Савкова Олена Йосипівна. |
|||||||||||
|
|||||||||||
Вступ У тестуванні програмного забезпечення існує ряд завдань, які є трудомісткими і громіздкими, а отже вони вимагають автоматизації. Одним з таких завдань є генерація тестових наборів. Тестові набори створюються на основі критерію тестування згідно з заданими специфікаціями програми. Цілі й завдання, які повинні вирішуватися. Суть проблеми полягає у тому, щоб автоматично отримувати набір значень змінних, які б дозволили протестувати програму відповідно до певних критерієв. У цьому завданні був обраний критерій C1 - критерій тестування гілок програми. Отже, завдання полягає в тому, щоб автоматично отримувати набір значень, які б дозволили протестувати програмну гілку. Повнота покриття тестування досягається ступенем кількості всіх гілок, що тестувалися. Стаття містить короткий огляд методу, який може бути використаний для створення тестового набору для проходження гілки програми. Метою магістерської роботи є запропонувати ефективний спосіб автоматизованої розробки тестових наборів за критерієм С1 - критерієм тестування гілок програмного забезпечення. Для того, щоб досягти мети слід вирішити ряд завдань, наведених у списку нижче: Задача синтаксичного аналізу вихідного коду програми з метою виділення в ній гілок, а так само визначення можливих значень параметрів умов. Побудова керуючого графа програми на основі даних, отриманих в попередньому пункті, для зручності відстеження ступеню тестування знайдених гілок. Розробка тестових наборів для тестування гілок УГП. Дані завдання не відносяться до розряду тривіальних і вимагають до себе пильної уваги і досконального вивчення, із за відсутності подібних систем, проект що розробляється можна віднести до проекту з високим ступенем новизни Актуальність теми роботы Автоматизоване створення тестових наборів є одним з найбільш трудомістких процесів в роботі тестувальника програмного забезпечення. Так само це дуже відповідальна і ретельна робота. Тому що саме від якості тестів буде залежати якість програмного продукту. Високий ступінь відтестованості програми безпосередньо залежить від ступеня покриття тестами гілок або шляхів, залежно від того яким критерієм користується тестировщик в своїй роботі. Створення тестів - дуже трудомісткий процес, який займає велику частину часу самого тестування. З метою підвищення ефективності роботи тестувальників і полегшення їх праці, потрібно автоматизувати даний процес на скільки це можливо. Процес створення тестових наборів складається з підетапів які представлені нижче:
Нижче представлені не всі завдання, пов'язані з тестуванням ПЗ, а тільки ті, які можуть бути цікаві з точки зору наукових досліджень, а також вимагають спеціальних підходів до вирішення:
Завдання тестування засновані на наступних постулатах тестування ПЗ:
Дослідження з генерації тестових даних ведуться повсюдно, а велика кількість публікацій призводить до того, що розробляються підходи досить складно класифікувати. Поточні результати досліджень. Для вирішення поставленої задачі пропонується використати можливості розширених кінцевих автоматів для створення моделі тестованої програми на основі керуючого графа, і генетичні алгоритми для автоматизації створення тестів. Прикладом, є код програми, яка за значенням цілого числа повинна друкувати його просту характеристику - нуль це, парне або непарне число, позитивне чи негативне. Пропонований підхід має на увазі максимальну формалізацію специфікацій. У свою чергу керуючий граф програми можна представити у вигляді кінцевого розширеного автомата, що містить змінні і охоронні умови на переходах.Все вимоги специфікації повинні бути виконані під час коректної роботи програми. Автомат реагує на події і виконує переходи в залежності від значень змінних автоматної моделі, які використовуються в охоронних умовах на переходах. Вид автомата представлений на малюнку 2. Представлення тесту у вигляді послідовності подій і набору значень зовнішніх змінних зручно з точки зору автоматичного створення коду тесту, проте незручно і неясно для розробника, який грунтується на специфікації, написаної на природній мові. Тому розробник записує тест як послідовність переходів у моделі. В цьому випадку виникає задача пошуку послідовності подій і набору значень зовнішніх змінних, відповідних заданій послідовності переходів у моделі. Нижче викладено принцип вирішення цього завдання, заснований на використанні генетичних алгоритмів. Послідовність подій однозначно визначається по послідовності переходів. Складніше підібрати значення змінних - вони повинні задовольняти ряду вимог. По-перше, охоронні умови на всіх переходах в описаному шляху повинні бути виконані. По-друге, всі вимоги специфікації об'єктів управління повинні виконуватися, тому що при реальному використанні значень цих змінних будуть приходити з об'єктів управління з даними специфікаціями. В запропонованому підході генетичні алгоритми застосовуються для вирішення завдання пошуку набору значень, при якому буде виконаний заданий шлях у розширеному кінцевому автоматі. Таке завдання можна звести до задачі оптимізації. Побудова оптимізаційної задачі Ми маємо набір зовнішніх змінних, задіяних на обраній послідовності переходів. Цей набір можна розглядати як вектор значень зовнішніх змінних < x1, x2, …, x n >, де xi – значення зовнішньої змінної, а n - число зовнішніх змінних для цього путі.Для використання оптимізаційних алгоритмів необхідно визначити функцію пристосованості - функцію, яка оцінює, наскільки хромосома вирішує проблему, і дозволяє вибирати кращі рішення з усього покоління. В даній задачі функція пристосованості на вхід приймає вектор значень і видає число, що характеризує пристосованість цього вектора для виконання заданого шляху. Чим менше це число, тим більше підходить даний вектор значень. Таким чином, завдання пошуку відповідного набору значень зовнішніх змінних зводиться до задачі оптимізації, де потрібно знайти вектор, якому відповідає мінімальне значення функції пристосованості. Для даної задачі хромосома буде представляти собою вектор значень зовнішніх змінних, що складається з одного елемента - змінної n. Для загального випадку один ген є значенням однієї змінної для заданого шляху. Схрещування відбувається класичним однокрапковим способом. Мутація являє собою заміну довільного гена випадковим значенням з області допустимого діапазону значень. Однозначної способу визначення функції пристосованості не існує. Тим не менш, існує критерій, який називається відстанню до умови (Branchdistance), для визначення пристосованості хромосом. Відстань до умови дозволяє оцінити, наскільки близька була дана хромосома до виконання конкретного умови, що на практиці не було виконано. Наприклад, для умови A > B, відстань до умови буде обчислюватися по формулі | A - B |. Чим менше значення | A - B |, тим ближче значення A до B і тим ближче хромосома до того, щоб ця умова була виконана. Якщо умова виконана, то відстань до умови нуль. При цьому відстань до умови можна представити як (1) Функція пристосованості, заснована на використанні критерію відстань до умови, успішно застосовується для пошуку значень для виконання шляху в розширеному кінцевому автоматі, причому ці значення є граничними для умови, що збільшує впевненість у правильності тестованої програми. Для послідовності переходів може бути задано велике число умов, тому відстань до умови всього шляху необхідно обчислювати окремо, розглядаючи умови на кожному переході цього шляху. Кожен перехід описується набором параметрів:
Після цього вихідна послідовність переходів розглядається як послідовність кроків. Оцінка пристосованості всієї послідовності кроків обчислюється як сума оцінок для кожного кроку по-окремо. Кожен крок оцінюється за формулою обчислення відстані для умови. Зазначимо, що кроки виконуються послідовно і що виконання кроків на початку шляху важливіше, ніж в його кінці. Наприклад, якщо виконані умови всіх кроків, окрім першого, то сума відстаней до умови буде невеликий, тому що для всіх, крім першого кроку, це значення буде дорівнювати нулю. На практиці ця хромосома не дозволяє пройти жодного кроку, тому що для того, щоб успішно пройти другий крок, необхідно виконати всі умови на першому кроці. Тому в запропонованому підході відстані до умови кроків підсумовуються з урахуванням місця розташування цих кроків у дорозі - використовується зважена сума (2) пристосованості шляху де m– кількість кроків в шляху, m=n*3, тут n– число переходів в шляху; fi– відстань до умови для i-го кроку. di– вага i-го с кроку, di=(m-i)2 Якщо для одного кроку задано декілька умов, то відстань до умови цього кроку обчислюється як сума відстаней до умови кожного з цих умов. Висновки В ході зробленого дослідження були розглянуті багато методів тестування програми. У підсумку вибір припав на критерій С1 тому він дозволяє робити досить якісне тестування. Так само ми можемо виконувати тестування окремо взятої галузі, не зачіпаючи при цьому всю програму. Еволюційний метод в якості генерації тестів дозволить з легкістю підібрати потрібні значення для зовнішніх змінних програми, щоб пройти по гілкам. Використані джерела 3. Кулямин В.В., Тестирование на основе моделей. 4. Монахов А., Петренко А., Бритвина Е., Петренко О., Грошев С. Тестирование на основе моделей. 6. Melanie Mitchell. Genetic Algorithms: An Overview 8. В.Е. Алексеев, В.А. Таланов Графы и алгоритмы. 9. Дидковская М.В. Технологии разработки и тестирования программ |