Ответ
Я систематически проверяю поле ввода, используя комбинацию техник тест-дизайна для покрытия функциональности, удобства использования и безопасности.
Базовые сценарии проверки:
-
Валидные данные
- Ввод корректных данных, соответствующих спецификации (например,
name@example.comдля email).
- Ввод корректных данных, соответствующих спецификации (например,
-
Граничные значения и пределы
- Минимальная длина: Пустая строка (если поле необязательное), один символ.
- Максимальная длина: Ввод строки максимально допустимой длины, попытка ввода на 1 символ больше.
- Граничные значения для чисел: Минимум, максимум, значения чуть ниже/выше границ.
-
Некорректные (невалидные) данные
- Запрещенные символы (эмодзи, скрипты, спецсимволы для текстового поля).
- Неверный формат (дата, email, номер телефона).
- SQL-инъекции (
' OR '1'='1), XSS-пейлоады (<script>alert(1)</script>).
-
Поведение и интерактивность
- Копирование (Ctrl+C), вставка (Ctrl+V), вырезание (Ctrl+X).
- Отмена действий (Ctrl+Z) и повтор (Ctrl+Y).
- Автозаполнение браузера.
- Очистка поля (крестик или кнопка "Clear").
-
Визуальная обратная связь и доступность
- Отображение плейсхолдера и его исчезновение при фокусе.
- Подсветка ошибок (цвет рамки, текст сообщения).
- Навигация с клавиатуры (Tab, Shift+Tab, Enter).
- Работа со скринридерами (aria-атрибуты).
Пример набора тестов для поля "Email" (Python, pytest):
import pytest
# Валидные данные (Positive tests)
VALID_EMAILS = ["test@example.com", "user.name+tag@domain.co.uk"]
# Невалидные данные (Negative tests)
INVALID_EMAILS = ["", "invalid", "@domain.com", "test@.com", "a" * 256 + "@test.com"]
@pytest.mark.parametrize("email", VALID_EMAILS)
def test_valid_email_accepted(email_input_field, email):
email_input_field.set_value(email)
email_input_field.blur() # Имитация потери фокуса
assert email_input_field.is_valid() == True
assert email_input_field.get_error_message() == ""
@pytest.mark.parametrize("email", INVALID_EMAILS)
def test_invalid_email_rejected(email_input_field, email):
email_input_field.set_value(email)
email_input_field.blur()
assert email_input_field.is_valid() == False
# Проверяем, что сообщение об ошибке отображается и не пустое
assert len(email_input_field.get_error_message()) > 0