Секреты Тестирования Регистрации

Тесты для поля почты от популярных почтовиков.
(нет такого сайта как 9m.com, это просто пример)
Можно(позитивные):
— локальная часть начинается с цифры (4test@9m.com)
— локальная часть начинается с буквы (test@9m.com)
— локальная часть заканчивается буквой (test@9m.com)
— локальная часть заканчивается цифрой (test4@9m.com)
— локальная часть содержит нижнее подчеркивание (te_st@9m.com)
(но не начинается и не заканчивается им)
— локальная часть содержит точку (te.st@9m.com)
(но не начинается и не заканчивается ей)
— локальная часть содержит дефис (te-st@9m.com)
(но не начинается и не заканчивается им)
— локальная часть из 4 символов (test@9m.com)
— локальная часть из 32 символов (testtesttesttesttesttesttesttest@9m.com)
— домен из двух букв (или буквы + цифры) (test@9m.ru)
— поддомен из двух символов(букв и\или цифр) (test@9m.com)
— поддомен из буквы, дефиса и буквы(test@m-t.com)
— поддомен + поддомен + домен(test@mini.9m.com)
Нельзя(должно вызвать предупреждение, негативные):
— имеет спецзнаки в локальной части (#%^$@9m.com)
— содержит пробелы в локальной части (te st@9m.com)
— локальная часть начинается с точки (.test@9m.com)
— локальная часть начинается с дефиса (-test@9m.com)
— локальная часть начинается нижним подчеркиванием (_test@9m.com)
— локальная часть заканчивается точкой (test.@9m.com)
— локальная часть заканчивается дефисом (test-@9m.com)
— локальная часть заканчивает нижним подчеркиванием (test_@9m.com)
— локальная часть содержит точки подряд (te..st@9m.com)
— локальная часть содержит нижние подчеркивания подряд (te__st@9m.com)
— локальная часть содержит дефисы подряд (te—st@9m.com)
— локальная часть содержит сочетание разрешенных спецсимволов (te.-_.st@9m.com)
— локальная часть из 3 символов (tes@9m.com)
— локальная часть из 33 символов (testtesttesttesttesttesttesttesto@9m.com)
— пустая локальная часть (@9m.com)
— пустая доменная часть (test@)
— пустые локальная и доменная части (@)
— два знака @@ подряд (test@@9m.com)
— два знака @@ через символы (te@st@9m.com)
— не содержит знак @ (test9m.com)
— доменная часть не содержит точку (test@9mcom)
— поддомен начинающийся с точки (test@.9m.com)
— поддомен начинающийся с дефиса (test@-9m.com)
— поддомен начинающийся с нижнего подчеркивания (test@_9m.com)
— домен начинающийся с дефиса (test@9m.-com)
— домен начинающийся с нижнего подчеркивания (test@9m._com)
— поддомен заканчивающийся дефисом (test@9m-.com)
— поддомен заканчивающийся нижним подчеркиванием (test@9m_.com)
(помни что точка служит разделением поддомена от домена и других поддоменов. Это значит домен может начинаться с точки, а поддомен заканчиваться точкой)
— доменная часть заканчивающаяся точкой (test@9m.com.)
— доменная часть заканчивающаяся дефисом (test@9m.com-)
— доменная часть заканчивающаяся нижним подчеркиванием (test@9m.com_)
— доменная часть содержит точки подряд (test@9m..com)
— доменная часть содержит дефисы подряд (test@9—m.com)
— доменная часть содержит нижние подчеркивания подряд (test@9__m.com)
— доменная часть содержит сочетание разрешенных спецсимволов (test@9-_m.com)
— домен первого уровня из одного символа (test@9m.c)
— поддомен из одного символа (test@m.com)
— имеет спецзнаки в доменной части (test@#$.com)
— содержит пробелы в доменной части (test@9m .com)
— домен содержит только цифры (test@9m.894)
— поддомен содержит только цифры (test@940.com)
(поддомен из одних цифр на самом деле существует, но здесь мы проверяем на адреса популярных бесплатных почтовиков)
— пробелы перед и после емаила ( test@9m.com )
— одни пробелы
По RFC
Знакомство с RFC и их представлениями правильного адреса
электронной почты меня ВЗБЕСИЛО.
Честно говоря я до сих пор успокоиться не могу =)
И во многом я с этим стандартом не согласен.
В RFC разрешено использовать спецсимволы:
!#$%&`*+/=?^`{|}~
Разрешены различные скобки и кавычки:
()[]»»
Все что пишется в скобках и кавычках подчиняется другим законам.
Так например можно повторно использовать знак @
если он в локальной части и в двойных кавычках.
Разрешено писать IP адрес с доменной части
Разрешено писать адреса ipv6 и ipv4
Разрешено цитировать некоторые спецсимволы через бэкслеш \
Разрешен Punicode

Все эти правила сильно усложняют написание проверки для программиста.

А некоторые глупые менеджеры отмазываются от багов в емаил поле фразой «RFC не запрещено».
Если тебе попадется такой «умный» менеджер — я тебя поздравляю.
Ты можешь найти еще с десяток багов.
Просто потому что очень редко встречается полностью написаная по
стандартам RFC валидация поля.
Регулярное выражение наверное будет размером с лист А4 без пробелов =)
Я не буду повторять здесь то что можно увидеть выше у популярных почтовиков, но покажу в чем есть отличия.
Во многом RFC с популярными почтовиками похожи, но
у RFC больше правил и больше символов разрешается использовать.
— локальная часть не может быть больше 64 символов.
65 нельзя. 64 можно.
— поддомен не может быть больше 63 символов
— домен первого уровня не должен быть больше 63 символов
— может быть два дефиса подряд в поддомене
— может быть дефис в домене
С длинной адреса тоже не все так просто.
В RFC 3696 указывается 64 символа для локальной части
и 255 символов для доменной, а вместе не больше 320.
320 на весь адрес.
В RFC 5321 для всего адреса 256 символов .
Есть ограничение в RFC 2821 по длине адреса в почте и равно оно также 256.
Однако имеется ввиду прямой путь, а прямой путь помимо адреса содержит угловые скобки <>.
Это минус 2. Поэтому максимальная длина почтового адреса может быть не больше 254 символов. (на весь адрес)
— в локальной части можно использовать двойные кавычки
— в локальной части нельзя использовать незакрытые двойные кавычки
— можно test@io
— можно test@e.com
— можно test@iana.a
— нельзя test\@test@iana.org
— можно 123@iana.org
— можно test@123.com
— можно test@iana.123
— можно test@255.255.255.255
— можно abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefgh
iklm@iana.org
(64 символа в локальной части)
— нельзя abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefgh
iklmn@iana.org
(65 символов в локальной части)
— можно test@abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzab
cdefghikl.com
(63 символа в поддомене)
— нельзя test@abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzab
cdefghiklm.com
(64 символа в поддомене)
— можно test@mason-dixon.com
— можно test@c—n.co
— можно test@iana.co-uk
— можно a@a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.
m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v
— можно abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefgh
iklm@abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghikl.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghikl.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghi
(254 символа)
— нельзя abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefgh
iklm@abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghikl.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghikl.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghij
(255 символов)
— нельзя a@abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd
efghikl.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghikl.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghikl.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefg.hijk
(доменная часть 255 символов)
— можно «test»@iana.org
— можно «»@iana.org
— нельзя «»»@iana.org
— можно «\a»@iana.org
— можно «\»»@iana.org
— нельзя «\»@iana.org
— можно «\\»@iana.org
— нельзя test»@iana.org
— нельзя «test@iana.org
— нельзя «test»test@iana.org
— нельзя test»test»@iana.org
— нельзя «test»»test»@iana.org
— нельзя «test».»test»@iana.org
— нельзя «test».test@iana.org
— нельзя (test@iana.org
— нельзя test@(iana.org
— нельзя test@[1.2.3.4
— нельзя «test\»@iana.org
— нельзя (comment\)test@iana.org
— нельзя test@iana.org(comment\)
— нельзя test@iana.org(comment\
— нельзя test@[RFC-5322-domain-literal]
— нельзя test@iana/icann.org
— нельзя test.(comment)test@iana.org
— нельзя «test\©»@iana.org
— можно test@org
— можно test@test.com
— можно test@[255.255.255.255]
— нельзя test@a[255.255.255.255]
(в доменой части буква + IP )
— нельзя test@[255.255.255]
(неполный IP)
— нельзя test@[255.255.255.255.255]
— нельзя test@[255.255.255.256]
(не больше 255)
— нельзя test@[IPv6:1111:2222:3333:4444:5555:6666:7777]
— можно test@[IPv6:1111:2222:3333:4444:5555:6666:7777:8888]
— нельзя test@[IPv6:1111:2222:3333:4444:5555:6666:7777:8888:9999]
— нельзя test@[IPv6:1111:2222:3333:4444:5555:6666:7777:888G]
— можно test@[IPv6:1111:2222:3333:4444:5555:6666::8888]
— можно test@[IPv6:1111:2222:3333:4444:5555::8888]
— нельзя test@[IPv6:1111:2222:3333:4444:5555:6666::7777:8888]
— нельзя test@[IPv6::3333:4444:5555:6666:7777:8888]
— можно test@[IPv6:::3333:4444:5555:6666:7777:8888]
— нельзя test@[IPv6:1111::4444:5555::8888]
— можно test@[IPv6:::]
— нельзя test@[IPv6:1111:2222:3333:4444:5555:255.255.255.255]
— можно test@[IPv6:1111:2222:3333:4444:5555:6666:255.255.255.255]
— нельзя test@[IPv6:1111:2222:3333:4444:5555:6666:7777:255.255.255.255]
— можно test@[IPv6:1111:2222:3333:4444::255.255.255.255]
— нельзя test@[IPv6:1111:2222:3333:4444:5555:6666::255.255.255.255]
— нельзя test@[IPv6:1111:2222:3333:4444:::255.255.255.255]
— нельзя test@[IPv6::255.255.255.255]
Можно использовать кириллические домены или домены на другом языке.
Браузер просто переделывает вид домена в нужную кириллицу,
но на самом деле она остается в виде набора латинских символов и называется punycode (вид его начинается с xn--)
— можно test@xn--hxajbheg2az3al.xn--jxalpdlp
— можно xn--test@iana.org
(перейди на следующую страницу…)

20 комментариев

  1. Очень полезный материал! Больше пиши подобного. Именно по таким статьям можно научиться. Да, многие будут спорить, что не прав и сделал работу за новичков и лишил их возможности думать. Но, а как же тогда можно научится чему-то не разобрав пару десятков подробных примеров??
    Также хочу почитать про секреты тестирования поиска на сайте и корзины.

  2. Привет, Артем. Опечатка на второй странице в секретах тестирования регистрации.
    — Локальная часть из одной цифры (4@maeshrut-testirovshika.ru)

  3. Очень полезная статья, спасибо. Всегда интересно посмотреть — так а как же оно на практике делается)
    Так получается если по документации поддерживается протокол RFC 6530, со всякими китайскими и др языками, то достаточно проверить условно:
    — можно test@xn--hxajbheg2az3al.xn—jxalpdlp
    — можно xn--test@iana.org
    и они все попадут в этот перечень?

  4. Очень полезно для начинающих. Я сама заканчивала курсы тестировщиков. Могу сказать из опыта, что нас гоняли в основном по методологии (где-то 1,5 месяца из 3,5 ушло на это). А вот именно такие вещи нам не объясняли. Додумывали сами. И очень жаль.

  5. Спасибо! Пока только вливаюсь в сферу тестирования ПО и статьи написанные без всяких примудростей очень помогают. Интересно было бы почитать о тестировании веб приложений)

  6. Толковая статья, но на проектах зачастую нет времени протестировать полностью форму регистрации да и нет смысла, т.к. пользователь это вам не тестировщик)), а то что вылезет баг у пользователя не значит, что вы его найдете).(вспомнился закон Парето)
    Но относительно aaa@bbb.cc, буду иметь ввиду(я над этим как то и не задумывался)
    Спасибо за статью.

  7. Спасибо большое за статью!! Для начинающих тестировщиков это просто сокровище!! Я читала разную информацию, как проверять email адрес, но не удавалось все это, так хорошо проанализировать и разложить по полочкам. Столкнулась с тем, что некоторые требования, из разных источников, противоречат друг другу и у разных почтовиков свои требования. Тяжело все это собрать в одну кучу и понять, как тестировать!! Спасибо за Ваш труд!!

  8. Спасибо огромное за данную статью… Я начинающий тестировщик,на курсах сплошная теория… все очень поверхностно и как слепой котенок пытаюсь что-то глубже понять… Прочла вашу статью и восприятие данного материала … просто информация открыла глаза на реальность.. Спасибо!!!

  9. Артём спасибо! Я тоже начинающий тестировщик, но доже и не подозревала, что может быть столько проверок! Теперь твоя статья будет, как руководство пользователя. Спасибо тебе, за твою работу и за то, что делишься своим опытом!

  10. Локальная часть может начинаться и заканчиваться нижним подчеркиванием (b_@marshrut-testirovshika.ru)
    а в примере только заканчивается, перечитывал на досуге и увидел))

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