Анализ граничных значений (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: сначала разделы — потом границы
  • Лучше всего применяется к числам, датам, длинам строк

Попробуйте интерактивную версию

Практические задачи, квизы и AI-наставник — бесплатный старт без карты

Перейти к практике