Программирование25 октября 2026 г.

Классы эквивалентности и граничные значения: пример тест-дизайна

#COURSE##INNER#

Классы эквивалентности и граничные значения: пример тест-дизайна

Поле принимает целое число от 1 до 10 включительно. Какие значения проверить: 1, 2, 3 и дальше до 10? Такой перебор покрывает допустимые числа, но ничего не говорит о поведении при вводе 0 или 11. Тест-дизайн помогает выбирать данные осмысленно: сначала определить разные правила обработки, затем проверить места, где одно правило сменяется другим.

Для этого начинающему тестировщику полезны две техники: классы эквивалентности и анализ граничных значений. Разберем их на условной форме заказа. Все правила ниже заданы только для учебного примера.

Сначала уточните требование к полю

В нашей форме количество товара обязательно. Система должна принимать целое число от 1 до 10 включительно. Значения меньше 1, больше 10, дробные числа, текст и пустой ввод должны отклоняться. При отклонении заказ не создается, а пользователь получает сообщение о недопустимом количестве.

Такое описание уже позволяет назначить ожидаемый результат. Если в реальной задаче сказано только «введите количество», сначала потребуются вопросы: допустим ли ноль, есть ли верхнее ограничение, можно ли вводить дроби? Без этих ответов набор тестовых данных будет опираться на догадки.

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

Разделите данные на классы эквивалентности

Класс эквивалентности объединяет значения, которые, по принятому предположению, обрабатываются одинаково. В учебной форме все целые числа от 1 до 10 должны приниматься. Поэтому число 5 может представлять допустимый класс. Значение 0 представляет целые числа ниже диапазона, а 11 — выше диапазона.

Это предположение помогает сократить перебор, но не доказывает, что внутри класса нет дефектов. Если в требованиях появляется дополнительное правило — например, для отдельных количеств меняется способ доставки, — прежнего деления может оказаться недостаточно. Классы нужно строить по фактическим правилам продукта.

Класс входных данныхПредставительОжидаемый результат в примере
Целое число от 1 до 105Количество принято
Целое число меньше 10Значение отклонено
Целое число больше 1011Значение отклонено
Дробное число2.5Значение отклонено
ТекстabcВвод заблокирован или значение отклонено согласно устройству поля
Пустой вводПоле не заполненоЗначение отклонено

В реальном проекте нужно уточнить и обработку пробелов, разделителей и записи числа. Строки «1», «01» и « 1 » могут обрабатываться по-разному. Не объединяйте их автоматически: сначала выясните правила нормализации, затем решите, нужны ли дополнительные классы.

Добавьте проверки около границ диапазона

Анализ граничных значений применяют там, где данные упорядочены и у классов есть границы. Для целых количеств удобно проверить значения непосредственно ниже и выше допустимого диапазона, а также его крайние допустимые значения. В нашей форме это 0, 1, 10 и 11.

Почему одной проверки числом 5 недостаточно? Реализация может ошибочно отклонять ровно 1 или разрешать 11. Проверка внутри диапазона такую ошибку не обнаружит. Значения по разные стороны перехода позволяют сравнить фактическое поведение с ожидаемым правилом включения границ.

При более подробном учебном разборе добавьте соседние допустимые значения 2 и 9. Получится набор 0, 1, 2, 9, 10, 11. Не переносите этот набор механически на любые поля. Для дробных величин, дат и времени сначала нужно определить допустимый шаг, точность и правила округления.

Соедините техники в понятный набор проверок

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

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

Если фактическое поведение расходится с требованием, оформите дефект с конкретными данными. Укажите среду, шаги, ожидаемый и фактический результат. Формулировка «поле иногда работает неправильно» не поможет воспроизведению. Формулировка «при количестве 11 заказ создается, хотя верхнее допустимое значение равно 10» описывает проверяемую проблему.

Что эти техники покрывают и чему учиться дальше

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

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

В каталоге тема прямо указана в программе Skillbox «Ручное тестирование (Manual QA)»: в блоке функционального тестирования перечислены классы эквивалентности и граничные значения. Эти техники также названы в программе «Профессия Инженер по тестированию + ИИ». При сравнении обучения уточните, будете ли вы самостоятельно выделять классы по требованиям и получать обратную связь по набору проверок.