
Мал. 3. Дерево розбивок області даних бінарного пошуку
Дерево має 11 листів. Кожний лист визначає окремий тестовий варіант.
Приклади тестових варіантів (ТВ).
ТВ 1
ВД : М = 10; ДО = 10 (одиничний масив).
Оч. РЕЗ : Result = True; I = 1
ТВ 2
ВД : М = 2 7 10 17 28 40; ДО = 2;
Оч. РЕЗ : Result = True; I = 1
ТВ 6
ВД : М = 2 7 10 17 28 40 51; Л = 51
Оч. РЕЗ : Result = True; I = 7
ТВ 9
ВД : М = 2 7 10 17 28 40;
Оч. РЕЗ :Result = False ; I = ?
ТВ 11
ВД : М = 28 2 10 17 40 7; ДО = 28
Оч. РЕЗ : Аварійне повідомлення : масив не упорядкований
Спосіб діаграм причин - наслідків
Діаграми причинно-наслідкових зв'язків - спосіб проектування тестових варіантів, що використовує формальний запис логічних умов і відповідних дій.
Кроки способу:
-
для кожного модуля перераховуються причини (умови введення або класи еквівалентності умов уведення) і слідства (дії або умови виводу). Кожній причині і слідству привласнюється свій ідентифікатор;
-
розробляється граф причино-слідствених зв'язків;
-
граф перетвориться в таблицю рішень;
-
стовпці таблиці рішень перетворяться в тестові варіанти.
Причини будемо позначати символами ci, а слідства - ei.
Кожний вузол графа може знаходитися в стані 0 або 1 (0 - стан відсутній, 1 - присутній).
Функція тотожність установлює, що якщо значення сі дорівнює 1, то і значення еі дорівнює 1, у противному випадку значення еі дорівнює 0.
Функція не установлює, що якщо значення сі дорівнює 1, то значення еі дорівнює 0; у протилежному випадку значення еі дорівнює 0.
Функція або встановлює, що якщо с1 або с2 дорівнює 1, то е1 дорівнює 1, у протилежному випадку е1 дорівнює 0.
Функція і встановлює, що якщо с1 і с2 дорівнює 1, то е1 дорівнює 1, у протилежному випадку е1 дорівнює 0.
Обмеження Е (Exclusive - виключає) встановлює, що Е повинно бути рівним 1, якщо хоча б одна зі змінних - a або b - приймає значення 1 (a і b не можуть приймати значення 1 одночасно).
Обмеження I (Inclusive - включає) установлює, що принаймні одна з змінних a, b або с завжди повинна бути рівною 1 (a, b і с не можуть приймати значення 0 одночасно).
Обмеження О (одне і тільки одне, Only one) установлює, що одна і тільки одна з змінних a або b повинна дорівнювати 1:
Обмеження R (Requires - ) устанавливает, что если а принимает значение 1, то и b должна принимать значение 1 (нельзя, чтобы а было равно 1, а b – 0).
Ограничение М (скрывает, Masks) устанавливает, что если следствие a имеет значение 1, то следствие b должно принять значение 0:
Приклад. Програма виконує розрахунок оплати за електроенергію по середньому або перемінному тарифі.
При розрахунку по середньому тарифі:
-
при місячному споживанні енергії меншому, чим 100 квт/ч. обчислюється фіксована сума;
-
при споживанні енергії, більшому або рівному 100 квт/ч., застосовується процедура А планування розрахунку.
При розрахунку по перемінному тарифі:
-
при місячному споживанні енергії менше 100 квт/ч. застосовується процедура А планування розрахунку;
-
при споживанні енергії, більшому або рівному 100 квт/ч., застосовується процедура В планування розрахунку.
Крок 1. Причинами є:
-
розрахунок по середньому тарифі;
-
розрахунок по перемінному тарифі;
-
місячне споживання електроенергії менше, чим 100 квт/ч.;
-
місячне споживання енергії більше або рівне 100 квт/ч..
На основі різних комбінацій причин можна перерахувати наступні слідства:
-
101 - мінімальна місячна вартість
-
102 - процедура А планування розрахунку
-
102 - процедура В планування розрахунку.
Крок 2. Розробка графа причинно-слідчих зв'язків. Вузли причин перераховують по вертикалі зліва, а вузли слідств - справа.
Крок 3. Генерація таблиці рішень. Причини розглядаються як умови, а слідства - як дії.
Порядок генерації:
Вибирається деяке слідство, що повинне мати стан 1.
Знаходяться всі комбінації причин (з обліком обмежень), що встановлюють це слідство в стан 1. Для цього зі слідства прокладається зворотна траса через граф.
Для кожної комбінації причин, що приводять слідство в стан 1, будується один стовпець.
Для кожної комбінації причин доопределяють стани всіх інших слідств. Вони містяться в той же стовпець таблиці рішень.
Дії 1 - 4 повторюються для всіх слідств графа.
Номера стовпців -> |
1 |
2 |
3 |
4 |
||
Умови |
причини |
1 |
1 |
0 |
1 |
0 |
(причини) |
|
2 |
0 |
1 |
0 |
1 |
|
|
3 |
1 |
1 |
0 |
0 |
|
|
4 |
0 |
0 |
1 |
1 |
вторинні |
|
11 |
0 |
0 |
1 |
0 |
|
причини |
12 |
0 |
1 |
0 |
0 |
Дія |
слідство |
101 |
1 |
0 |
0 |
0 |
|
|
102 |
0 |
1 |
1 |
0 |
|
|
103 |
0 |
0 |
0 |
1 |
Крок 4. Перетворення кожного стовпця таблиці в тестовий варіант. У нашому прикладі 4 тестових варіанти.
ТВ 1 (стовпець 1):
ВД: розрахунок по середньому тарифі, місячне споживання енергії - 60 квт/ч.
Оч. РЕЗ :мінімальна місячна вартість.
ТВ 2 (стовпець 2):
ВД: розрахунок по перемінному тарифі, місячне споживання - 90 квт/ч.
Оч. РЕЗ : процедура А планування розрахунку.
ТВ 3 :
ВД: розрахунок по середньому тарифі, місячне споживання - 100 квт/ч.
ТВ 4 :
ВД: розрахунок по перемінному тарифі, місячне споживання - 100 квт/ч.
Оч. РЕЗ : процедура В планування розрахунку.
Тестування інтеграції
Тестування інтеграції підтримує складання суцільної програмної системи. Тести проводяться для виявлення помилок інтерфейсу. Перерахуємо основні категорії помилок інтерфейсу:
-
утрата даних при проходженні через інтерфейс;
-
відсутність у модулі необхідного посилання;
-
несприятливий вплив одного модуля на іншій;
-
підфункції при об'єднанні не утворять необхідну головну функцію;
-
окремі (припустимі) неточності при інтеграції виходять за припустимий рівень;
-
проблеми при роботі з глобальними структурами даних.
Спадне тестування інтеграції
При даному підході модулі об'єднуються рухом зверху вниз по керуючій ієрархії, починаючи з головного керуючого модуля. Підпорядковані модулі добавляються в структуру або в результаті пошуку в глибину, або в результаті пошуку в ширину. Нижче приведена послідовність кроків тестування.
Головний керуючий модуль (вершина ієрархії) використовується як тестовий драйвер. Усі безпосередньо підпорядковані йому модулі тимчасово заміщаються заглушками.
Одна з заглушок заміняється реальним модулем. Модуль вибирається пошуком у ширину або глибину.
Після підключення кожного модуля (і установки в ньому заглушок) проводиться набір тестів, що перевіряє отриману структуру.
Якщо в модулі-драйвері вже немає заглушок, робиться зміна модуля драйвера (пошуком у глибину або ширину).
Виконується повернення на крок 2 (доти поки не буде побудована ціла структура).
Гідність спадної інтеграції: помилки в головній частині системи, що управляє, виявляються в першу чергу.
Нестача: труднощі в ситуаціях, коли для повного тестування на верхніх рівнях потрібні результати опрацювання нижніх рівнів.
Для боротьби з зазначеною нестачею існують три рішення:
-
відкладати деякі тести до заміщення заглушок модулями;
-
розробляти заглушки, що частково виконують функції модулів;
-
підключати модулі рухом знизу нагору.
Перше рішення викликає складності в оцінці результатів тестування.
Для реалізації другої можливості вибирається одна з наступних категорій заглушок:
-
заглушка А - відображає параметр, що проходить;
-
заглушка В - відображає повідомлення, що трасується;
-
заглушка С - повертає значення із таблиці;
-
заглушка D - виконує табличний пошук по ключу (вхідному параметру) і повертає зв'язаний із ним вихідний параметр.