Способи тестування умов - С

Способи тестування умов

Мета цього сімейства методів тестування — будувати тестові варіанти для перевірки логічних умов програми. При цьому бажано забезпечити охоплення операторів із усіх гілок програми.

Розглянемо термінологію, що використовується тут.

Проста умова - булева змінна або вираз відношення.

Вираз відношення має вигляд

де El, Е2 - арифметичні вирази, а як оператор відносини використовується один з наступних операторів: , =,, .

Складова умова складається з кількох простих умов, булевих операторів та круглих дужок. Застосовуватимемо булеві оператори OR, AND (&), NOT. Умови, що не містять виразів відношення, називають булевими виразами.

Таким чином, елементами умови є: булев оператор, булева змінна, пара дужок (що містить просту або складову умову), оператор відносини, арифметичний вираз. Ці елементи визначають типи помилок за умов.

Якщо умова некоректна, то некоректний щонайменше один із елементів умови. Отже, за умови можливі такі типи помилок:

  • помилка булева оператора (наявність некоректних / відсутніх / надлишкових булевих операторів);
  • помилка булевої змінної;
  • помилка булевої дужки;
  • помилка оператора відносини;
  • помилка арифметичного вираження.
Спосіб тестування умов орієнтований на тестування кожної умови у програмі. Методики тестування умов мають дві переваги. По-перше, досить просто виконати вимір тестового покриття умови. По-друге, тестове покриття умов у програмі — це фундамент.для створення додаткових тестів програми.

Метою тестування умов є визначення як помилок за умов, а й інших помилок у програмах. Якщо набір тестів для програми А ефективний виявлення помилок в умовах, що містяться в А, то ймовірно, що цей набір також ефективний для виявлення інших помилок в А. Крім того, якщо методика тестування ефективна для виявлення помилок в умові, то ймовірно, що ця методика буде ефективна виявлення помилок у програмі.

Існує кілька методик тестування умов.

Найпростіша методика -тестування гілок.Тут для складової умовиСперевіряється:

  • кожна проста умова (що входить до нього);
  • Трує-гілка;
  • False-гілка.
Інша методика -тестування області визначення.У ній для вираження відношення потрібно генерація 3-4 тестів. Вираз виду

перевіряється трьома тестами, які формують значення Е1 більшим, ніж Е2, рівним Е2 і меншим, ніж Е2.

Якщо оператор відносини неправильний, а Е1 і Е2 коректні, ці три тесту гарантують виявлення помилки оператора відносини.

Для визначення помилок в Е1 і Е2 тест повинен сформувати значення Е1 більшим або меншим, ніж Е2, причому забезпечити якнайменшу різницю між цими значеннями.

Для булевих виразів зпзмінними потрібен набір із 2nтестів. Цей набір дозволяє виявити помилки булевих операторів, змінних і дужок, але практичний тільки при малому п. Втім, якщо в булеве вираз кожна булева змінна входить тільки один раз, то кількість тестів легко зменшується.

Обговоримо спосіб тестування умов, що базується на наведених вище методиках.

Тестування гілок та операторів відносин

деdi- обмеження на результатi-го простого умови.

Обмеження на результат фіксує можливі значення аргументу (змінної) простої умови (якщо він один) чи співвідношення між значеннями аргументів (якщо їх кілька).

Якщо i-e проста умова є булевою змінною, то її обмеження на результат складається з двох значень і має вигляд

Якщоj-е проста умова є виразом відношення, то його обмеження на результат складається з трьох значень і має такий вигляд:

dj= (>, ^ С) покривається виконаннямС,якщо в ході цього виконання результат кожної простої умови вСзадовольняє відповідного обмеження в ОУc.

На основі обмеження умови ОУ створюється безліч ОМ, що обмежує, елементи якого є поєднаннями всіх можливих значеньd1, d2, d3, . dn.

