Назад к вопросам
Junior
100
questionbank

Как протестировать поле для ввода адреса электронной почты?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Для тестирования поля ввода адреса электронной почты необходимо проверить его функциональные и нефункциональные аспекты.

Типы тестов:

  1. Позитивные тесты:

    • Ввод валидных адресов (с разными доменами, поддоменами, специальными символами в локальной части).
    • Ввод адресов различной длины в пределах лимита.
    • Ввод адресов с кириллическими доменами (IDN).
  2. Негативные тесты:

    • Отсутствие символа '@'.
    • Отсутствие домена (после '@').
    • Отсутствие символа '.' в домене.
    • Наличие недопустимых символов (пробелы, спец. символы вне допустимых позиций).
    • Некорректное количество символов '.' в домене.
    • Домен верхнего уровня короче 2 символов.
    • Пустое поле.
    • Ввод только пробелов.
    • Превышение максимальной разрешенной длины адреса.
  3. UI/UX тесты:

    • Корректное отображение поля и лейбла.
    • Плейсхолдер (при его наличии).
    • Сообщения об ошибках (их текст, расположение, стиль).
    • Состояние поля при фокусе, наведении.
    • Доступность (фокусировка с клавиатуры, скрин-ридеры).
  4. Проверки валидации:

    • Клиентская валидация (проверка на фронтенде, без отправки данных на сервер).
    • Серверная валидация (проверка на бэкенде после отправки формы).
    • Соответствие клиентской и серверной валидации.
  5. Тесты производительности:

    • Скорость валидации на больших объемах данных (актуально для систем, где адрес используется как логин или ключ).
  6. Тесты безопасности:

    • Ввод скриптов (XSS).
    • Ввод SQL-инъекций.
    • Проверка на возможность подбора адреса через перебор (brute force).

Примеры тестовых данных:

  • Валидные:

    • test@example.com
    • firstname.lastname@example.co.uk
    • test+alias@example.com
    • test@example.com. (если разрешено)
    • user123@sub.domain.example.com
    • test@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("Некорректный формат"), "Неверный текст сообщения об ошибке");
    }

    // Добавить другие тесты для разных невалидных сценариев
}