Как проверить ограничение выбора в списке?
Что проверяют
Умеете ли вы применить граничные значения к интерфейсу, а не только к числовым полям. Под ограничением обычно понимают мультивыбор с лимитом, например «не больше трёх навыков». Следом спрашивают, что будет, если отправить запрос в обход интерфейса.
Как отвечать
Сначала уточните требование: минимум и максимум, что происходит при попытке превысить лимит (опции блокируются, появляется сообщение или заменяется самый ранний выбор), обязателен ли выбор вообще. Без этого нельзя сказать, какое поведение считать багом.
Дальше тест-дизайн. Пусть лимит равен 3:
- граничные значения: 0, 1, 2, 3 и попытка выбрать четвёртый. Для 0 проверить сообщение об обязательности, если поле обязательное;
- снятие выбора: выбрать 3, снять один, выбрать другой. Частый баг: счётчик не уменьшается, и после снятия список остаётся заблокированным;
- способы выбора: клик, клавиатура,
CtrlиShiftв нативном<select multiple>, кнопка «выбрать все», выбор после фильтрации поиском по списку; - сохранение: после сохранения и перезагрузки выбрано ровно то же, а при редактировании лимит учитывает уже выбранные элементы;
- сервер: отправить в API пять идентификаторов через Postman или DevTools. Сервер обязан вернуть ошибку валидации, а не записать всё подряд, потому что ограничение в интерфейсе обходится за минуту;
- повторы и мусор: один и тот же идентификатор дважды, несуществующий идентификатор, пустой массив.
В автотестах такие проверки хорошо параметризуются. В Playwright select_option принимает список значений для нативного списка, а кастомные списки на div проверяются кликами по опциям и ассертом на aria-disabled, aria-selected или текст ошибки.
Где спотыкаются
Проверяют только интерфейс. Кнопку блокирует фронтенд, а через API в базу всё равно проходит десять значений, и такой баг находят уже на проде.
Не проверяют снятие выбора и повторный выбор. Ошибки со счётчиком живут именно там, и на них чаще всего жалуются пользователи.
Берут границы не из требования, а наугад: проверяют 1 и 10, пропуская 3 и 4, где и сидит логика ограничения.