Можно ли не ставить галочку в чекбоксе и можно ли поставить две галочки одновременно
Что проверяют
Знаете ли вы, как чекбокс устроен на самом деле, и умеете ли из простого вопроса вытащить набор проверок. Следом почти всегда просят: «Напишите тест-кейсы для этого чекбокса» или «Чем он отличается от радиокнопки?».
Как отвечать
Коротко ответьте на оба вопроса, потом раскройте:
- не ставить галочку: можно, если чекбокс необязательный. Но бывает обязательный, например согласие с условиями: тогда форма без него не отправляется, а ошибка понятна пользователю. Полезная деталь: неотмеченный HTML-чекбокс вообще не попадает в данные формы, сервер получает не
false, а отсутствие поля, и бэкенд должен это правильно трактовать; - две галочки в одном чекбоксе: нельзя, у него два состояния, отмечен и не отмечен. Есть третье визуальное,
indeterminate(чёрточка у «Выбрать все», когда отмечена часть списка), но оно ставится только из скрипта и на отправку не влияет; - две галочки в группе: можно, чекбоксы в группе независимы. Если по требованиям выбор должен быть один, это ошибка выбора элемента, нужны радиокнопки.
Дальше покажите, какие проверки из этого вытекают:
- переключение кликом по квадрату и по подписи
label, пробелом с клавиатуры; - быстрый двойной клик: состояние не должно «застревать»;
- ограничение «не больше трёх вариантов»: граничные значения 0 и 3, попытка отметить четвёртый;
- «Выбрать все»: снятие одного пункта переводит родителя в
indeterminate; - сохранение состояния после ошибки валидации, кнопки «Назад» и перезагрузки;
- чекбокс с
disabledне переключается и не уходит в запрос.
Где спотыкаются
Отвечают «да» и «нет» и замолкают. Вопрос задан ради тест-дизайна, без списка проверок ответ звучит как ответ пользователя, а не тестировщика.
Путают чекбокс с радиокнопкой и говорят, что в группе можно выбрать только один вариант. Это поведение радиокнопок, у чекбоксов оно было бы багом или особым требованием.
Проверяют только интерфейс. Галочка может стоять на экране, а в запрос не попадать, поэтому стоит открыть вкладку Network в DevTools и посмотреть, что реально ушло на сервер.