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


Поле принимает целое число от 1 до 10 включительно. Какие значения проверить: 1, 2, 3 и дальше до 10? Такой перебор покрывает допустимые числа, но ничего не говорит о поведении при вводе 0 или 11. Тест-дизайн помогает выбирать данные осмысленно: сначала определить разные правила обработки, затем проверить места, где одно правило сменяется другим.
Для этого начинающему тестировщику полезны две техники: классы эквивалентности и анализ граничных значений. Разберем их на условной форме заказа. Все правила ниже заданы только для учебного примера.
Сначала уточните требование к полю
В нашей форме количество товара обязательно. Система должна принимать целое число от 1 до 10 включительно. Значения меньше 1, больше 10, дробные числа, текст и пустой ввод должны отклоняться. При отклонении заказ не создается, а пользователь получает сообщение о недопустимом количестве.
Такое описание уже позволяет назначить ожидаемый результат. Если в реальной задаче сказано только «введите количество», сначала потребуются вопросы: допустим ли ноль, есть ли верхнее ограничение, можно ли вводить дроби? Без этих ответов набор тестовых данных будет опираться на догадки.
Отдельно договоритесь о способе ввода. Поле интерфейса может не позволять набрать буквы, тогда соответствующее правило на уровне интерфейса проверяется как ограничение ввода. Проверка серверной обработки запросов — отдельная задача со своим доступом и условиями. Не стоит считать ее выполненной только потому, что браузер заблокировал символ.
Разделите данные на классы эквивалентности
Класс эквивалентности объединяет значения, которые, по принятому предположению, обрабатываются одинаково. В учебной форме все целые числа от 1 до 10 должны приниматься. Поэтому число 5 может представлять допустимый класс. Значение 0 представляет целые числа ниже диапазона, а 11 — выше диапазона.
Это предположение помогает сократить перебор, но не доказывает, что внутри класса нет дефектов. Если в требованиях появляется дополнительное правило — например, для отдельных количеств меняется способ доставки, — прежнего деления может оказаться недостаточно. Классы нужно строить по фактическим правилам продукта.
| Класс входных данных | Представитель | Ожидаемый результат в примере |
|---|---|---|
| Целое число от 1 до 10 | 5 | Количество принято |
| Целое число меньше 1 | 0 | Значение отклонено |
| Целое число больше 10 | 11 | Значение отклонено |
| Дробное число | 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)»: в блоке функционального тестирования перечислены классы эквивалентности и граничные значения. Эти техники также названы в программе «Профессия Инженер по тестированию + ИИ». При сравнении обучения уточните, будете ли вы самостоятельно выделять классы по требованиям и получать обратную связь по набору проверок.



















