Тестові набори даних


Виділені класи еквівалентності

 

Вхідні умови Правильні класи еквівалентності Неправильні класи еквівалентності
Формулювання умови Сукупність значень виділеного класу Сукупність значень виділеного класу

Правильні класи включають правильні дані, неправильні класи – неправильні дані. Для правильних і неправильних класів тести проектують окремо. При побудові тестів правильних класів враховують, що кожен тест повинен перевіряти по можливості максимальна кількість різних вхідних умов. Такий підхід дозволяє мінімізувати спільне число необхідних тестів. Для кожного неправильного класу еквівалентності формують свій тест. Останнє обумовлене тим, що певні перевірки з помилковими входами приховують або замінюють інші перевірки з помилковими входами.

Другий етап - побудова тестів.

Полягає у використанні виділених класів еквівалентності для формування тестових наборів. Включає таку послідовність дій:

1) нумерація класів еквівалентності ( кожному виділеному класу еквівалентності надається унікальний десятковий номер);

2) розробка нових тестів, кожен з яких накриває як можна більше вільних (ненакритих) правильних класів еквівалентності до тих пір, поки всі правильні класи не будуть накриті;

3) розробка тестів, кожен з яких накриває один і тільки один із ненакритих неправильних класів еквівалентності.

Друга і третя дії виконуються стільки разів, скільки потрібно для накриття всіх класів еквівалентності.

Примітка: Термін ”накриття” означає включення у тест комбінації умов, що відповідають сукупності класів еквівалентності , які перевіряються (”накриваються”).

Результати другого етапу методу зводяться в таблицю 2.

 

Таблиця 2.

N тесту Класи еквівалентності Вхідні дані Очікуваний вихід
  Класи еквівалентності, що перевіряються тестом Набір даних, структура яких повинна відповідати структурі вхідних даних Результати опрацювання даних тесту (структура узгоджена ії структурою вихідних даних)

 

Аналіз граничних значень.Граничні значення - це значення на кордонах класівеквівалентності вхідних значень або біля них. Аналіз показує, що в цих місцях різко збільшується можливість виявлення помилок. Наприклад, якщо в програмі аналізу вигляду трикутника було записано А + У ? Із замість А + У > З, те завдання граничних значень приведе до помилки: лінія буде віднесена до одного з видів трикутника.

Вживання методу аналізу граничних значень вимагає певної міри творчості і

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

• якщо вхідну умову описує область значень, то слід побудувати тести для границь області і тести з неправильними вхідними даними для ситуацій незначного виходу за межі області, наприклад, якщо описана область [-1.0, +1.0], то мають бути згенерували тести: -1.0 + 1.0,-1.001 и+1.001;

• якщо вхідна умова задовольняє дискретному ряду значень, то слід побудувати тести для мінімального і максимального значень і тести, що містять значення великі і менші цих двох значень, наприклад, якщо вхідний файл може містити від 1 до 255 записів, то слід перевірити Про, 1, 255 і 256 записів;

• якщо існують обмеження вихідних значень, то доцільно аналогічно тестувати і їх: звичайно не завжди можна отримати результат поза вихідною областю, але тим не менш варто розглянути цю можливість;

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

Окрім вказаних граничних значень, доцільно пошукати інші.

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

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

Аналіз причинно-наслідкових зв'язків.Аналіз причинно-наслідкових зв'язків дозволяєсистемно вибирати високо результативні тести. Метод використовує алгебру логіки і оперує поняттями «причина» і «слідство». Причиною в даному випадку називають окреме вхідне умова або клас еквівалентності. Слідством - вихідна умова або перетворення системи. Ідея методу полягає у віднесенні всіх следствий до причин, тобто в уточненні причинно-наслідкових зв'язків. Даний метод дає корисний побічний ефект, дозволяючи виявляти неповноту і неоднозначність вихідних специфікацій.

Побудову тестів здійснюють у декілька етапів. Спочатку, оскільки таблиці причинно-наслідкових зв'язків при застосуванні методу до великих специфікацій стають громіздкими, специфікації розбивають на «робочі» ділянки, стараючись по можливості виділяти в окремі таблиці незалежні групи причинно-наслідкових зв'язків. Потім в специфікації визначають безліч причин і наслідків.

