Тест-дизайн – це один з початкових етапів процесу тестування ПЗ, на якому плануються і проєктуються тестові випадки (тест-кейси) відповідно до критеріїв якості, вимог до проєкту і цілей тестування. Головною метою тест-дизайну є покриття тестами всього функціоналу, використовуючи при цьому мінімальну кількість тестів. Для того, щоб досягти зазначеної мети, застосовують різні техніки тест-дизайну – загальні правила і рекомендації щодо створення тестів при проведенні тестування.
Класи еквівалентності, граничні значення
- 06.01.2023
- Опубліковано: Admin
У даній статті ми розглянемо такі техніки, як поділ на класи еквівалентності і аналіз граничних значень.
Ці техніки вважаються одними з найбільш важливих при тестуванні, так як:
- вони можуть використовуватися як для окремого модуля, так і для системи в цілому;
- ними інтуїтивно користуються кожен день;
- вони дозволяють мінімізувати кількість проведених тестів;
- неправильне використання даних технік може спричинити за собою пропуск критичних дефектів.
Клас еквівалентності (equivalence class) – набір даних, обробка яких призводить до одного й того ж результату.
Два тести можна вважати еквівалентними, у випадку коли:
- вони перевіряють одну і ту ж частину системи (функцію, модуль);
- один тест знаходить помилку, то й інший, швидше за все, знайде помилку і навпаки (якщо один не знаходить помилку - другий також не знаходить);
- вони використовують подібні набори вхідних даних;
- щоб виконати тести, необхідно зробити одні й ті ж операції;
- в результаті проведення тестів отримуємо однакові вихідні дані і система знаходиться в одному і тому ж стані:
- спрацьовує один і той самий блок обробки помилки;
- не спрацьовує блок обробки помилки.
Поділ на класи еквівалентності – це техніка, при якій функціонал (діапазон можливих вхідних значень) розділяється на групи значень еквівалентних за своєю дією на систему.
Нижче розглянемо приклад поділу на класи еквівалентності.
Є поле з допустимим діапазоном значень введення від 1 до 1000. Вводити весь діапазон — досить довгий процес. Тим більше, є ще неприпустимі значення (спецсимволи, негативні числа, букви і та ін.), введення яких потрібно перевірити.
Як говорилося вище, всі значення одного класу еквівалентності однаково впливають на систему, тобто допустимі значення система приймає, а недопустимі – ні. В поле повинно бути заборонено введення неприпустимих значень.
Таким чином, можна виділити два класи еквівалентності:
- Можна вибрати зі значень числа від 1 до 1000.
- Неприпустимі значення: числа від -∞ до 0, від 1001 до + ∞, а також всі інші літери і символи.
Клас з неприпустимими значеннями можна розбити на кілька:
- Від - ∞ до 0.
- Від 1001 до + ∞.
- Спеціальні символи (# @ + - / _:; " 'і т.д.).
- Літери.
В результаті, завдяки класам еквівалентності можна використовувати мінімум 5 тестів для тестування поля введення. Наприклад, в поле ввести наступні дані: 46, -37, 1773, Ім'я, $ _ = #.
Техніку поділу на класи еквівалентності застосовують для скорочення числа тестів, при цьому зберігаючи прийнятне тестове покриття. Дана техніка підходить також для текстових або інших типів даних.
Кроки для техніки поділу на класи еквівалентності наступні:
- Визначити класи еквівалентності. Від правильності виконання даного кроку залежить ефективність майбутнього тестування.
- Вибрати представника кожного класу.
- Виконати тести.
Давайте розглянемо ще один приклад.
На рейсах авіакомпанії при оформленні попередньої оплати за провезення понаднормового багажу раніше, ніж за 24 години до вильоту рейсу за розкладом діє знижка в розмірі 50% від загального тарифу. При оплаті за провезення понаднормового багажу під час посадки у літак діє тариф на 20% вище загального тарифу. Реєстрація на рейс починається за 3 години до вильоту.
Тепер пройдемося по кроках.
1. Визначимо класи еквівалентності:
Клас | Значення | Вартість понаднормового багажу |
Клас 1 | час> 24 | 50% знижка |
Клас 2 | 24 >= час> 3 | звичайний тариф |
Клас 3 | 3 >= час> 0 | +20% |
2. Виберемо представника від кожного класу:
- Час до вильоту = 30 годин (тест з 1-го класу).
- Час до вильоту = 10 годин (тест з 2-го класу).
- Час до вильоту = 2 години (тест з 3-го класу).
3. Виконаємо тести.
- Внесемо попередню оплату за 30 годин до вильоту рейсу за розкладом. Перевіримо, що в тариф включена знижка 50%.
- Внесемо попередню оплату за 10 годин до вильоту рейсу за розкладом. Перевіримо, що тариф - загальний.
- Внесемо попередню оплату за 2 години до вильоту рейсу за розкладом. Перевіримо, що тариф збільшений на 20%.
Техніка поділу на класи еквівалентності має свої плюси і мінуси:
- До переваг можна віднести можливість структурувати процес тестування і, отже, скоротити час на виконання тестування.
- До недоліків можна віднести пропуск багів при неправильному використанні техніки.
Аналіз граничних значень – техніка тест-дизайну, яка спрямована на перевірку поведінки системи на граничних значеннях вхідних даних (кордонах класів еквівалентності).
Дуже важливо перевіряти саме граничні значення, тому що досить часто виникають помилки саме на межах класів еквівалентності.
На кожній межі діапазону потрібно перевірити 3 значення: граничне значення, значення до і після межі.
Наприклад, для діапазону значень, що вводяться від 1 до 1000 всі значення від 1 до 1000 приведуть до одного і того ж результату, то є дві межі: нижня і верхня.
Перше граничне значення – 1. Друге граничне значення – 1000. Додаємо до них, що стоять поруч значення:
- 0, 1, 2
- 999, 1000, 1001
Алгоритм використання техніки граничних значень наступний:
- Визначити класи еквівалентності.
- Визначити граничні значення для кожного класу (важливо розуміти до якого класу належить значення).
- Провести тести з перевірки значення до межі, на межі і відразу після межі.
Тепер виділимо граничні значення для прикладу, описаного вище.
1. Визначимо класи еквівалентності для прикладу з авіакомпанією:
- Час> 24 (за 24 години до вильоту рейсу за розкладом діє знижка розміром 50%).
- 24> = час> 3 (реєстрація на рейс починається за 3 години до вильоту).
- 3> = час> 0.
2. Визначимо граничні значення:
- 24 години (відноситься до другого класу).
- 3 години (відноситься до третього класу).
3. Протестуємо значення на кордонах, до і після них.
Для цього внесемо попередню плату:
- За 24 години + 1 хвилина. Перевіримо, що знижка становить 50%.
- Рівно за 24 години. Перевіримо, що тариф - загальний.
- За 23 години 59 хвилин. Перевіримо, що тариф - загальний.
- За 3 години + 1 хвилина. Перевіримо, що тариф - загальний.
- Рівно за 3 години. Перевіримо, що тариф збільшений на 20%.
- За 2 години 59 хвилин. Перевіримо, що тариф збільшений на 20%.
З цього випливає, що для перевірки граничних значень досить виконати 6 тестів.
Оскільки деякі граничні значення відносяться до певного класу – їх можна використовувати як представників даного класу для скорочення кількості тестів.
Використання технік поділу на класи еквівалентності і аналізу граничних значень дозволяє знизити ризик пропуску помилки, якісно поліпшити результати тестування, а також значно скоротити кількість тестів, необхідних для проведення, і, отже, зекономити час. Але не варто також забувати, що важлива правильність використання тієї чи іншої техніки для досягнення якісного результату.