чит лист для тестирования формы регистрации на сайте
четверг, 3 января 2013 г.
Тестируем регистрацию на сайте Люксор
И вот перед нами более-менее стандартная форма регистрации. Как будем тестировать?
Итак, какие поля обязательны на данном сайте? Кстати сказать, по правилам хорошего тона обязательные поля обычно отмечают звездочкой. Здесь это не сделано, очевидно, потому, что все поля являются обязательными. Но все ли?
Так как эта формочка довольно простая, то даже без спецификации можно догадаться, что данное поле нужно для того, чтобы человек, вводя длинный, правильный (то есть сложный) пароль, не ошибся. Поэтому система сверяет пароль из поля «Пароль» и пароль из поля «Подтвердите пароль» и, если они отличаются, выводит соответствующее сообщение об ошибке.
На данном сайте такой проверки нет. Но ведь тогда и поле не имеет смысла. Итак, теперь можно с чистой совестью писать баг:
Ожидаемый результат
Видим сообщение об ошибке, что введенный пароль не совпадает с паролем, введенным в поле «Подтвердите пароль».
Итак, user-story, как я дошла до жизни такой, а точнее, до такого блог-поста:
Например, «я люблю ходить в кино и поэтому, прочитав такие-то книжки, я решил попробовать свои силы на любимом сайте и провести функциональное тестирование системы. Я открыл формочку регистрации и провел такие-то и такие-то тесты. Сделал я это потому-то и потому-то. И даже баги нашел, представляете? Такие-то и такие-то. И даже в суппорт им написал, вот так-то и так-то (тут мы показываем, как умеем красиво, четко и понятно формулировать баги)«. Это будет показывать как минимум вашу заинтересованность, ваш энтузиазм и стремление учиться!
Наш чек-лист для форм на сайтах
Это вторая часть наших чек-листов. В первой мы подробно разобрали требования к фильтрам. В отличие от фильтров, требования к пользовательским формам более универсальны. Однако нам потребовалось несколько жарких дискуссий, чтобы выработать более-менее единый формат. Видео с HolyWarModeOn рассказывает о типовых ошибках юзабилити в проектах. Сразу под роликом ищите подробный чек-лист для форм на сайте.
Важность: Extra High
□ Сохранение формы.
□ Форма сохраняется в веб-формах (админ-панели) или SQL-таблицах.
□ Изменение адреса отправки.
□ E-mail, на который приходят данные из веб-формы, можно менять в административной панели.
Важность: High
□ Актуальность адреса отправки.
□ Прописан реальный e-mail лица, отвечающего за обработку заявок.
Почему именно так. Ситуация из типичных будней техподдержки: владелец
интернет-магазина рвет и мечет — нет заявок от клиентов. Открываем админку, смотрим: внесен адрес svetochek1988@mail.ru, куда и попадают все запросы. Дальше объяснять нет смысла.
□ Отправка формы.
□ Данные из заполненной формы отправляются администратору на e-mail.
□ Отправка уведомления пользователю.
□ Опционально. Пользователь получает уведомление на свой e-mail об успешно полученной заявке и последующих действиях, которые от него требуются.
Навигация
□ Предусмотрены плейсхолдеры (placeholder) для полей.
□ Если названия полей не подписаны, то внутри полей выводится подсказка, которая исчезает при внесении текста.
Почему именно так. Пользователям нужны инструкции, а проектировщикам и дизайнерам — компактный способ предоставления информации.
□ Прописан атрибут autocomplete для полей, поддерживающих это значение.
Атрибут autocomplete подставляет ранее введенные пользователем данные в поле, если функция не отключена в браузере.
Почему именно так. Чем быстрее пользователь заполнит форму, тем выше вероятность, что он ее отправит.
□ Правильная работа многошаговых форм.
□ Навигация рядом с формой показывает текущий этап и количество оставшихся шагов.
Почему именно так. Неизвестность пугает посетителей и снижает вероятность полного заполнения объемной формы. Положительный пример — Asos. В форме указано пять шагов, но по факту регистрация проходит в пять раз быстрее — основные функции сайта доступны сразу после заполнения первого экрана регистрации.
Замечание. На некоторых проектах мы отказались от стандартной регистрации в пользу авторизации через социальные сети.
Пример: Restlook.
□ Многошаговые формы корректно работают при навигации посредством кнопок «Вперед» и «Назад» в браузере.
Валидация
□ Для числовых значений из определенного диапазона прописаны ограничители минимального и максимального количества символов.
□ Проверьте это для дат, времени и прочих подобных характеристик.
Почему именно так. Простая подстраховка от ввода откровенного вранья или появления ошибок по невнимательности — даты рождения в будущем или времени доставки раньше времени заявки.
□ Для полей, предполагающих загрузку файлов, прописан атрибут accept, определяющий тип загружаемых документов.
Почему именно так. Если прописан атрибут accept, при выборе с жесткого диска пользователь видит только подходящие типы файлов для загрузки — например, doc и txt. Это исключает отправку документов в формате, не подходящем для обработки.
□ Для полей, валидация которых проходит через регулярное выражение, прописан атрибут pattern.
Валидация — это проверка введенных пользователем данных на соответствие требованиям системы. Информация проверяется путем сверки с регулярным выражением, заданном в специальном формате.
Например, регулярное выражение 6 <5,10>для пароля означает, что он может состоять только из цифр, а его длина колеблется от пяти до десяти символов. Если для поля прописан атрибут pattern, то форма не отправляется, пока данные не будут введены верно.
□ Требуемый формат данных, которые должен ввести пользователь, очевиден для него.
Почему именно так. Пользователь должен понимать, чего от него ждут при вводе данных. Для этого предназначены краткие пояснения вроде «Пароль состоит не менее чем из 8 символов и включает цифры и латинские буквы».
□ Доступна инструкция по формату вводимых данных на человеческом языке.
Почему именно так. Очевидная и понятная подсказка позволяет быстро разобраться в причинах ошибки и не чувствовать себя тупым при заполнении полей формы.
□ Пользователь не видит регулярного выражения как подсказки к действию.
Почему именно так. Подсказка у поля индекса, представляющая собой регулярное выражение 4, малоинформативна. Фраза «Индекс состоит из цифр от 0 до 9» намного понятнее пользователю.
□ Сообщения об ошибках понятны обычным пользователям и логичны.
Важно. Типовая ошибка — регулярное выражение в сообщении о неверном заполнении формы.
Прочее
□ Форма запрашивает у пользователя только необходимые данные.
Откройте форму, визуально убедитесь, что требуется внести только необходимый минимум информации.
Почему это важно. Объемные формы убивают конверсии. Регистрация, покупка или обратная связь должны быть максимально простыми, чтобы не путать пользователей.
□ Если все поля обязательны для заполнения, рядом с их названиями не выводятся звездочки — символ *.
Откройте форму и убедитесь в этом визуально. Желательно наличие поясняющего текста об обязательном заполнении всех полей.
□ Для авторизованного пользователя в поля формы автоматически подставляются все известные о посетителе данные.
Убедитесь визуально, что указанная пользователем в профиле информация автоматически выводится в полях форм, запрашивающих эти данные.
□ Текстовое многострочное поле при вводе объемного сообщения изменяет высоту либо в правой части появляется скроллбар для просмотра всего содержимого.
Откройте форму с текстовым многострочным полем, введите в него максимально большое количество символов.
Почему именно так. Многие пользователи перечитывают написанное перед отправкой. Нужно дать им возможность воспользоваться скролл-баром или просмотреть все сообщение в расширенном поле вместо перемещения по тексту с помощью стрелок клавиатуры.
□ В полях формы прописан корректный атрибут TYPE, сообщающий браузеру тип элементов формы.
□ Правильно указаны типы дат, времени, телефонов, диапазонов, url, e-mail, чисел.
□ Во время отправки формы на медленном канале пользователь не может менять в ней данные.
Важно. Действительно для ajax-форм.
Почему именно так. При невысокой скорости соединения форма ajax отправляется не сразу, некоторое время оставаясь на экране со всей внесенной информацией. Пользователь не должен в этот момент передумать и поменять все данные. Точнее, передумать он как раз может, но реализовать свою задумку — уже нет: необходима блокировка от изменений до момента получения ответа от сервера.
При этом желательно визуально показать, что форма заблокирована. Один из вариантов — прелоадер:
Важность: Low
□ Вывод подсказок и ошибок сделан с анимационным эффектом.
Замечание. Этот параметр зависит от дизайна и не является обязательным.
Далее — три спорных истории, которые нужно решать с менеджером на этапе проектирования.
□ Кнопка отправки данных неактивна, пока не активирован чекбокс «Согласиться с правилами», «Пользовательское соглашение».
□ Кнопка отправки данных неактивна, пока все введенные данные не прошли положительную валидацию.
Откройте форму с полями для ввода, введите некорректные данные, проверьте, активна ли кнопка.
Это важно. В некоторых случаях некорректность — понятие относительное. Подстава подстав — валидация номеров телефонов в форме обратной связи. Если вкратце — отключайте ее.
□ Если данные не прошли положительную валидацию, при наведении курсора на кнопку для отправки данных выводится информационное сообщение.
Откройте форму, введите некорректные данные, наведите курсор на кнопку отправки данных, проверьте, выводится ли сообщение.
Список можно распечатать — пользуйтесь для тестирования юзабилити. То же самое — в документе Google.
Чек-лист тестирование формы регистрации
Также у меня есть вопрос по поводу positive и negative: Когда мы пытаемся ввести логин состоящий из 2 символов то, выводится сообщение » Введенное имя слишком короткое «. Я расцениваю это с одной стороны как пазитив, потому что форма реагирует и не дает нам совершить ошибку. С другой стороны мы же вводим 2 символа, а это не корректно для логина и является негатив тестом. Почему так?
Ссылка на документ: гугл док
2. это негативный тест, потому что вы при этом не можете пройти процедуру логина.
Мысли после поверхностного взгляда:
Много избыточных проверок, например, из позитивных:
пункты 7 и 8 можно объединить в один, т.к. если проверка успешно проходит на 3-х символах, то на 4-х она тоже будет проходить (эквивалентные значения)
пункты 12 и 13 по сути эквивалентные, тоже можно сократить до одного
пункты 19 и 20 так же эквивалентны
Продолжите мысль для негативных, там тоже есть избыточные проверки, но при этом, не хватает уникальных проверок, подумайте, что можно еще проверить.
Из списка позитивных проверок пункт 6 необходимо перенести в негативные, т.к. зарегистрироваться с занятым именем невозможно так же как с некорректным.
пункты 7 и 8 можно объединить в один, т.к. если проверка успешно проходит на 3-х символах, то на 4-х она тоже будет проходить (эквивалентные значения)
Таким образом я хотел проверить граничные значения(Указано что «Имя пользователя» может иметь от 3 до 26 символов) Если к примеру программист ошибся и указал >3 но не =>3. Или я не правильно понимаю что-то??
пункты 7 и 8 можно объединить в один, т.к. если проверка успешно проходит на 3-х символах, то на 4-х она тоже будет проходить (эквивалентные значения)
Таким образом я хотел проверить граничные значения(Указано что «Имя пользователя» может иметь от 3 до 26 символов) Если к примеру программист ошибся и указал >3 но не =>3. Или я не правильно понимаю что-то??
если программист ошибся и указал >3 но не =>3, то проверка на 3-х символах не пройдет и будет понятно, что это баг, а проверка на 4-х символах тут не нужна.
Чек-лист для тестирования числового поля
При тестировании встречаются как интересные задачки с замудреной логикой, так и простые, вроде проверки простой строки или числового поля. Для простых полей можно один раз написать чек-лист проверок, а потом переиспользовать, лишь немного меняя под «своё» поле.
Сегодня мы разберем чек-лист для числового поля. Сначала я напишу общий чек-лист, потом пройдемся по каждому пункту и разберемся, зачем он нужен, а в конце напишем чек-лист по этому шаблону.
Итак, у нас есть некое поле, куда нужно вводить число. Например, поле «возраст» при регистрации:
При этом на сайте нельзя регистрироваться до 18 лет, есть запрещённый контент.
Какие проверки тут можно провести:
Корректные значения
Представьте, что у вас буквально 5 минут на проверку функционала. И вы успеваете провести только первые несколько тестов из чек-листа. А чек-лист у вас:
Для поля с возрастом какие у нас будут корректные значения? Все, что выше 18 лет:
Тут надо понимать, что мы выбираем какое-то ОДНО значение. Просто каждый раз разное, для избежания эффекта пестицида.
Также важно понимать, что у нас может быть не одно корректное значение. Это когда у нас есть несколько диапазонов, и разные условия на каждом.
Например, тот же возраст:
Или если у нас идет расчет страховки в зависимости от стажа вождения:
Каждый раз берем разные значения, но в этом пункте смысл один — взять корректные значения из ТЗ.
Некорректные значения
Тут есть разные варианты. Что значит некорректное значение?
— А что будет, если мы возьмем значение из «неправильного» диапазона? Что, если мне меньше 18 лет? Ну, скажем, 10.
Потом внимательно смотрим на выбранный интервал:
— Хммммм, но ведь возраст не может быть меньше 0. То есть у нас есть логическая граница, разделяющая два разных класса эквивалентности:
— Если у нас есть некая логическая граница снизу, должна быть и сверху. Какой максимально возможный возраст у регистрирующихся на нашем сайте? Скорее всего, это около 55-65 лет, потому что более старшее поколение не любит компьютеры. Но можно заложить и условные 100-110 лет долгожителей.
Получаем еще один интервал с неявной границей. Но в любом случае, значения 25 и 145 будут различаться — одно реалистичное, а другое нет. Значит, стоит его тоже попробовать!
А дальше снова эффект пестицида. Один раз берем 145, а другой — 6666666.
Тут мы можем столкнуться с тем, что в поле нельзя ввести больше 2-3 символов. Разработчик перестраховался «от дурака». Это не повод опускать руки и отказываться от своей проверки. Потому что скорее всего разработчик просто установил maxlength на поле, а он легко обходится!
Граничные значения
Граничные значения отделяют один интервал от другого. Их обязательно надо тестировать. Потому что именно на границах чаще всего встречаются баги. Почему? Да потому что попадают в оба диапазона, или не попадают ни в один.
В нашем примере в ТЗ есть условие «регистрация только для лиц старше 18 лет». Это значит, что разработчик должен сделать в коде программы логику вида:
Чит лист для тестирования формы регистрации на сайте
Почти все тестировщики знают, что такое чек-листы. Но есть ещё один очень удобный инструмент, повышающий качество тестирования: чит-листы.
Что такое чит-листы?
Зачастую нам нужно осуществлять однотипные проверки в разных местах: валидация поля e-mail, ограничения в числовых полях, SQL и XSS инъекции и т.д. Для этих случаев, чтобы не забыть «что нужно проверить», и создаются чит-листы (иногда их ещё называют cheat sheets).
Существуют стандартные чит-листы. К примеру, подборка тестов для тестирования web-элементов или набор тестов для проверки регистрации. Каждый тестировщик с опытом вырабатывает свои собственные чит-листы для различных условий. Кто-то пытается держать их в голове, а кто-то выписывает в виде списка, чтобы не забыть.
Более того, во многих компаниях есть свои собственные стандарты в разработке интерфейса, которые тоже постепенно включаются в разряд необходимых проверок: например, «каждое поле ввода должно быть со скруглениями», «все сообщения системы должны появляться в виде поп-апов, а не отдельных окон» и т.д.
В результате у тестировщиков появляются наборы проверок, которые можно многократно переиспользовать: формы регистрации одинаково проверяются в разных проектах, SQL и XSS инъекции одинаково проверяются в разных полях ввода. Держать всё в голове? Неэффективно, голова нужна для того, чтобы думать, а не для того, чтобы хранить множество избыточных данных.
Именно поэтому тестировщики пишут чит-листы: списки повторяющихся проверок, которые можно переиспользовать в разных условиях. И да, это настоящий чит в тестировании, почти как IDDQD!
Что дают чит-листы?
Как использовать чит-листы в Sitechco?
Для начала, вы создаёте свои собственные чит-листы, или берёте за пример добавленные нами. В чит-листе вы описываете всё, что должно проверяться в рамках определённых тестовых условий. К примеру, пусть это будет поле email, которое используется во многих окнах вашего приложения. Вы выписываете все основные проверки, которые считаете необходимыми, проставляете им приоритеты. Этот чит-лист вы можете сделать как и любой чек-лист, разным: с тегами или без, с перечнем проверок или с указанием результата в том числе. В результате у вас может получиться что-то вроде такого чит-листа:
После этого, вы можете вставлять этот чит-лист в различные чек-листы вашего проекта. Каждый раз, когда при тестировании какого-либо функционала вам нужно проверять обработку поля Email, вы просто вставляете этот чит-лист. В результате у вас будет полный набор проверок, которые нужно не забыть проверить — а вы сэкономите массу времени!
После вставки чит-листа в чек-лист вы получите отдельную группу тестов, которую после этого сможете отредактировать или расширить под конкретные условия.
Применяем чит-листы с умом!
Чтобы от чит-листов была максимальная польза, следуйте простым советам: