Аналіз причинно-наслідкових зв'язків.

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

Для використання методу необхідно розуміння Булевої логіки (логічних операторів - і, або, не). Побудова тестів здійснюється в кілька етапів.

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

2) У специфікації визначаються безліч причин і безліч наслідків. Причина є окрема вхідна умова або клас еквівалентності вхідних умов. Слідство є вихідна умова або перетворення системи. Кожним причині і наслідку приписується окремий номер.

3) На основі аналізу семантичного (смислового) змісту специфікації будується таблиця істинності, в якій послідовно перебираються всі можливі комбінації причин і визначаються слідства кожної комбінації причин. Таблиця забезпечується примітками, які задають обмеження і описують комбінації причин і / або наслідків, які є неможливими через синтаксичні або зовнішні обмеження. Аналогічно, при необхідності будується таблиця істинності для класу еквівалентності.

Примітка. При цьому можна використовувати такі прийоми:

· По можливості виділяти незалежні групи причинно-наслідкових зв'язків у окремі таблиці.

· Істина позначається "1". Інакше "0". Для позначення байдужих станів умов застосовувати позначення "Х", яке припускає довільне значення умови (0 або 1).

4) Кожний рядок таблиці істинності перетвориться в тест. При цьому:

· по можливості слід поєднувати тести з незалежних таблиць;

Недолік методу - неадекватно досліджує граничні умови.

Припущення про помилку.

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

Приклад застосування методів тестування «чорним ящиком»

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

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

Ax + By = C и Dx + Ey = F.

2.1. Використовуючи метод еквівалентних розбиттів, отримуємо для всіх коефіцієнтів один правильний клас еквівалентності (коефіцієнт – дійсне число) і один неправильний (коефіцієнт - не дійсне число). Звідки можна запропонувати 7 тестів:

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

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

2.2. За методом граничних умов:

можна вважати, що для вихідних даних граничні умови відсутні (коефіцієнти - "любі" дійсні числа);

для результатів - отримуємо, що можливі варіанти: єдине рішення, прямі зливаються (безліч рішень), прямі паралельні (відсутність рішень). Отже, можна запропонувати тести, з результатами всередині області:

1) результат – єдине рішення (d ¹ 0);

2) результат – безліч рішень (d = 0 і dx=dy=0);

3) результат – відсутність рішень (d = 0, але dx¹0 або dy¹0);

і з результатами на границі:

1) d = 0,01;

2) d = -0,01;

3) d = 0, dx = 0,01, dy = 0;

4) d = 0, dy = -0,01, dx = 0.

2.3. За методом аналізу причинно-наслідкових зв'язків:

Визначаємо множину умов.

а) для визначення типу прямої:

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

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

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

d = 0

dx = 0

dy = 0

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

A=0 B=0 C=0 Результат
X Пряма загального положення
Пряма, паралельна вісі ОХ
Вісь ОХ
Пряма, паралельна вісі ОУ
Вісь ОУ
Х Множина точок площини

Така ж таблиця будується для другої прямої.

d = 0 dx = 0 dy = 0 Один розв’язок Безліч розв’язків Нема розв’язків
X X
X
X

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

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

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

2) виконується окрема перевірка неспівпадання умови dx = 0 або dy = 0 (в залежності від того, який тест був обраний за методом граничних умов) - тест також можна поєднати з попередніми 6 тестами;

2.4. За методом припущення про помилку додамо тест:

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

Всього отримали 20 тестів за всіма чотирма методиками. Якщо ще спробувати вкласти незалежні перевірки, то можливо число тестів можна ще скоротити. (Не забудьте для кожного тесту заздалегідь вказувати результат!).