Как протестировать форму регистрации на веб-сайте?

«Как протестировать форму регистрации на веб-сайте?» — вопрос из категории Веб-тестирование, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Тестирование формы регистрации включает проверку функциональности, валидации, безопасности и удобства использования.

Основные области тестирования и примеры:

  1. Позитивные тесты (валидные данные):

    • Успешная регистрация с корректными данными.
    • Проверка подтверждения пароля (если есть поле "Повторите пароль").
    • Регистрация с минимально/максимально допустимой длиной полей.
  2. Негативные тесты и валидация:

    • Пустые обязательные поля.
    • Невалидный email (user@, user@example, user@.com).
    • Слабый пароль (менее 8 символов, без цифр, без заглавных букв).
    • Пароли не совпадают в полях "Пароль" и "Подтверждение пароля".
    • Повторяющийся email (уже зарегистрированный в системе).
    • SQL-инъекции и XSS в полях ввода (например, ' OR '1'='1).
  3. Тестирование граничных значений:

    • Длина имени: 1 символ, 255 символов, 256 символов (должна быть ошибка).
    • Пароль с максимально допустимой длиной.
  4. UI/UX и функциональность:

    • Валидация в реальном времени (подсветка ошибок при вводе).
    • Понятные сообщения об ошибках.
    • Работа кнопки "Отправить" (активна/неактивна).
    • Перенаправление после успешной регистрации (например, на страницу подтверждения).

Пример теста валидации email на JavaScript (Jest):

test('Email validation rejects invalid formats', () => {
  expect(validateEmail('plainaddress')).toBe(false);
  expect(validateEmail('@example.com')).toBe(false);
  expect(validateEmail('user@example')).toBe(false);
  expect(validateEmail('user@example.com')).toBe(true);
});
  1. Дополнительные проверки:
    • CAPTCHA (если есть).
    • Отправка email для подтверждения (проверить получение письма).
    • Валидация на стороне сервера (даже если фронтенд её пропустил).
    • Производительность при медленном соединении.