Классы эквивалентности и граничные значения
Главный навык ручного тестировщика. Разбираем классы эквивалентности на живом поле ввода — с тренажёром, который считает ваше покрытие.
Представьте поле «Возраст». Ввести туда можно что угодно: числа, буквы, эмодзи, пробелы, минус, дробь, тысячу символов. Проверить всё нельзя. Значит, надо выбрать. Тест-дизайн — это набор техник, который превращает выбор из интуиции в ремесло.
Классы эквивалентности
Класс эквивалентности — множество значений, которые система обрабатывает одинаково. Если 25 и 40 проходят по одной и той же ветке кода, между ними нет разницы: проверив одно, вы получили ответ и про второе.
Правило: из каждого класса берём одно представительное значение. Для поля «возраст от 18 до 65» классы такие:
| Класс | Пример значения | Ожидание |
|---|---|---|
| Меньше минимума | 10 | Отказ с сообщением |
| Допустимый диапазон | 30 | Принято |
| Больше максимума | 90 | Отказ с сообщением |
| Не число | abc | Отказ |
| Дробное | 18,5 | Отказ (требование — целое) |
| Пусто | — | Отказ, поле обязательно |
Проверить 20, 25, 30, 35, 40 и написать «тщательно протестировал». Это одна проверка, повторённая пять раз. А вот «пусто», «17», «66» и «abc» — четыре разных класса, и именно там живут дефекты.
Граничные значения
Дефекты любят края. Классическая причина — > вместо >= в одной строке кода.
Поэтому к представителю класса всегда добавляют границы: последнее «нельзя» и первое «можно»
с каждой стороны.
Для диапазона 18–65 обязательный минимум: 17, 18, 65, 66. Плюс представитель середины (например, 30) — итого пять значений вместо бесконечности.
Откуда брать классы, если требований мало
Смотрите на природу данных. Для любого поля почти всегда есть:
- пусто / только пробелы;
- минимальная и максимальная длина (и на один символ за границей);
- допустимые и недопустимые символы (кириллица, латиница, цифры, спецсимволы, эмодзи);
- ноль, отрицательное, очень большое число — для числовых;
- регистр — важен ли он;
- пробелы по краям — обрезаются или нет;
- вставка из буфера вместо ввода с клавиатуры — часто обходит валидацию;
- отправка в обход интерфейса — запрос к API напрямую, минуя проверки на фронтенде.
Если поле ограничено только в браузере, любой может отправить запрос напрямую и положить в базу что угодно. Проверка «а что будет, если послать это же значение в API?» находит дефекты регулярно — и это дефекты уровня «данные испорчены», а не «неровная кнопка».
Тренажёр: подберите значения сами
Ниже — настоящее поле с настоящей валидацией. Вводите значения и смотрите, как оно реагирует. Тренажёр отмечает, какие классы вы уже покрыли, и показывает КПД набора: сколько новых классов приходится на одну проверку. Цель — закрыть все классы минимальным числом попыток.
Практическая часть урока выполняется в браузере с проверкой результата. Попробовать бесплатно: тренажёр по вёрстке или зарегистрируйтесь — откроются уроки и тренажёры курса.
Что дальше
Классы и границы — фундамент. Но что делать, когда параметров несколько и они влияют друг на друга? Для этого есть попарное тестирование и таблицы решений — следующие два урока.
Это урок из курса «Ручной тестировщик»
В курсе 47 уроков и 36 тренажёров: тест-дизайн, вёрстка и UX, DevTools, API, SQL, Git и работа со стендом. Несколько уроков открыты бесплатно после регистрации.