Обмежує безліч — зручний інструмент для запису завдання на тестування, адже воно складається зі відомостей про значення змінних, які впливають на значення умови, що перевіряється. Пояснимо це з прикладу. Припустимо, треба перевірити умову, складену з трьох простих умов:

Умова набуває справжнього значення, якщо всі прості умови є істинними. У термінах значень простих умов це відповідає запису

а в термінах обмежень на значення аргументів простих умов - записи

Зрозуміло, що другий запис є прямим посібником для написання тесту. Вона вказує, що зміннаbповинна мати справжнє значення, значення змінноїхмає бути більше значення змінноїу,і, нарешті, зміннаа> повинна мати справжнє значення.

Отже, кожен елемент ЗМ задає окремий тестовий варіант. Вихідні дані тестового варіанту повинні забезпечити відповідну комбінацію значень простих умов, а очікуваний результат дорівнює значенню складової умови.

Приклад 1. Як приклад розглянемо дві типові складові умови:

деаіb -булеви змінні. Відповідні обмеження умов набувають вигляду

Обмежувальні множини зручно будувати за допомогою таблиці істинності (табл. 6.1).

Таблиця 6.1.Таблиця істинності логічних операцій

Варіантаba & ba або b
1falsefalsefalsefalse
2falsetruefalsetrue
3truefalsefalsetrue
4truetruetruetrue

Бачимо, що таблиця задає в ОМ чотири елементи (і відповідно, чотири тестові варіанти). Задамо питання — які можливості мінімізації? Чи можна зменшити кількість елементів у ЗМ?

З погляду тестування, нам треба оцінювати вплив складеної умови на програму. Складова умова може приймати лише два значення, але кожне значення залежить від великої кількості простих умов. Стоїть завдання — позбавитися впливу надлишкових поєднань значень простих умов.

Скористаємося ідеєю скороченоюсхеми обчислення - елементи виразу обчислюються до тих пір, поки вони впливають на значення виразу. При тестуванні необхідно виявити помилки перемикання, тобто помилки через бульова оператора, оперуючи значеннями простих умов (бульових змінних). За такого інженерного підходу справедливі такі висновки:

  • для умови типу І(а & b)варіанти 2 і 3 поглинають варіант 1. Тому обмежує безліч має вигляд:
ОМ& =;
  • для умови типу АБОorb)варіанти 2 і 3 поглинають варіант 4. Тому обмежує безліч має вигляд:
ОМor = .

Розглянемо крокиспособу тестування гілок і операторів відносин.

Для кожного умови у програмі виконуються такі действия:

1) будується обмеження умов ОУ;

2) виявляються обмеження результату за кожною простою умовою;

3) будується обмежує безліч ЗМ. Побудова виконується шляхом підстановки у константні формули ЗМ& або OMOR виявлених обмежень результату;

4) для кожного елемента ЗМ розробляється тестовий варіант.

Приклад 2.Розглянемо складову умовуС1 виду:

Обмеження складової умови має вигляд

ОУ =(d1,d2),

де обмеження простих умов дорівнюють

Проводячи аналогію міжС1таС&(різниця лише в тому, що вС>1друга проста умова - це вираз відносини), ми можемо побудувати обмежує безліч дляС1модифікацією

Зауважимо, щоtrueдля (E1=E2)означає = , a false для(E1=E2)означає або . Замінюючи (true, true) та (false, true), обмеженнями (true, =) та(false, =) відповідно, a (true, false) - обмеженнями (true, ), отримуємо граничну множину дляС1:

ОМ = .

Покриття цієї множини гарантує виявлення помилок булевих операторів та операторів відношення в С1.

Приклад 3.Розглянемо складову умовуС2виду

ОУ =(d1,d2),

де обмеження простих умов дорівнюють

Проводячи аналогію міжС2таС1(різниця лише в тому, що вС2перша проста умова - це вираз відносини), ми можемо побудувати обмежує безліч дляС2модифікацією ОМ:

ОМ = ),(>, =)>.

Покриття цієї обмежуючої множини гарантує виявлення помилок операторів відношення вС2.