Ответ
Тестирование поля для телефона должно охватывать функциональность, валидацию, UX и безопасность.
1. Тестирование валидации и формата:
- Позитивные тесты: Ввод корректных номеров в разных форматах (с кодом страны, без, со скобками и дефисами).
+7 (912) 345-67-89791234567898 (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), протестируйте этот поток.