Boundary Value Analysis строится на простой, но очень практичной идее: ошибки часто возникают на краях диапазонов и условий. Именно там разработчики чаще допускают проблемы со знаками сравнения, включённостью границ и обработкой пустых или предельных значений.
Что считать границей
- →Минимально допустимое значение.
- →Максимально допустимое значение.
- →Значение ровно перед границей.
- →Значение ровно на границе.
- →Значение сразу после границы.
Пример
Если длина пароля должна быть от 8 до 20 символов, то хорошие кандидаты для проверки: 7, 8, 9, 19, 20 и 21 символ. Такой набор часто даёт больше пользы, чем случайные длины 11 и 14.
Где техника особенно полезна
- →Числовые диапазоны, лимиты, длины строк и размеры файлов.
- →Даты и временные интервалы: начало, конец, дедлайны, истечение срока.
- →Количественные ограничения: число попыток, элементов, запросов, пользователей.
- →Пороговые бизнес-правила: скидка от суммы, доступ от роли, переход статуса после выполнения условий.
Частые ошибки
- →Проверять только сами границы и забывать соседние значения.
- →Игнорировать логические границы, которые не выражены напрямую числом.
- →Не учитывать разницу между inclusive и exclusive условиями.
- →Считать BVA достаточной техникой для сложной бизнес-логики без других методов.
Boundary analysis почти всегда хорошо работает в паре с equivalence partitioning: сначала выделяем классы, потом усиливаем их проверками на краях.
Практическая матрица: включённые границы
Возьмём отдельное учебное поле: идентификатор из 8–20 букв ASCII включительно. Все символы допустимы; меняется только длина. ASCII выбран, чтобы символы, байты и кодовые единицы не добавляли вторую переменную. Это упражнение по тест-дизайну, а не рекомендация по безопасности паролей.
Длина Пример Ожидание
7 aaaaaaa Отклонить: слишком коротко
8 aaaaaaaa Принять
9 aaaaaaaaa Принять
19 aaaaaaaaaaaaaaaaaaa Принять
20 aaaaaaaaaaaaaaaaaaaa Принять
21 aaaaaaaaaaaaaaaaaaaaa Отклонить: слишком длинноДля целочисленной длины компактный 2-value набор — 7, 8, 20, 21: он пересекает границу допустимого диапазона с каждой стороны. В 3-value набор добавляются соседи с другой стороны каждого предела: 7, 8, 9 и 19, 20, 21. Он может обнаружить дефект на ближайшем внутреннем значении. Эти наборы не покрывают остальные правила ввода.
Упражнение: количество от 1 до 5
Обязательное целочисленное количество должно быть от 1 до 5 включительно. Запишите кандидатов для трёхзначного анализа до чтения ответа. Отсутствие поля, null, дробь и нечисловое значение проверяются отдельно: числовые границы их не представляют.
Вход Ожидание
0 Отклонить
1 Принять
2 Принять
4 Принять
5 Принять
6 ОтклонитьЕсли предел становится исключённым, заново выведите ожидания из требования. Для дробей, времени и Unicode сначала определите минимальный значимый шаг и то, что именно измеряет система. «На единицу меньше» даты или лимита файла ничего точно не означает без единицы измерения.