Ответ
Тестирование поля ввода — это проверка его корректной обработки данных, валидации и поведения. Вот структурированный подход:
1. Валидация данных (Positive & Negative Testing):
- Валидные данные: Ввод данных, которые должны быть приняты (корректный email, телефон, число в диапазоне).
- Невалидные данные: Проверка реакции на некорректный ввод:
- Неправильный формат (email без
@). - Запрещенные символы (скрипты, SQL-инъекции типа
' OR '1'='1). - Пустое поле (если оно обязательное).
- Пробелы в начале/конце (должны обрезаться?).
- Неправильный формат (email без
2. Проверка граничных значений и ограничений:
- Минимальная/максимальная длина: Ввод строки на 1 символ меньше, ровно на границе и на 1 символ больше лимита.
- Диапазон чисел: Проверка значений на нижней и верхней границе, а также за их пределами.
- Ограничение по типу: Только числа, только буквы и т.д.
3. Проверка поведения и UX:
- Копирование/вставка (Ctrl+C/Ctrl+V).
- Перетаскивание текста (drag & drop).
- Автозаполнение (браузерное или внутри приложения).
- Маска ввода (для телефонов, дат) — корректность подстановки символов.
- Сообщения об ошибках: Они должны быть понятными и появляться вовремя.
4. Тестирование безопасности (санитайзинг):
- Проверка, что потенциально опасные символы (
<,>,&,',") экранируются или удаляются, чтобы предотвратить XSS-атаки.
Пример набора тест-кейсов для поля "Имя пользователя" (макс. 20 символов, только латиница/цифры):
import re
def validate_username(username):
pattern = r'^[a-zA-Z0-9]{1,20}$'
return bool(re.match(pattern, username))
# Тестовые данные
test_cases = [
("ValidUser123", True), # Валидный
("", False), # Пустое
("A", True), # Минимальная длина (1)
("A" * 20, True), # Максимальная длина (20)
("A" * 21, False), # Превышение длины (21)
("User_Name", False), # Недопустимый символ '_'
("User<script>", False), # Опасные символы
(" User ", False), # Пробелы
]
for input_data, expected in test_cases:
result = validate_username(input_data)
assert result == expected, f"Failed for: '{input_data}'. Expected: {expected}, Got: {result}"
Инструменты: Для UI-тестов — Selenium, Cypress. Для API/бэкенд-валидации — юнит-тесты на языке разработки.