Ответ
Тестирование поля email требует комбинации техник для проверки валидации, функциональности и UX.
1. Эквивалентное Разделение и Анализ Граничных Значений:
- Валидные классы эквивалентности:
user@example.com,first.last@sub.domain.co.uk,user+tag@example.org. - Невалидные классы: отсутствие
@или домена, двойные точки (user..name@ex.com), спецсимволы в домене. - Граничные значения: длина строки (макс. 254 символа), пустая строка.
2. Тестирование Состояний и Переходов:
- Проверить состояния поля: пустое, с валидным email, с невалидным email, в фокусе.
- Проверить переходы: ввод символов, вставка, очистка, отправка формы.
3. Пример теста на JavaScript (Jest):
describe('Email field validation', () => {
test('accepts valid email formats', () => {
const validEmails = [
'simple@example.com',
'very.common@example.com',
'disposable.style.email.with+symbol@example.com',
'other.email-with-dash@example.com'
];
validEmails.forEach(email => {
expect(validateEmail(email)).toBe(true);
});
});
test('rejects invalid email formats', () => {
const invalidEmails = [
'plainaddress',
'@no-local-part.com',
'user@.no-domain.com',
'user@domain..com'
];
invalidEmails.forEach(email => {
expect(validateEmail(email)).toBe(false);
});
});
});
4. Дополнительные проверки:
- Функциональность: автозаполнение, копирование/вставка.
- UX: отображение ошибок, подсказки (placeholder).
- Безопасность: попытка инъекции (например, SQL через локальную часть).
- Интеграция: совпадение валидации на фронтенде и бэкенде.