Валидация имейлов

Валидация имейлов

Валидация имейлов

Валидный имейл — это существующий, реальный имейл, на который можно отправить письмо. Задача программиста — создать валидацию имейла, т.е. проверку программой имейла на валидность. Задача тестировщика — проверить то, как программа валидирует имейлы, правильно ли она это делает.

Валидация имейлов
Валидация имейлов

Перед тем как писать валидацию, надо знать из чего состоит email адрес. Думаю известно всем что это «username@hostname».

Имя пользователя может в себе содержать:

    • латиницу
    • цифры
    • знаки! # $ % & ‘ * + — / =? ^ _ ` { | } ~
  • точку, за исключением первого и последнего знака, которая не может повторятся

Имя хоста состоит из нескольких компонентов, разделённых точкой и не превышающих 63 символа, и суффиксов (домены первого уровня). Компоненты, в свою очередь, состоят из латинских букв, цифр и дефисов, причём дефисы не могут быть в начале или в конце компонента. Суффиксы это ограниченный список доменов первого уровня.

Чит-лист для проверки поля email

1) Пустое поле email  -> Сообщение о незаполненном поле email

2) Email в нижнем регистре   -> Операция проводится успешно

3) Email в верхнем регистре   -> Операция проводится успешно

4) Email с цифрами в имени аккаунта   -> Операция проводится успешно

5) Email с цифрами в доменной части   -> Операция проводится успешно

6) Email с дефисом в имени аккаунта   -> Операция проводится успешно

7) Email с дефисом в доменной части   -> Операция проводится успешно

8) Email со знаком подчеркивания в имени аккаунта   -> Операция проводится успешно

9) Email со знаком подчеркивания в доменной части   -> Операция проводится успешно

10) Email с точками в имени аккаунта   -> Операция проводится успешно

11) Email с несколькими точками в доменной части   -> Операция проводится успешно

12) Email без точек в доменной части   -> Должно появится сообщение о неправильном или некорректном e-mail введеном в поле

13) Превышение длины email (>320 символов)   -> Должно появится сообщение о неправильном или некорректном e-mail введеном в поле

14) Отсутствие @ в email   -> Должно появится сообщение о неправильном или некорректном e-mail введеном в поле

15) Email с пробелами в имени аккаунта   -> Должно появится сообщение о неправильном или некорректном e-mail введеном в поле

16) Email с пробелами в доменной части   -> Должно появится сообщение о неправильном или некорректном e-mail введеном в поле

17) Email без имени аккаунта   -> Должно появится сообщение о неправильном или некорректном e-mail введеном в поле

18) Email без доменной части   -> Должно появится сообщение о неправильном или некорректном e-mail введеном в поле

19) Некорректный домен первого уровня (допустимо 2-63 букв после точки: .ru или например .americanexpress)   ->Должно появится сообщение о неправильном или некорректном e-mail введеном в поле

Вообще по доменным именам нужна отдельная статья, но оставим здесь интересую информацию.

Например домен:

  1. zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz.ru  — САмый последний домен в зоне ру.
  2. llanfairpwllgwyngyllgogerychwyrndrobwyll-llantysiliogogogoch.info — название деревни Лланвайр-Пуллгвингилл в Уэльсе на острове Англси, означающее «Церковь Святой Марии в ложбине, заросшей белым орешником, около быстрого водоворота, неподалёку от церкви Святого Тисилио и красной пещеры».

