ТестированиеОсновы тестированияИнженер по ручному тестированию

Поле принимает целые значения от 1 до 100 включительно. Какие значения вы проверите в первую очередь, чтобы...

Поле принимает целые значения от 1 до 100 включительно. Какие значения вы проверите в первую очередь, чтобы выявить ошибки в обработке границ, и чем обоснуете этот набор?

Проходите собеседования с ИИ помощником Hintsage

Краткий ответ

В первую очередь нужно проверить значения 0, 1, 100 и 101: по одному за пределом и на самой границе каждого конца допустимого диапазона. Такой набор выявляет ошибки в условиях сравнения, например случайное исключение допустимого предела или принятие недопустимого значения.

Исторический контекст

Анализ граничных значений появился как техника тест-дизайна для сокращения числа проверок без потери наиболее вероятных дефектов. Ошибки часто возникают не в обычных значениях, а в логике обработки минимальных и максимальных пределов: разработчик может неверно выбрать строгий или нестрогий оператор сравнения либо перепутать границу диапазона.

Подход дополняет, а не заменяет другие техники. Он помогает целенаправленно проверять ограничения, тогда как эквивалентное разбиение отвечает на вопрос о выборе representative-значений из классов поведения.

Постановка проблемы

Для диапазона от 1 до 100 допустимыми являются значения 1–100, а значения меньше 1 и больше 100 недопустимы. Ошибка в обработке хотя бы одного предела может привести к принятию некорректных данных или отклонению корректных.

Проверка только значений вроде 50 не обнаружит дефектов, связанных с пределами. При этом исчерпывающая проверка всех целых чисел может быть неоправданно дорогой и всё равно не проверит особенности других форматов ввода, например пустое значение или дробь.

Подробное решение

Набор формируется вокруг каждой границы:

  • 0 — ближайшее недопустимое значение ниже минимума;
  • 1 — минимальное допустимое значение;
  • 100 — максимальное допустимое значение;
  • 101 — ближайшее недопустимое значение выше максимума.

Ожидаемый результат: 0 и 101 отклоняются, 1 и 100 принимаются. Если система различает причины ошибок, для внешних значений дополнительно проверяют корректность сообщения и отсутствие сохранения или дальнейшей обработки некорректных данных.

Это робастный вариант анализа граничных значений: он включает точки непосредственно внутри и снаружи диапазона. Иногда добавляют типичное значение, например 50, чтобы одновременно проверить обычный допустимый случай, но оно не является обязательным для проверки самих границ.

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

Ситуация из практики

В форме задавался допустимый возраст от 18 до 65 лет включительно, но веб-интерфейс и сервер использовали разные правила валидации. Были рассмотрены три варианта: проверить несколько обычных возрастов — быстро, но риск пропустить ошибку границы; перебрать все значения — надёжнее для целых лет, но не проверяет формат и не масштабируется; применить граничные значения на интерфейсе и сервере, дополнив их проверкой формата — даёт хороший баланс покрытия и затрат.

Был выбран третий вариант: проверили 17, 18, 65 и 66, а также пустое, текстовое и дробное значения. В результате обнаружилось, что интерфейс принимал 65, а сервер отклонял его из-за ошибочного исключения верхней границы; проверка показала не только дефект, но и рассогласование правил между слоями.

Что кандидаты часто упускают

  1. Нужно ли проверять только сами границы и значения сразу за ними?

Нет, это зависит от цели теста и типа данных. Для выявления ошибок диапазона основными являются ближайшие значения внутри и снаружи каждой границы, но для практического сценария полезно добавить типичное значение из допустимого класса и проверки формата. Например, для целого диапазона 1–100 набор 0, 1, 100, 101 проверяет границы, а 50 дополнительно подтверждает обычный допустимый случай.

  1. Что изменится, если границы диапазона не включены?

Изменится ожидаемый результат граничных значений. Для диапазона строго больше 1 и строго меньше 100 значения 1 и 100 должны отклоняться, а ближайшие допустимые значения зависят от типа данных: для целых это 2 и 99. Поэтому перед составлением тестов нужно определить не только числа, но и семантику ограничения — включены ли конечные точки.

  1. Достаточно ли проверять каждую границу отдельно, если ограничений несколько?

Не всегда. При независимых параметрах отдельные проверки могут быть достаточны для базового покрытия, но дефект способен проявиться только при сочетании граничных значений, например когда сумма двух полей должна оставаться в пределах лимита. Тогда добавляют комбинации по цели теста, используя техники вроде попарного покрытия или анализа решений, иначе проверка отдельных границ может не обнаружить ошибку во взаимосвязи условий.