Вы уже знаете, что тестирование — это не просто случайный клик по кнопкам, а системный процесс поиска ошибок. И вы уже освоили эквивалентное разбиение, разделяя входные данные на группы: валидные и невалидные. Это помогает сократить количество тестов и не проверять всё подряд.
Но есть места, где ошибки появляются особенно часто — даже если основная логика работает. Это границы диапазонов.
Почему именно границы?
Представьте, что приложение принимает возраст от 18 до 65 лет. Логика кажется простой. Но что, если при вводе ровно 18 система выдаёт ошибку? Или 65 — уже не проходит? Такие ошибки случаются регулярно — и не только у новичков-разработчиков.
На практике до 70% багов в полях ввода связаны с обработкой граничных значений. Это связано с тем, как пишется код: часто используются условия вроде > вместо >=, или сдвигаются индексы. Даже при качественной валидации на клиенте и сервере — синхронизация между ними может нарушаться на границах.
Именно поэтому существует метод граничных значений — техника тест-дизайна, которая фокусируется на проверке значений на и рядом с границами диапазонов.
💡 Метод граничных значений (Boundary Value Analysis, BVA) — это подход, при котором основное внимание уделяется входным данным, находящимся на границах валидных и невалидных диапазонов. Он основан на наблюдении: ошибки чаще всего возникают не "в середине", а на краях.
Как это связано с эквивалентным разбиением?
Вы уже умеете делить данные на классы эквивалентности. Например, для возраста 18–65 лет:
- Невалидный класс: до 18
- Валидный класс: от 18 до 65
- Невалидный класс: после 65
Метод граничных значений дополняет этот подход. Если эквивалентное разбиение помогает выбрать одно значение из группы, то BVA говорит: а что с краями этих групп?
То есть, вместо того чтобы проверить, например, возраст 30 (любое внутри диапазона), мы смотрим на ключевые точки:
- Нижняя граница — минимальное допустимое значение
- Верхняя граница — максимальное допустимое значение
- А также значения на один шаг ближе к центру и на один шаг за пределами
Как применять метод: пошагово
Допустим, у нас есть поле «возраст», допустимые значения — от 18 до 65 лет включительно.
Мы выделяем граничные точки:
17— на 1 меньше нижней границы18— нижняя граница19— на 1 больше нижней границы64— на 1 меньше верхней граници65— верхняя граница66— на 1 больше верхней границы
📌 Граничная точка — это значение, находящееся на границе диапазона или рядом с ней. Именно такие значения чаще всего выявляют ошибки.
Проверка этих шести значений даёт гораздо больше уверенности, чем проверка одного "среднего" значения.
Ещё один пример: сумма заказа
Допустим, в интернет-магазине минимальная сумма для бесплатной доставки — 100 рублей, а максимальная — 10 000 рублей.
Применим метод:
| Значение | Почему тестируем |
|---|---|
| 99 | на 1 меньше нижней границы |
| 100 | нижняя граница |
| 101 | на 1 больше нижней границы |
| 9999 | на 1 меньше верхней границы |
| 10 000 | верхняя граница |
| 10 001 | на 1 больше верхней границы |
Представьте: пользователь добавил товар на 100 рублей — а доставка не бесплатная. Или при 10 000 система выдаёт ошибку. Такие баги реальны, и они находят с помощью BVA.
А что с датами и текстом?
Метод работает не только с числами. Если есть чёткий диапазон — BVA применим.
Например, дата бронирования от 01.01.2025 до 31.12.2025:
- 31.12.2024 — до диапазона
- 01.01.2025 — нижняя граница
- 02.01.2025 — чуть больше
- 30.12.2025 — чуть меньше
- 31.12.2025 — верхняя граница
- 01.01.2026 — за пределами
Или поле «ФИО» с ограничением — до 50 символов:
- 49 — внутри, близко к лимиту
- 50 — верхняя граница
- 51 — превышение
⚠️ Важно: BVA применяется только при наличии чётких границ. Если поле ввода текста не имеет ограничений — этот метод не используется.
Практическое упражнение
Представим, что нужно протестировать поле «количество билетов». Допустимо от 1 до 10 включительно.
Какие значения вы бы протестировали, используя метод граничных значений?
Правильный набор:
0— ниже нижней границы1— нижняя граница2— чуть выше нижней9— чуть ниже верхней10— верхняя граница11— выше верхней
Этого достаточно, чтобы проверить корректность валидации и логики обработки.
Почему это работает?
Потому что вы тестируете не просто функцию, а её уязвимые места. Это как осмотреть не всю дверь, а петли и замок — там, где чаще всего возникают проблемы.
И самое главное — вы экономите время. Вместо десятков проверок, вы выбираете ключевые точки, которые с наибольшей вероятностью выявят ошибку.
✅ Итог:
- Метод граничных значений — мощный инструмент поиска багов в полях с диапазонами.
- Он дополняет эквивалентное разбиение, фокусируясь на краях классов.
- Ключевые понятия: нижняя граница, верхняя граница, граничные точки.
- Проверяйте: min, min+1, max-1, max, а также min-1 и max+1.
Что дальше?
Теперь вы умеете находить где искать ошибки. Но как фиксировать эти проверки, чтобы не забыть и передать коллегам?
Следующая тема — Создание эффективных тест-кейсов и чек-листов. Там вы научитесь оформлять свои тесты: превращать граничные значения в чёткие шаги, понятные всей команде.
Это то, что превращает случайный поиск багов в профессиональный процесс тестирования.