Классы эквивалентности и граничные значения

Главный навык ручного тестировщика. Разбираем классы эквивалентности на живом поле ввода — с тренажёром, который считает ваше покрытие.

Представьте поле «Возраст». Ввести туда можно что угодно: числа, буквы, эмодзи, пробелы, минус, дробь, тысячу символов. Проверить всё нельзя. Значит, надо выбрать. Тест-дизайн — это набор техник, который превращает выбор из интуиции в ремесло.

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

Класс эквивалентности — множество значений, которые система обрабатывает одинаково. Если 25 и 40 проходят по одной и той же ветке кода, между ними нет разницы: проверив одно, вы получили ответ и про второе.

Правило: из каждого класса берём одно представительное значение. Для поля «возраст от 18 до 65» классы такие:

КлассПример значенияОжидание
Меньше минимума10Отказ с сообщением
Допустимый диапазон30Принято
Больше максимума90Отказ с сообщением
Не числоabcОтказ
Дробное18,5Отказ (требование — целое)
ПустоОтказ, поле обязательно
🎯 Ошибка новичка №1

Проверить 20, 25, 30, 35, 40 и написать «тщательно протестировал». Это одна проверка, повторённая пять раз. А вот «пусто», «17», «66» и «abc» — четыре разных класса, и именно там живут дефекты.

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

Дефекты любят края. Классическая причина — > вместо >= в одной строке кода. Поэтому к представителю класса всегда добавляют границы: последнее «нельзя» и первое «можно» с каждой стороны.

Для диапазона 18–65 обязательный минимум: 17, 18, 65, 66. Плюс представитель середины (например, 30) — итого пять значений вместо бесконечности.

Откуда брать классы, если требований мало

Смотрите на природу данных. Для любого поля почти всегда есть:

⚠️ Валидация на клиенте — не валидация

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

Тренажёр: подберите значения сами

Ниже — настоящее поле с настоящей валидацией. Вводите значения и смотрите, как оно реагирует. Тренажёр отмечает, какие классы вы уже покрыли, и показывает КПД набора: сколько новых классов приходится на одну проверку. Цель — закрыть все классы минимальным числом попыток.

🎯 Этот тренажёр есть в курсе

Практическая часть урока выполняется в браузере с проверкой результата. Попробовать бесплатно: тренажёр по вёрстке или зарегистрируйтесь — откроются уроки и тренажёры курса.

Что дальше

Классы и границы — фундамент. Но что делать, когда параметров несколько и они влияют друг на друга? Для этого есть попарное тестирование и таблицы решений — следующие два урока.

Это урок из курса «Ручной тестировщик»

В курсе 47 уроков и 36 тренажёров: тест-дизайн, вёрстка и UX, DevTools, API, SQL, Git и работа со стендом. Несколько уроков открыты бесплатно после регистрации.

Открыть бесплатные уроки Программа курса