Базовые валидационные проверки Login/Password

  • Заполнить поле корректный login и корректный pass. Expected: успешно залогинен. Разлогиниться. Почистить кэш и куки (открыть/закрыть браузер?).
  • Оставить оба поля пустыми. Попытка входа. Expected: Сообщение об ошибке.
  • Оставить пустое поле login. Попытка входа. Expected: Сообщение об ошибке.
  • Оставить пустое поле password. Попытка входа. Expected: Сообщение об ошибке.
  • Ввeсти корректный login и некорректный pass. Expected: Сообщение об ошибке.
  • Ввeсти некорректный login, но корректный pass. Expected: Сообщение об ошибке.
  • Ввeсти некорректный login и некорректный pass. Expected: Сообщение об ошибке.
  • Заполнить поле login ввeсти корректный pass, а в поле пароля ввести корректный login. Expected: Сообщение об ошибке.
  • Ввeсти login <script>alert(123)</script> и корректный pass. Expected: Сообщение об ошибке.
  • Заполнить поле login SQL запрос (‘ or ‘a’ = ‘a’; DROP TABLE user; SELECT * FROM blog WHERE code LIKE ‘a%’;)   — структура запроса зависит от DB.
  • Заполнить поле login скрипт (<script>alert(“Hello, world!”)</alert>, <script>document.getElementByID(“…”).disabled=true</script>)
  • Заполнить поле login html-теги (<form action=”http://live.hh.ru”><input type=”submit”></form>)
  • Заполнить поле login сложную последовательность символов вроде “” , “”‘~!@#$%^&*()?>,./\<][ /*<!–“”, “${code}”;–>
  • Заполнить поле login текст состоящий из одних пробелов;
  • Заполнить поле login правильный login, начинающийся с нескольких пробелов, и правильный pass. Expected: Сообщение об ошибке или автоматическое обрезание пробелов.
  • Заполнить полеlogin правильный login, после которого следуют нескольких пробелов, и правильный pass. Expected: Сообщение об ошибке или автоматическое обрезание пробелов.
  • Ввeсти корректный login и корректный pass. Нажать на кнопку “Назад” в браузере. Expected:  или The page should be expired, или увидеть те же поля. Если второе – ввести в поля снова login и pass. Перейти. Залогинен?
  • Ввeсти корректный login. Указать pass с использованием букв РАЗНОГО регистра.
  • Ввeсти login с использованием букв РАЗНОГО регистра. Указать корректный pass.
  • Проверить ограничение на длину login и пароля при регистрации? Ввести  qqweqweqweqweqweqweqweqweqweqweqweqweqweqwe / qqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
  • Заполнить поле login/pass Aa!@#$%^&*()-_+=`~/\,.?><|b / PaSSword!@#$%^&*()-_+=`~/\,.?><| Есть ли ограничения на допустимые символы?
  • Открыть первый бразуер. Залогиниться валидным юзером. Открыть второй браузер. Залогиниться тем же самым валидным юзером. Разлогиниться в первом браузере. Перейти во второй браузер. Сделать что-нибудь, что может сделать только залогиненный юзер.
  • Открыть браузер. Ввести в поля валидные данные. Нажать на кнопку Login. Отключить интернет. Получить “страница недоступна”. Подключить интернет обратно. Зайти на сайт. Expected: не залогинен.
  • Блокируется ли акаунт/IP того, кто введет n-количество раз не правильный pass?
  • Установить фокус на поле login. Ввести текст. Нажать кнопку Tab на клавиатуре. Expected: фокус перемещается на поле пароля. Ввести текст. Нажать кнопку Tab на клавиатуре. Expected: фокус перемещается на галочку “remember me”. Нажать кнопку Space на клавиатуре. Expected: появилась галочка. Нажать кнопку Tab на клавиатуре. Expected: фокус перемещается на кнопку Login. Нажать кнопку Enter на клавиатуре. Expected: процесс пошёл.
  • Проверка на ‘Remember me on this computer’. Заполнить поля валидными данными. Чекнуть галочку Remember me. Залогиниться. Закрыть браузер. Открыть бразуер. Открыть страницу сайта. Expected: login для входа не требуется.
  • Ввeсти корректный login и корректный pass. Скопировать полученный url и вставить его в другой браузер. Expected: It should not display the user’s welcome page.

2 мысли о “Валидация имейлов”

  1. Привет, вы говорите что домены топ уровня могут содержать только 2-6 символов. (пункт 19)
    А как насчет брендовых доменов типа «.americanexpress» ?
    Получается, ошибочка.

    1. Привет! А вот статья уже и теряет актуальность, будем дорабатывать спасибо за замечание. Сейчас в основном до 63 символов, но есть и исключения. Внесу поправку в статью и добавлю пару примеров из Вики.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.