Как протестировать поле ввода номера телефона в веб-форме?

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

Ответ

Тестирование поля для телефона должно охватывать функциональность, валидацию, UX и безопасность.

1. Тестирование валидации и формата:

  • Позитивные тесты: Ввод корректных номеров в разных форматах (с кодом страны, без, со скобками и дефисами).
    • +7 (912) 345-67-89
    • 79123456789
    • 8 (912) 345-67-89
  • Негативные тесты:
    • Неверная длина: Слишком короткий (123) или длинный (791234567890123) номер.
    • Недопустимые символы: Буквы (abc), спецсимволы (!@#), пробелы в неправильных местах.
    • Пустое поле (если оно обязательно).
    • Некорректный код страны.

2. Тестирование пользовательского опыта (UX):

  • Маска ввода: Автоматическое форматирование при наборе (появление скобок, дефисов).
  • Автодополнение: Работа атрибутов autocomplete="tel".
  • Копирование/Вставка: Корректная обработка вставленного текста (очистка от лишних символов).
  • Подсказки (placeholder) и сообщения об ошибках.

3. Пример автоматизированного теста (Python + Selenium/Pytest):

def test_phone_field_validation():
    driver.find_element(By.ID, "phone-input").send_keys("9123456789")
    driver.find_element(By.ID, "submit-btn").click()
    # Проверяем, что валидация прошла (нет сообщения об ошибке)
    error_elements = driver.find_elements(By.CLASS_NAME, "error-message")
    assert len(error_elements) == 0, "При валидном номере не должно быть ошибки"

def test_phone_field_invalid_input():
    driver.find_element(By.ID, "phone-input").send_keys("abc")
    driver.find_element(By.ID, "submit-btn").click()
    # Проверяем, что появилось сообщение об ошибке
    error_message = driver.find_element(By.CLASS_NAME, "error-message").text
    assert "Введите корректный номер" in error_message

4. Дополнительные проверки:

  • Санобработка (sanitization): Убедитесь, что лишние пробелы, тире, скобки удаляются или игнорируются перед сохранением в БД.
  • Безопасность: Проверка на SQL-инъекции и XSS через поле ввода.
  • Интеграция: Если используется сервис проверки/подтверждения номера (например, через SMS), протестируйте этот поток.