Как протестировать чекбокс (флажок)?

«Как протестировать чекбокс (флажок)?» — вопрос из категории Техники тест-дизайна, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Тестирование чекбокса охватывает его независимое поведение (в отличие от радиокнопок) и взаимодействие с интерфейсом.

1. Функциональное тестирование основного сценария:

  • Изменение состояния: клик переключает чекбокс между checked и unchecked.
  • Независимость: состояние одного чекбокса не влияет на другие (если они не сгруппированы логически, как "выбрать все").
  • Сохранение состояния: значение (true/false) корректно передается при отправке формы.

2. Проверка состояний и атрибутов:

  • checked (отмечен), unchecked (не отмечен), indeterminate (неопределенное состояние для групповых чекбоксов).
  • disabled — элемент виден, но неактивен для взаимодействия.
  • required — для обязательного согласия.

3. UI/UX и доступность:

  • Визуальное отображение всех состояний (включая :hover, :focus).
  • Клик работает как по самому чекбоксу, так и по связанному <label>.
  • Управление с клавиатуры: Tab для фокуса, Space для переключения.
  • Наличие ARIA-атрибутов (aria-checked, aria-label).

4. Пример автотеста (Python + Selenium):

def test_checkbox_basic_flow():
    checkbox = driver.find_element(By.ID, "terms-checkbox")
    # 1. Проверяем начальное состояние (не выбран)
    assert not checkbox.is_selected(), "Чекбокс изначально выбран"
    # 2. Выбираем чекбокс
    checkbox.click()
    assert checkbox.is_selected(), "Чекбокс не стал выбранным после клика"
    # 3. Снимаем выбор
    checkbox.click()
    assert not checkbox.is_selected(), "Чекбокс не снял выбор после второго клика"
    # 4. Проверяем disabled состояние
    disabled_checkbox = driver.find_element(By.ID, "disabled-checkbox")
    assert not disabled_checkbox.is_enabled(), "Чекбокс должен быть disabled"

5. Специфичные сценарии:

  • Группа чекбоксов: функция "Выбрать все" / "Снять все".
  • Каскадное поведение: в древовидных структурах.
  • Валидация формы: отправка с обязательным, но неотмеченным чекбоксом.