Назад к вопросам
Junior
100
questionbank
Как протестировать поле для ввода адреса электронной почты?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Для тестирования поля ввода адреса электронной почты необходимо проверить его функциональные и нефункциональные аспекты.
Типы тестов:
-
Позитивные тесты:
- Ввод валидных адресов (с разными доменами, поддоменами, специальными символами в локальной части).
- Ввод адресов различной длины в пределах лимита.
- Ввод адресов с кириллическими доменами (IDN).
-
Негативные тесты:
- Отсутствие символа '@'.
- Отсутствие домена (после '@').
- Отсутствие символа '.' в домене.
- Наличие недопустимых символов (пробелы, спец. символы вне допустимых позиций).
- Некорректное количество символов '.' в домене.
- Домен верхнего уровня короче 2 символов.
- Пустое поле.
- Ввод только пробелов.
- Превышение максимальной разрешенной длины адреса.
-
UI/UX тесты:
- Корректное отображение поля и лейбла.
- Плейсхолдер (при его наличии).
- Сообщения об ошибках (их текст, расположение, стиль).
- Состояние поля при фокусе, наведении.
- Доступность (фокусировка с клавиатуры, скрин-ридеры).
-
Проверки валидации:
- Клиентская валидация (проверка на фронтенде, без отправки данных на сервер).
- Серверная валидация (проверка на бэкенде после отправки формы).
- Соответствие клиентской и серверной валидации.
-
Тесты производительности:
- Скорость валидации на больших объемах данных (актуально для систем, где адрес используется как логин или ключ).
-
Тесты безопасности:
- Ввод скриптов (XSS).
- Ввод SQL-инъекций.
- Проверка на возможность подбора адреса через перебор (brute force).
Примеры тестовых данных:
-
Валидные:
test@example.comfirstname.lastname@example.co.uktest+alias@example.comtest@example.com.(если разрешено)user123@sub.domain.example.comtest@xn--p1ai(для.рфдомена)
-
Невалидные:
testexample.com(нет '@')test@(нет домена)test@example(нет '.')test@example..com(двойная точка)test.@example.com(точка перед '@').test@example.com(точка в начале)test@example.c(короткий TLD)test@example..ru(двойная точка)test@example-.com(дефис перед точкой)test@-example.com(дефис после @)test user@example.com(пробел)"Manager @"example.com` (кавычки)
Автоматизация:
Для автоматизации используются фреймворки (Selenium, Puppeteer, Cypress) для взаимодействия с UI и библиотеки для проверки валидации на бэкенде.
# Пример автоматизированной проверки поля email с использованием Selenium (структурно)
from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
# Предположим, поле ввода имеет локатор By.ID, 'email_input'
EMAIL_INPUT_LOCATOR = (By.ID, 'email_input')
ERROR_MESSAGE_LOCATOR = (By.ID, 'email_error_message') # Локатор для сообщения об ошибке
def test_email_field_validation(driver):
# Тест валидного email
driver.find_element(*EMAIL_INPUT_LOCATOR).send_keys("test@example.com")
# Ждем исчезновения или отсутствия сообщения об ошибке
# Проверяем, что поле считается валидным (например, по классу CSS или атрибуту)
# Тест невалидного email
driver.find_element(*EMAIL_INPUT_LOCATOR).clear()
driver.find_element(*EMAIL_INPUT_LOCATOR).send_keys("invalid-email")
# Ждем появления сообщения об ошибке
error_message = driver.find_element(*ERROR_MESSAGE_LOCATOR)
assert error_message.is_displayed()
assert "Некорректный формат email" in error_message.text # Пример проверки текста ошибки
# Добавить другие негативные и позитивные сценарии
// Пример наброска UI теста на валидацию поля Email с TestNG и Selenium
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.testng.Assert;
import org.testng.annotations.Test;
public class EmailFieldTest {
private WebDriver driver; // Инициализация driver происходит в @BeforeMethod
@Test
public void testValidEmailInput() {
WebElement emailInput = driver.findElement(By.id("email_input")); // Пример локатора
emailInput.sendKeys("valid.user@domain.co.uk");
// Дополнительные проверки: отсутствие сообщения об ошибке, валидное состояние поля
WebElement errorMessage = driver.findElement(By.id("email_error_message")); // Пример локатора
Assert.assertFalse(errorMessage.isDisplayed(), "Сообщение об ошибке отображается для валидного email");
}
@Test
public void testInvalidEmailInputMissingAt() {
WebElement emailInput = driver.findElement(By.id("email_input"));
emailInput.sendKeys("invalid-email.com");
// Действие, которое запускает валидацию (напр., клик на кнопку "Отправить")
driver.findElement(By.id("submit_button")).click(); // Пример локатора
WebElement errorMessage = driver.findElement(By.id("email_error_message"));
Assert.assertTrue(errorMessage.isDisplayed(), "Сообщение об ошибке не отображается для невалидного email (нет @)");
// Проверка текста сообщения об ошибке
Assert.assertTrue(errorMessage.getText().contains("Некорректный формат"), "Неверный текст сообщения об ошибке");
}
// Добавить другие тесты для разных невалидных сценариев
}