Граничные значения

Почему ошибки так часто живут на границах и как применять boundary value analysis для полей, диапазонов и условий перехода.

Обновлено:

Содержание

Boundary Value Analysis строится на простой, но очень практичной идее: ошибки часто возникают на краях диапазонов и условий. Именно там разработчики чаще допускают проблемы со знаками сравнения, включённостью границ и обработкой пустых или предельных значений.

Что считать границей

  • →Минимально допустимое значение.
  • →Максимально допустимое значение.
  • →Значение ровно перед границей.
  • →Значение ровно на границе.
  • →Значение сразу после границы.

Пример

Если длина пароля должна быть от 8 до 20 символов, то хорошие кандидаты для проверки: 7, 8, 9, 19, 20 и 21 символ. Такой набор часто даёт больше пользы, чем случайные длины 11 и 14.

Где техника особенно полезна

  • →Числовые диапазоны, лимиты, длины строк и размеры файлов.
  • →Даты и временные интервалы: начало, конец, дедлайны, истечение срока.
  • →Количественные ограничения: число попыток, элементов, запросов, пользователей.
  • →Пороговые бизнес-правила: скидка от суммы, доступ от роли, переход статуса после выполнения условий.

Частые ошибки

  • →Проверять только сами границы и забывать соседние значения.
  • →Игнорировать логические границы, которые не выражены напрямую числом.
  • →Не учитывать разницу между inclusive и exclusive условиями.
  • →Считать BVA достаточной техникой для сложной бизнес-логики без других методов.
📏

Boundary analysis почти всегда хорошо работает в паре с equivalence partitioning: сначала выделяем классы, потом усиливаем их проверками на краях.

Практическая матрица: включённые границы

Возьмём отдельное учебное поле: идентификатор из 8–20 букв ASCII включительно. Все символы допустимы; меняется только длина. ASCII выбран, чтобы символы, байты и кодовые единицы не добавляли вторую переменную. Это упражнение по тест-дизайну, а не рекомендация по безопасности паролей.

plain text
Длина	Пример	Ожидание
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, дробь и нечисловое значение проверяются отдельно: числовые границы их не представляют.

plain text
Вход	Ожидание
0	Отклонить
1	Принять
2	Принять
4	Принять
5	Принять
6	Отклонить

Если предел становится исключённым, заново выведите ожидания из требования. Для дробей, времени и Unicode сначала определите минимальный значимый шаг и то, что именно измеряет система. «На единицу меньше» даты или лимита файла ничего точно не означает без единицы измерения.

Продолжить изучение

Классы эквивалентности

Тест-кейсы

Справочник по техникам: программа ISTQB CTFL, разделы 4.2 и 5.5. Примеры выше — самостоятельные учебные сценарии.