Boundary Value Analysis (BVA – аналіз граничних значень) — це техніка тестування, яка орієнтується на перевірку граничних значень для вхідних даних системи. Багато помилок у програмному забезпеченні часто виникають саме при роботі з даними на межах, тому тестування саме цих значень допомагає виявити критичні баги.
Чому саме граничні значення?
У програмному забезпеченні та алгоритмах часто зустрічаються випадки, коли значення змінної перевіряються на відповідність певному діапазону. Наприклад, перевірка на те, чи належить число до певного діапазону від 1 до 100.
Програмі або системі особливо важливо коректно обробляти значення, які знаходяться саме на межі цього діапазону (наприклад, 1 або 100), а також значення, які знаходяться прямо поруч (наприклад, 0 чи 101). Іноді проблеми виникають через те, що система неправильно обробляє такі значення або через помилки в межах умовних операторів.
Тому принцип BVA ґрунтується на тестуванні саме граничних значень і значень, що знаходяться поруч з ними, а не на випадкових значеннях із середини діапазону. Багато помилок стаються саме через неправильне трактування цих граничних значень.
Як працює Boundary Value Analysis?
Існує підхід із застосуванням для тестування 2 граничних значень. Також є підхід із застосуванням 3 граничних значень. Потрібно зрозуміти, які значення входять у допустимий діапазон для тестування.
Застосування 2 граничних значень:
Якщо є система, яка приймає вхідне число в діапазоні від 1 до 100, то тестувати слід:
- 1 (мінімальне значення)
- 0 (менше мінімуму — вихід за межі)
- 100 (максимальне значення)
- 101 (більше максимуму — вихід за межі)
Застосування 3 граничних значень:
- Тестування на граничних значеннях: Тестуються не тільки самі межі (наприклад, 1 і 100), а й значення, що знаходяться безпосередньо біля меж:
- 1 (мінімальна межа)
- 100 (максимальна межа)
- 0 (одне значення нижче мінімуму)
- 101 (одне значення вище максимуму)
- 2 (мінімальна межа + 1)
- 99 (максимальна межа – 1)
- Порівняння результатів: Різні варіанти тестів дозволяють виявити, чи система правильно працює в межах допустимого діапазону, а також чи правильно реагує на значення, що виходять за межі цього діапазону.
Тестування для діапазону дійсних чисел:
- Діапазон: від 0.0 до 10.0 (включно)
- Тестові значення:
- 0.0 (мінімум)
- 10.0 (максимум)
- -0.1 (менше мінімуму)
- 10.1 (більше максимуму)
- 0.1 (мінімум + 0.1)
- 9.9 (максимум – 0.1)
- Тестові значення:
Типи помилок, які можуть бути виявлені
- Неправильна обробка граничних значень: Наприклад, програма може неправильно працювати, якщо мінімальне або максимальне значення не обробляється належним чином (наприклад, програма приймає 0, хоча повинна відкидати ці значення).
- Помилки округлення: У випадках з дійсними числами можуть бути проблеми з точністю значень на межах, що також виявляється під час тестування крайніх значень.
- Пропущена перевірка значень за межами діапазону: Іноді система не має механізму для обробки значень, що виходять за межі допустимого діапазону (наприклад, якщо програма не перевіряє, чи число не більше за 100 або не менше за 1).
Переваги BVA:
- Зниження ймовірності помилок: Тестування на граничних значеннях допомагає виявити баги, які часто залишаються непоміченими при тестуванні випадкових значень.
- Ефективність: Це досить ефективний спосіб тестування, оскільки він охоплює основні потенційно проблемні моменти без необхідності перевіряти всі можливі значення в межах діапазону.
- Простота застосування: Метод є простим у реалізації, оскільки не потребує складних тестових випадків.
Недоліки:
- Обмеженість: Не завжди можна повністю охопити всі проблеми лише тестуванням граничних значень. Наприклад, BVA не допоможе виявити логічні помилки, які можуть виникати на середніх значеннях або при складних умовах.
- Не замінює інші методи тестування: Для комплексних програм або складних бізнес-логік, BVA слід комбінувати з іншими методами тестування.
Підсумки
Boundary Value Analysis — це важливий метод тестування, який дозволяє виявляти проблеми на граничних значеннях, де часто виникають помилки. Використання цього методу дає змогу перевірити важливі ситуації, які можуть залишитися непоміченими при тестуванні випадкових значень.