Анализ граничных значений (Boundary Value Analysis)
Анализ граничных значений (Boundary Value Analysis)
Введение
Разработчик написал условие: if (age >= 18 && age <= 65). Казалось бы, всё просто. Но он мог написать > вместо >=, или < вместо <=. Именно на границах диапазонов чаще всего живут ошибки типа «off-by-one» (ошибка на единицу).
Анализ граничных значений (BVA) — техника, дополняющая эквивалентное разделение. Вместо любого значения из раздела мы целенаправленно тестируем значения на границах разделов и рядом с ними.
Почему границы — зона риска?
Большинство логических ошибок при программировании допускается именно на границах:
>=написали как>- Неправильно считают «включительно» или «исключительно»
- Массивы с нулевым индексом, граничные случаи циклов
- Ошибки округления для дробных чисел
Тестирование границ — это целенаправленный поиск в зоне наибольшего риска.
Правило: что тестировать на границе

Для каждой границы диапазона тестируй три значения:
| Позиция | Описание | Пример для границы 18 |
|---|---|---|
| Ниже границы | одно значение ДО границы | 17 |
| Сама граница | точное граничное значение | 18 |
| Выше границы | одно значение ПОСЛЕ границы | 19 |
Это называется 3-значный BVA (3-point BVA).
Иногда используют 2-значный BVA: только саму границу и значение по одну сторону. Но 3-значный надёжнее.
Пример: возраст 18–65
Два граничных значения: 18 (нижняя граница) и 65 (верхняя граница).
| Тест | Значение | Ожидаемый результат |
|---|---|---|
| Ниже нижней | 17 | Ошибка: слишком молодой |
| Нижняя граница | 18 | Успех |
| Чуть выше нижней | 19 | Успех |
| Чуть ниже верхней | 64 | Успех |
| Верхняя граница | 65 | Успех |
| Выше верхней | 66 | Ошибка: слишком старый |
6 тестов покрывают обе границы полностью.
Связь с эквивалентным разделением
BVA — это расширение EP. Сначала выделяем разделы (EP), потом фокусируемся на границах между ними (BVA).
EP: [< 18] [18–65] [> 65]
^ ^
BVA: 17,18,19 64,65,66
Итоговый набор тестов: EP-значение из середины (например, 35) + граничные значения (17, 18, 19, 64, 65, 66).
Где применять BVA
BVA отлично работает для:
- Числовых диапазонов (возраст, сумма, количество)
- Ограничений на длину строки (от 2 до 50 символов)
- Дат (даты начала и конца периода)
- Лимитов на количество элементов (максимум 10 товаров в корзине)
BVA не применяют к перечислениям и категориальным данным (цвет: красный/синий/зелёный — там нет «границ»).
Частые ошибки
- Тестировать только саму границу без значений рядом — пропускаешь off-by-one
- Путать «включительно» и «исключительно»: если граница 18 «исключительно» (строго больше), тестировать нужно 17, 18, 19 — иначе неправильно расставишь ожидаемые результаты
- Применять BVA там, где нет числового диапазона — для категориальных данных используй EP
Что мы запомним
- BVA фокусируется на граничных значениях, где чаще всего допускают ошибки
- Для каждой границы тестируй три значения: ниже, само, выше
- BVA работает в паре с EP: сначала разделы — потом границы
- Лучше всего применяется к числам, датам, длинам строк