Далі на основі аналізу семантичного (смислового) вмісту специфікації будують таблицю істинності, в якій кожній можливій комбінації причин ставиться у відповідність слідство. При цьому доцільно істину позначати «I», брехня - «О», а для позначення байдужих достатків умов застосовувати позначення «X», яке передбачає довільне значення умови (0 або 1). Таблицю супроводжують примітками, задаючими обмеження і що описують комбінації причин і наслідків. які є неможливими із-за синтаксичних або зовнішніх обмежень. При необхідності аналогічний будується таблиця істинності для класу еквівалентності.

І, нарешті, кожен рядок таблиці перетворять в тест. При цьому рекомендується по можливості поєднувати тести з незалежних таблиць.

Даний метод дозволяє будувати високорезультативні тести і виявляти неповноту і неоднозначність вихідних специфікацій. Його недоліком є неадекватне дослідження граничних значень.

Припущення про помилку.Часто програміст з великим досвідом знаходить помилки, «незастосовуючи жодних методів». Насправді він підсвідомо використовує метод «припущення про помилку».

Процедура методу припущення про помилку в значній мірі заснована на інтуїції.

Основна його ідея полягає в тому, щоб перерахувати в деякому списку можливі помилки або ситуації, в яких вони можуть з'явитися, а потім на основі цього списку скласти тести. Іншими словами, потрібно перерахувати ті особливі випадки, які можуть бути не враховані при проектуванні.

Проілюструємо вживання всіх розглянутих вище методів на прикладі.

Приклад 9.1.Нехай необхідно виконати тестування програми, що визначає крапкупересічення двох прямих на площині. При цьому вона повинна визначати паралельність прямої одній з осей координат.

У основі програми лежить вирішення системи лінійних рівнянь:

Ах + By = З

Dx + Еу = F.

По методу еквівалентних класів формований для кожного коефіцієнта один правильний клас еквівалентності і один неправильний (коефіцієнт- не дійсне число). Звідки генеруємо 7 тестів:

1) всі коефіцієнти - дійсні числа (1 тест);

2-7) по черзі кожен з коефіцієнтів - не дійсне число (6 тестів).

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

8) результат - єдине рішення (? ? 0);

9) результат - безліч рішень (? =0 і ? x =? в =0);

10) результат - відсутність рішень (? =0, але ? x ? 0 або ? в ? 0);

і з результатами на кордоні:

11) ? =0,01;

12) ? = ? 0,01;

13) ? =0, ? x =0,01, ? в =0;

14)? =0, ? в = ? 0,01 ? x =0.

По методу а н а л і з а п р і ч і н н про – з л е д з т в е н н ы х з в я з е й

визначаємо безліч умов: а) для визначення типа прямою:

а = 0

b = 0 - для визначення типа і існування першої прямої;

з = 0

d = 0

e = 0 - для визначення типа і існування другої прямої;

f = 0

б) для визначення точки пересічення:

Виділяємо три групи причинно-наслідкових зв'язків (визначення типа і існування першій лінії, визначення типа і існування другої лінії, визначення крапки пересічення) і будуємо таблиці істинності для визначення типа першою прямою (таблиця. 9.1) і для визначення результату (таблиця. 9.2). У обох таблицях X означає невизначене значення.

Для другої прямої таблиця істинності виглядатиме аналогічно таблиці. 9.1.

Кожен рядок цих таблиць перетвориться в тест. При нагоді (з врахуванням незалежності груп) беруться дані, відповідні рядкам відразу двох або всіх трьох таблиць.

В результаті до вже наявних тестів додаються:

15-21) перевірки всіх випадків розташування обидвох прямих - 6 тестів по першій прямій поєднують з 6-а тестами по другій прямій так, щоб варіанти не збігалися (6 тестів);

22) перевірка неспівпадання умови ? x =0 або ? в =0 (залежно від того, який тест був вибраний по методу граничних умов) — тест також можна поєднати з попередніми 6-у тестами.

23) всі коефіцієнти - нулі.

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