Как Тестировать? Форма Входа

Я рассмотрю вариант где нет никакой документации и приходится опираться на опыт и здравый смысл.
Иначе документация и есть то правило на которое необходимо равняться. Тогда тестируй и документацию.
Я возьму часто встречающуюся форму с двумя полями:
логин
пароль
Shot124
Под логином может быть емаил, номер телефона или ник.
— найти форму входа должно быть легко
Она должна быть на виду или доступна в один клик.
Пользователь должен сразу понять, что этот сайт имеет форму входа.
Иначе пользователь просто не поймет, или пропустит и не зарегистрируется. Тогда мы потеряем потенциального клиента.
убедись в том, что форма входа имеет поля для логина и пароля, имеет кнопку для входа и ссылку «забыли пароль?»
Формы бывают разные.
Обычно это два поля: логин и пароль.
Ссылка на регистрацию нужна если ее нет отдельно на главной странице. Потому что искать ее будут именно на форме входа(если не смогут найти).
Ссылку «забыли пароль?» также будут искать на форме входа. Она не должна быть отдельно, чтобы пользователь не тратил время на ее поиски.
Он сталкивается с проблемой «вспомнить пароль» именно на форме входа, где пытается его подобрать.
— где находиться курсор после загрузки формы входа?
— форма входа содержит ссылку на регистрацию?
— убедись в том, что пользователь может войти в систему с действительным логином и паролем
— как отображаются ошибки?
— должно быть видно сообщение об ошибке если введены некорректные данные
Сообщения об ошибках могут отображаться всплывающим окном или появляться текстом рядом с полем.
Уже давно сложилось правило для одного предупреждения — сообщение «неправильный логин или пароль» вместо «неправильный пароль».
С одной стороны это не удобно для пользователя, ему не сообщается в каком поле именно он сделал ошибку. И прикрываются тем, что злоумышленнику будет сложнее подбирать логин и пароль.
Ну это как посмотреть. Логин можно узнать и другими способами, а предупреждение, которое не помогает определить место ошибки, забирает много времени. Чаще всего приходится все стирать и вводить заново.
Однако это распространенное поведение. И если нет документации, тогда любое предположение о предупреждении не больше чем предложение по улучшению.
Главное, что ты можешь требовать — сообщение об ошибке должно быть показано… если ошибка совершена.
— сообщение об ошибке должно быть показано
— убедись в том, что нельзя авторизироваться с неверными логином и паролем
— убедись в том, что есть предупреждение о незаполненном поле
В форме два поля и оба они являются важными, обязательными.
И если одно из них пустое, тогда это должно как то выделяться: окрашивать рамку в красный цвет, выводить предупреждение, все что угодно, но только не проходить дальше.
Дело в том, что связка логин и пароль(или только пароль) обычно совмещается и шифруется по какому то алгоритму в хеш. И этот хеш всегда одинаковой длины независимо от длины пароля.
Такой же хеш храниться в базе данных после регистрации вместо самого пароля. Так даже если кто то получит доступ к хэшу — он не сможет узнать настоящий пароль.
Хеш нельзя расшифровать обратно в пароль.
Один хэш храниться в базе данных и когда ты вводишь логин и пароль, то на стороне клиента(в браузере) они шифруются, этот хэш отправляется на сервер где и сравнивается с копией сохраненной при регистрации.
Хэш также может формироваться одновременно на стороне клиента и на стороне сервера, а потом сравниваться.
Варианты бывают разные, вдаваться в подробности не буду. Смысл в том чтоб не посылать открыто пароль на сервер.
— введи действительный логин и неправильный пароль
— введи неправильный логин и правильный пароль
— оставь поля пустыми и нажми ентер или кликни кнопку вход
— поле логин пустое, поле пароль — правильные данные
— поле логин с правильными данными, поле пароль — пустое
— введи неправильные логин и пароль
— есть ли предупреждение, что превышен лимит символов в поле логин или в поле пароль?
У каждого поля может быть ограничение на количество введенных символов. Другое дело отображается ли оно и если да, то как?
Возьмем поле «логин».
Здравый смысл подсказывает, что это ограничение должно быть одинаково как для формы входа, так и для формы регистрации. Мы можем посмотреть в форме регистрации какие ограничения стоят для поля «логин».
Например, в форме регистрации для поля логин ограничение не больше 40 символов.
Тогда даже если в форме входа логин принимает больше 40 символов — действительным данным это никак не помешает.
Максимум неудобства, если пользователь ошибется и введет лишний символ в свой 40 символьный логин. В этом случае желательно чтоб поле «логин» из формы входа имело столько же ограничений сколько и поле «логин» из формы регистрации.
Вариант похуже. Когда в поле логин (формы входа) стоит ограничение меньше 40 символов. Тогда могут возникнуть трудности с действительными данными. И вот это уже проблема посерьезнее.
40 символов я взял условно. Это может меняться в каждом конкретном случае. Нет никакого правила определяющего максимальное количество символов для логина.
С полем для пароля все иначе. Тут ограничение может быть, но лично я смысла в нем не вижу. Пароль есть пароль, и чем больше символов, тем сложнее его подобрать(и сложнее запомнить). Ограничения здесь не нужны.
Но и тут может быть проблема.
Если есть максимальное ограничение на количество символов в поле пароль и это никак не сообщается — могут быть проблемы.
Пользователь может думать, что ввел один пароль, а на самом деле используется его укороченная версия.
Например, форма может обрезать последние символы.
Или просто не дать их ввести.
Но пользователь об этом не догадается, так как обычно символы в поле пароль маскируются звездочками
В чем вся проблема.
Проблема может быть если пользователь столкнется с полем для пароля спрограммированного иначе, чем поле при регистрации.
Например, на странице входа или при восстановлении пароля.
Тогда и может всплыть несоответствие пароля, хотя пользователь вводит все то же самое.
Просто потому, что другое поле позволит вводить больше символов, например.
— убедись в том, что существует ограничение на общее число неудачных попыток
Необходима защита от подбора пароля. Самый распространенный способ — ограничить число неудачных попыток. Их число может быть разным. После которого аккаунт и\или возможность входа блокируется на некоторое время.
Если пользователь ошибся, тогда он может попробовать ввести пароль позже или восстановить пароль.
Главное ограничить возможность перебора пароля для злоумышленников. Иначе рано или поздно пароль будет подобран правильно.
— Есть ли чувствительность регистра у полей логина и пароля? 
Чувствительность к регистру (различает ли поле маленькие буквы от больших) в поле для логина, например, быть не должно.
Поле не должно считать разными логинами login и LOGIN.
А вот для поля пароль это необходимо.
Чувствительность регистра добавляет количество вариантов для одного символа, а значит пароль будет сложнее подобрать.
— поле пароль маскирует символы?(обычно звездочками)
— есть ли минимальная длина у поля пароль?
В чем смысл требовать от пользователя вводить минимум 6 символов в пароль? Да еще и чтоб это были цифры и буквы.
Почему форма не разрешает вводить пароль только из цифр или только из букв?
Один из вариантов взлома аккаунта — это подбор пароля.
Используются распространенные пароли или метод перебора.
Так вот, чем меньше символов в пароле, тем легче его подобрать. Также в сложности подбора важно количество вариантов для одного символа.
Например, цифр всего 10. И если пароль состоит только из цифр, то для каждого символа есть лишь 10 вариантов.
Надежность пароля можно разобрать как длину символов (чем длиннее пароль тем тяжелее его подобрать) и количество вариантов для одного символа(чем больше вариантов, тем больше комбинации и больше времени понадобиться чтобы проверить их все)
Поэтому чаще требуют чтобы пароль содержал и цифры и буквы, верхний и нижний регистр, спецсимволы — чтобы максимально расширить количество вариантов для одного символа.
- Арабские цифры = 10 вариантов
- Латинский алфавит = 26 вариантов
- Латинский алфавит только с нижним регистром(или только с 
верхним) и цифры = 36 вариантов
- Латинский алфавит с верхним и нижним регистром = 52 варианта
- Латинский алфавит с верхним и нижним регистром + цифры 
= 62  варианта
- Латинский алфавит с верхним и нижним регистром + цифры + 
спецсимволы и без пробела = 94 варианта
- Латинский алфавит с верхним и нижним регистром + цифры + 
спецсимволы + пробел (все символы таблицы ASCII) = 95 вариантов
- Символы расширенной таблицы ASCII - 218 вариантов
— логин может содержать буквы, цифры и точку
— логин не должен содержать спецсимволы
— пользователь должен осознавать авторизирован он или нет
Система должна показывать авторизирован пользователь или нет.
Когда пользователь авторизирован ему не должна показываться форма входа или форма регистрации. Иначе он подумает, что не авторизирован.
И кнопка выхода\логаута должна быть на виду.
— нажатие кнопки логаута переводит на форму входа?
— как реагирует система на кнопки браузера «вперед» и «назад» после авторизации? А как после логаута?
Ты знаком со стрелками браузера <>?
Shot125Ими удобно пользоваться если нужно вернуться на несколько страниц назад, а потом обратно вперед. Но такой переход по страницам не должен быть переходом из одного состояния в другое.
Если ты уже авторизирован, то возвращение на страницу назад не должно возвращать тебя в состояние неизвестного посетителя. Так же и при выходе из аккаунта(логаут). Если ты сменил состояние с авторизированного пользователя на неизвестного посетителя, то кнопка назад не должна изменить это состояние, ты так и должен остаться неизвестным пользователем.
В общем кнопки назад и вперед должны быть лишь средством передвижения по страницам, а не по состояниям.
— убедись в том, что после авторизации нажав кнопку в браузере «назад» ты не разлогинишься обратно
— кнопка назад в браузере не должна возвращать не авторизированного пользователя обратно авторизированным
— проверь работу чекбокса «запомнить меня»(если есть)
Если на странице входа в систему предусмотрена возможность сохранения имени пользователя и пароля, с помощью флажка, то пользователю не должно быть предложено повторно ввести учетные данные.
Что это значит и как это проверить?
Это не значит, что не нужно будет вводить логин и пароль если ты выйдешь из аккаунта(логаут).
Как это протестировать?
Поставь галочку в чекбокс «запомнить меня».
Авторизируйся.(введи логин, пароль и нажми вход)
Закрой браузер.
Открой тот же браузер.
Зайди на тот же сайт.
Ты должен быть авторизован.
Это работает с помощью куков. Сессия обычно прекращает свою жизнь либо после логаута, либо после закрытия браузера, либо по истечению определенного времени.
Конец сессии означает что сайт не будет признавать тебя в качестве авторизированного пользователя и придется вводить логин и пароль заново.
Функция «запомнить меня» дает возможность не терять сессию даже если закрыть браузер. То есть ты остаешься авторизированным.
— копипаст разрешен для поля логина, но не желателен для поля пароль
Почему запрещается копипаст для поля пароль?
Иногда бывает риск зацепить лишний пробел при копировании из файла в поле для пароля. Или из письма с временным паролем.
Есть мнение что пароль не должен содержать пробелов и точек. Я с ним не согласен. Чем меньше ограничений для пароля — тем сильнее может быть пароль.
Да от 2-х символов пароль не обеднеет. И все таки глупо что либо запрещать использовать в пароле.
Кстати, тут может возникнуть еще один баг, похожий с тем, что я описывал выше. Как ты думаешь, какой?
Еще глупо ограничивать пользователя в размерах пароля. Пусть пользователь выбирает сам.

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

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

  1. В целом статья понравилась, но местами категорически не согласен:
    Пароль должен быть длинным. От этого зависит безопасность пользователя, его конфиденциальность, личные данные, номер сотового телефона, почтового ящика, банковские реквизиты, полное имя, адрес — это все может стать доступно из-за плохого пароля. Да, пробивают пароли перебором, и используют для этого специальные списки популярных паролей. Так вот — более 90% из них имеют длинну меньше 11 символов. Фигачишь в пароль фразу из любимого фильма слитно и с большой буквы и хрен кто твой пароль вломает. Цифры и спец символы не спасут, длинна спасет. Хотя бы просто потому что при полном переборе увеличение длинны пароля на один символ может стоить для злоумышленника очень очень дорого в плане времени

Leave a comment to Inna Отменить ответ.