Валидация имейлов
Валидный имейл — это существующий, реальный имейл, на который можно отправить письмо. Задача программиста — создать валидацию имейла, т.е. проверку программой имейла на валидность. Задача тестировщика — проверить то, как программа валидирует имейлы, правильно ли она это делает.
Перед тем как писать валидацию, надо знать из чего состоит 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 введеном в поле
Вообще по доменным именам нужна отдельная статья, но оставим здесь интересую информацию.
Например домен:
- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz.ru — САмый последний домен в зоне ру.
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-6 символов. (пункт 19)
А как насчет брендовых доменов типа «.americanexpress» ?
Получается, ошибочка.
Привет! А вот статья уже и теряет актуальность, будем дорабатывать спасибо за замечание. Сейчас в основном до 63 символов, но есть и исключения. Внесу поправку в статью и добавлю пару примеров из Вики.
В статье указано от 2 — 63 символов LOL
Да, а что именно смешно ?
Привет
Добрый день! ;-)))
Спасибо за чек-лист. Некоторые пункты пропустил, не додумался сам
Огромное пожалуйста ) Уже есть более свежие вещи, нужно найти силы и обновить тут многое
спасибо огромное за статью! Очень полезна! Успехов Вам!