Валидация данных

Валидацией будем называть проверку документа на соответствие веб-стандартами выявление существующих ошибок. Соответственно, валидным является такойвеб-документ,который прошел подобную процедуру и не имеет замечаний по коду. Кодвеб-страницыдолжен подчиняться определенным правилам, которые называются спецификацией, ее разрабатывает W3 Консорциум (www.w3c.org) при поддержке разработчиков браузеров.

На первый взгляд, кажется, что валидация необходима, ведь речь идет о сокращении количества ляпов разработчиков и написании «правильного» кода. На деле все обстоит гораздо сложнее и вокруг валидации до сих пор ведутся горячие споры об ее актуальности. Чтобы объективно раскрыть этот вопрос далее рассмотрим плюсы и минусы такой проверки.

Плюсы валидации

Хотя HTML-кодимеет достаточно простую иерархическую структуру, при разрастании объема документа в коде легко запутаться, следовательно, просто и совершить ошибку.
аузеры, несмотря на явно неверный код, в любом случае постараются отобразитьвеб-страницу.Но поскольку не существует единого регламента о том, как же должен быть показан «кривой» документ, каждый браузер пытается сделать этопо-своему.А это в свою очередь приводит к тому, что один и тот же документ может выглядетьпо-разномув популярных браузерах. Исправление явных промахов и систематизация кода приводит, как правило, к стабильному результату.

Тенденции

Времена, когда производители браузеров добавляли уникальные возможности в свой продукт вопреки всем стандартам, начинают уходить в прошлое. Каждая новая версия браузера все больше поддерживает спецификации и отображает документы с минимальными ошибками или вообще без них. Разработчики сайтов, также придерживающихся канонов вебстандартов, таким образом соответствуют современным тенденциям развития веб-технологий.

Не стоит забывать и об XML (eXtensible Markup Language, расширяемый язык разметки). Этот язык становится стандартом де-фактодля хранения данных и обмена информацией между разными приложениями. Синтаксис XML более жесткий, чем HTML и не прощает малейших ошибок. Вкаком-тосмысле XML похож на языки программирования, в которых программа не будет скомпилирована, пока код не отлажен. HTML является первой ступенькой к изучению XML, поэтому приучая себя писать код по всем правилам, будет легче перейти к следующему этапу развития HTML.


Мода на валидацию

Как это не удивительно, но среди веб-разработчиковтоже существует своя мода. Текущая мода — создавать валидные документы и вывешивать специальный значок в виде картинки, что сайт соответствует спецификации HTML. Подобная тенденция затронула даже заказчиков сайтов и при написании технического задания на разработку сайта некоторые из них специально оговаривают, чтобы сайт был выполнен повеб-стандартам.

Косвенные преимущества

Следование стандартам во многом дает множество выгод, которые проявляются в мелочах и становятся заметными при достижении определенной критической массы. В частности, объем кода становится меньше, компактнее и читабельнее. Соответственно, для пользователей повышается скорость загрузки сайта в целом.

Минусы валидации

Сайты, конечно же, делают для того, чтобы их посещали люди. Именно посетители выступают мерилом работы сайта, а их интересует информация и способ ее получения. Пользователь желает, чтобы сайт корректно отображался в его любимом браузере, быстро загружался и содержал те материалы, которые ему нужны. Заметьте, в этом списке нет ничего про код документа и его валидность, посетителей это просто не интересует. Поэтому совершенно невалидный сайт, но выполненный с душой, наполненный интересными материалами привлечет к себе больше посетителей, чем пустой ресурс, но сделанный по всем «правилам».


Браузеры

Разработчики браузеров не всегда следуют спецификации и в некоторых случаях трактуют код не по заданным правилам, а по-своему.В конечном итоге это приводит к тому, чтовеб-страница,которая правильно (т.е. так, как и задумывали разработчики) отображается в одном браузере, выводится с ошибками в другом. Следование спецификации в подобных случаях, скорее всего, отпугнет пользователей некоторых браузеров. К примеру, Internet Explorer (IE) в настоящее время занимает лидирующее положение среди браузеров, но при этом поддерживает спецификацию HTML и CSS хуже, чем Firefox и Opera. Очевидно, что пользователи IE при посещении сайта выполненного по всем стандартам, но не учитывающего специфику этого браузера, увидят неприглядную картину.

Заказчикам сайта, а также их разработчикам подобная ситуация не по нраву, поэтому стоя перед выбором: стандарты или браузер, они в большинстве своем выбирают браузер.

Получается неутешительная картина — тратить время на отладку кода для соответствия спецификации нет особой нужды. Это время лучше посвятить тому, чтобы документ без проблем работал в разных браузерах — так в основном размышляют веб-разработчики.

Резюме

Так стоит ли проводить валидацию документов и заниматься этим этапом при написании веб-страниц?Безусловно, да.Кому-тоона поможет выявить существующие недочеты, другому поможет писать корректный код. Исправлять же ошибки, добиваясь полного соответствия стандартам, или оставить их ради совместимости с разными браузерами — здесь уже каждый решает сам, какие цели он преследует и что для него важнее.


studfiles.net

В заметке «Можно ли делить на 0,01 ?» на сайте тестировщиков я написал, что при тестировании нужно проверять согласованность валидаторов входных данных с логикой обработки этих данных приложением. Но из комментариев к этой заметке я понял, что для понимания того, как надо тестировать валидацию данных, надо понимать, как она должна работать, что можно считать правильным, а что нет. Поэтому я написал об этом отдельную статью. В ней рассматривается три вопроса: 1) зачем вообще нужна валидация данных, и 2) где и когда может выполняться валидация данных, 3) какие бывают разновидности проверок. Ну и конечно продемонстрировано, как всё это выглядит на живых примерах. А может быть мои рассуждения окажутся интересны не только тестировщикам, но и разработчикам.

Зачем нужна валидация данных?

Казалось бы, «невалидные» данные, не удовлетворяющие определённым ограничениям, могут вызвать сбой в работе программы. Но что это означает? Предположим, в каком-то месте программы возникает исключение при попытке преобразовать строку в число, если строка имеет некорректный формат.
зумеется, если исключение не будет нигде перехвачено, это может привести к аварийному завершению программы. Но это маловероятный сценарий развития событий. Скорее всего в каком-то месте сработает перехватчик, который либо выдаст пользователю какое-то сообщение об ошибке в программе, либо сделает запись в журнал ошибок, после чего программа постарается восстановиться от сбоя и продолжить работу. То есть даже если валидацию не выполнять, вполне вероятно, что ничего страшного не случится.

Но определённые негативные последствия у отсутствия валидации всё таки могут быть, давайте чуть подробнее рассмотрим, какие проблемы при этом могут возникнуть.

  1. Невозможность восстановиться после сбоя. Не всегда программа способна «вернуть всё назад». Возможно, в процессе работы программа выполнила какие-то необратимые действия — удалила файл, отправила данные по сети, напечатала что-то на принтер, запустила резец станка и он частично произвёл обработку заготовки детали. Но даже если восстановление в принципе возможно, алгоритм восстановления может тоже содержать ошибки, и это иногда приводит к совсем печальным последствиям.
  2. Дополнительная нагрузка на систему. Восстановление после сбоя — это лишняя работа. Вся работа, которая была выполнена до момента сбоя — тоже лишняя. А это означает дополнительную нагрузку на систему, которой можно избежать, если заранее проверить данные. С другой стороны, валидация — это тоже дополнительная нагрузка, причём восстановление приходится делать лишь изредка, а проверку надо выполнять каждый раз, так что ещё неизвестно, что выгоднее.

  3. Инъекции не вызывают сбоев. Один из основных способов эксплуатации уязвимостей в программах заключается в том, чтобы «обмануть» валидаторы, то есть передать данные, которые валидатор признаёт корректными, но при этом они интерпретируются непредусмотренным образом, так что злоумышленник может получить несанкционированный доступ к данным или некоторым возможностям программы, либо способен разрушить данные или программу. Если валидации нет вообще, задача злоумышленника максимально упрощается.
  4. Сложность идентификации причины проблемы. Если исключение вылетело откуда-то из глубины программы, определить причины его возникновения не так-то просто. И даже если это возможно, может оказаться нелегко объяснить пользователю, что сбой вызван данными, которые он ввёл некоторое время назад в каком-то совершенно другом месте программы. А если проверка выполнена немедленно после ввода данных, никаких сложностей с идентификацией источника проблемы не возникает.

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


Где и когда выполнять валидацию данных?

Как уже было сказано выше, с точки зрения уменьшения нагрузки лучше всего вообще не выполнять валидацию данных.

Но если всё-таки проверка нужна, логика подсказывает, что удобно проверять данные в том месте, где они попадают в программу из внешнего мира. После такой проверки можно быть уверенным, что в программу попадают правильные данные и в дальнейшем они могут использоваться без дополнительных проверок.Это может быть пользовательский интерфейс, через который человек вводит данные. Это может быть файл, содержащий настройки программы или данные, которые программа должна обработать. Это может быть база данных, в которую информация может попадать из других программ. Это может быть сетевой протокол обмена данными с другими программами. Наконец, это может быть программный интерфейс, который использует другая программа, вызывая некоторые функции/процедуры и передавая в них параметры.

Увы, здравый смысл иногда вынужден отступить перед натиском действительности. «Фейс-контроль» данных на входе иногда не просто нецелесообразен, но вообще невозможен. Ниже приведены некоторые причины этого.

  1. Для валидации требуется доступ к недоступной части состояния системы. Это особенно характерно для проверки данных, вводимых человеком через графический интерфейс пользователя. Современные приложения часто построены с использованием многоуровневой архитектуры, которая предполагает, что реализация пользовательского интерфейса выделена в презентационный слой, а для проверки требуется доступ к другим слоям, вплоть до слоя базы данных.

    Особенно хорошо это заметно для веб-приложений, где пользовательский интерфейс реализуется в браузере и выполняется на стороне клиента, а для проверки ввода требуется сравнение с тем, что хранится в базе данных. В этой ситуации проверку приходится выполнять уже после отправки данных на сервер. (Впрочем, сейчас с появлением AJAX-технологии эта проблема частично решена).

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

Как выполнять валидацию данных?

Впрочем, где бы ни выполнялась валидация, можно это делать несколькими различными способами, в зависимости от того, какие ограничения накладываются на данные.

  1. Посимвольная проверка. Как правило такие проверки выполняются в пользовательском интерфейсе, по мере ввода данных. Но не только. Например, лексический анализатор компилятора тоже выявляет недопустимые символы непосредственно в процессе чтения компилируемого файла. Поэтому такие проверки можно условно назвать «лексическими».

  2. Проверка отдельных значений. Для пользовательского интерфейса это проверка значения в отдельном поле, причём выполняться она может как по мере ввода (проверяется то неполное значение, которое введено к настоящему моменту), так и после завершения ввода, когда поле теряет фокус. Для программного интерфейса (API) это проверка одного из параметров, переданных в вызываемую процедуру. Для данных, получаемых из файла, это проверка какого-то прочитанного фрагмента файла. Такие проверки, опять-таки по аналогии с компиляторной терминологией, можно назвать «синтаксическими».
  3. Совокупность входных значений. Можно предположить, что в программу сначала передаются какие-то данные, после чего подаётся некоторый сигнал, который инициирует их обработку. Например, пользователь ввёл данные в форму или в несколько форм (в так называемом «визарде») и наконец нажал кнопку «OK». В этот момент можно выполнить так называемые «семантические» проверки, нацеленные на валидацию не только отдельных значений, но и взаимосвязей между ними, взаимных ограничений.

    Вполне возможна ситуация, когда каждое отдельное значение «синтаксически» корректно, но вместе они образуют несогласованный набор. Для программного интерфейса эта разновидность валидации предполагает проверку набора входных параметров вызываемой процедуры, для случая получения данных из файла это проверка всех прочитанных данных.

  4. Проверка состояния системы после обработки данных. Наконец, есть последний способ, к которому можно прибегнуть, если валидацию непосредственно входных данных выполнить не удаётся — можно попытаться их обработать, но оставить возможность вернуть всё к исходному состоянию. Такой механизм часто называется транзакционным.

Транзакция — это последовательность действий, которые либо все завершаются успешно, либо происходит какой-то сбой при выполнении отдельного действия, и тогда отменяются результаты всех предыдущих действий этой цепочки. Так вот, валидацию можно выполнять в процессе выполнения транзакции, а последняя проверка может быть выполнена в самом конце транзакции по обработке данных. При этом мы валидируем уже не сами данные, а то состояние, которое получилось после их полной обработки, и если это состояние не удовлетворяет каким-то ограничениям, тогда мы признаём входные данные невалидными и возвращаем всё к исходному состоянию.

Какой способ валидации следует применять на практике в том или ином случае? Чаще всего одним способом ограничиться не удаётся, да и не нужно. Валидацию данных можно и нужно выполнять в несколько этапов, усложняя проверки.

Сначала, по мере ввода, следим за тем, чтобы данные не содержали недопустимых символов. Например, для числового поля пользователю может быть запрещён ввод нецифровых символов.

После того, как ввод завершён, можно проверить всё значение целиком. Для введённого числа могут быть какие-то ограничения, например, оно не должно превышать определённого максимального допустимого значения. Если наше числовое поле представляет собой возраст, оно должно находиться в пределах от 0 до, скажем, 120.

Когда заполнены все поля, можно проверить, согласованы ли введённые значения друг с другом. Например, если в форме кроме поля для указания возраста есть поле для ввода номера паспорта, приложение может проверить, что при заполнении номера паспорта возраст должен быть не менее 14 лет.

Наконец, если всё введено корректно, можно попытаться начать обработку, выполняя проверки по ходу дела, а также в самом конце, и если что-то пошло не так, выполнить откат к исходному состоянию.

Ну и, конечно же, проверки на следующем уровне могут подстраховывать проверки предыдущих уровней. Скажем, для веб-приложений обязательной является проверка данных, пришедших на сервер в HTTP-запросе, независимо от того, выполнялась ли перед этим предварительная валидация в браузере или нет. Причина этого в том, что проверку на клиентской стороне можно обойти. Для других видов приложений обойти проверки не так просто, но иногда тоже вполне возможно, как показано в примере чуть ниже.

Тестирование валидаторов

Завершим статью демонстрацией различных видов валидаторов, а также некоторыми рекомендациями относительно того, как при тестировании проверять правильность их работы.

Начнём с посимвольной проверки. Графический редактор Paint, диалог изменения размеров рисунка, ширина рисунка. В это поле допускается вводить только цифры, при попытке ввести другие символы выдаётся сообщение об ошибке:

image

Однако, проявив смекалку, можно обойти эту валидацию вводимых символов: через буфер обмена удаётся вставить в это поле отрицательное число, несмотря на то, что минус является недопустимым символом:

image

Впрочем, это не приводит к негативным последствиям, потому что на следующем уровне стоит ещё одна проверка, которая срабатывает при нажатии кнопки OK:

image

Есть и другие ограничения для этого поля, которые тоже проверяются после нажатия кнопки OK:

image

А вот находящееся совсем рядом в том же диалоге поле для ввода наклона рисунка не содержит валидации символов, несмотря на то, что это тоже числовое поле. Более того, при вводе недопустимых символов после нажатия OK можно увидеть вот такое странное сообщение, практически не поддающееся расшифровке:

image

Все вышеописанные примеры связаны с проверкой отдельно взятого поля. Пример валидации комбинации полей можно найти в том же приложении, но в другом месте — в диалоге настройки параметров страницы для печати. Если указать размеры полей страницы так, чтобы в сумме они превосходили ширину страницы, получим вот такое сообщение:

image

Ну и, наконец, в заметке «Почему не хватает памяти, чтобы уменьшить размеры рисунка?» описана ошибка, связанная с тем, что в этом графическом редакторе отсутствует корректная обработка сбоев и откат транзакции при слишком сильном увеличении размера рисунка.

Тестировщику необходимо все эти ситуации отрабатывать. Во-первых, нужно проверять валидацию на всех уровнях. Во-вторых, нужно проверять согласованность валидаторов на разных уровнях. В-третьих, надо искать пути обхода валидаторов, пытаясь добраться до следующего уровня без предварительных проверок.

Заключение

Большая часть этой статьи посвящена не способам тестирования валидаторов, а описанию их устройства. Почему? Потому что врага надо знать в лицо. Чтобы найти дефект валидации данных, надо понимать, где искать и на что обращать внимание.

P.S. Кросспост

habr.com

Валидация — Validation:

— придание законной силы, утверждение, легализация, ратификация
(общегражданское право);

— процесс, позволяющий определить, насколько точно с позиций потенциального пользователя некоторая модель представляет заданные сущности реального мира
(системное программирование);

— процедура, дающая высокую степень уверенности в том, что конкретный процесс, метод или система будет последовательно приводить к результатам, отвечающим заранее установленным критериям приемлемости; в частности, валидация технологических процессов проводится с использованием образцов не менее трех серий реального продукта с целью доказательство и предоставление документального свидетельства, что процесс (в пределах установленных параметров) обладает повторяемостью и приводит к ожидаемым результатам при производстве полупродукта или готового продукта требуемого качества; валидация аналитических методов состоит в определении: точности, воспроизводимости, чувствительности, устойчивости (межлабораторная воспроизводимость), линейности и других метрологических характеристик
(GMP — Надлежащая производственная практика, является обязательным требованием при производстве лекарственных средств).

Применительно к системам менеджмента качества согласно стандартам ISO серии 9000:

Валидация — подтверждение на основе представления объективных свидетельств того, что требования, предназначенные для конкретного использования или применения, выполнены
(ISO 9000:2005)

Валидация — подтверждение путем экспертизы и представления объективного доказательства того, что особые требования, предназначенные для конкретного применения, соблюдены.
Примечания:

  1. При проектировании и разработке утверждение означает проведение экспертизы продукции с целью определения соответствия нуждам потребителя.
  2. Утверждение обычно осуществляется на конечной продукции в определенных условиях эксплуатации. Оно может быть необходимо на более ранних стадиях.
  3. Термин «утверждено» используется для обозначения соответствующего статуса.
  4. Могут осуществляться многократные утверждения, если предполагается различное использование.

(ISO 8402:1994, п.2.18)

 

По определению PIC/S, валидация это:
«Действия, которые в соответствии с принципами GMP доказывают, что определенная методика, процесс, оборудование, сырье, деятельность или система действительно приводят к ожидаемым результатам».

Валидация

Исследования по валидации должны способствовать надлежащей практике производства; их следует проводить в соответствии с установленными процедурами. Результаты и заключения должны быть оформлены протоколами.

Если вводят новую производственную рецептуру или новый способ изготовления, то должны быть предприняты действия, демонстрирующие их пригодность для серийного производства. Должно быть доказано, что установленный процесс при использовании специфицированных веществ и оборудования позволяет постоянно получать продукцию требуемого качества.

Существенные изменения производственного процесса, включая любое изменение оборудования или материалов, которое может повлиять на качество продукции и/или воспроизводимость процесса, должны пройти валидацию.

Процессы и процедуры следует подвергать периодической критической ревалидации, чтобы гарантировать, что они по-прежнему способны приводить к ожидаемым результатам.

Валидация и ее документирование

Цель валидации простая: доказать, что объект валидации действительно приводит к ожидаемым результатам. Другими словами, валидация должна показать, что производитель полностью управляет процессом производства. Валидация является интегральной частью «обеспечения качества», показывая, что производитель понимает причины изменчивости процесса и, главным образом, понимает какие параметры необходимо контролировать для обеспечения стабильности процесса. Эффективная валидация основана на менеджменте риска и современном уровне науки.

Процедуры процесса валидации должны быть зафиксированы в ряде протоколов и результаты валидации должны быть зафиксированы в записях или отчетах.

Эти документы используются в разных формах при получении регистрационного удостоверения и инспекции в соответствии с правилами GMP и так же, для внутренних производственных целей, чтобы руководство организации могло быть уверено в том, что оно контролирует свои процессы. Документация процесса валидации является базой для необходимой регуляции. Но для того, чтобы избежать
той ошибки, которая часто встречается при внедрении принципов GMP в России, мы сознательно обсуждаем процесс документирования валидации в разделе о документации.

Существует довольно серьезная разница между российским и международным подходами. В российских правилах GMP, валидация «заключается в документированном подтверждении соответствия оборудования, условий производства, качества сырья и готового продукта действующим регламентам иили требованиям нормативной документации». Это подход – устаревший. Его последствия – довольно вредные. Из разных публикаций может создаться впечатление, что процесс валидации является не более, чем процессом документирования или, что такие слова как «валидация» «верификация», «квалификация» и «испытание», в самом деле, являются аналогами друг друга. Отсутствие понимания «валидации» укрепляет недопонимание GMP, и создает ситуацию, когда персонал сопротивляется внедрению GMP, просто принимая его как «вечно растущую гору документов».

В GMP EC (и, кстати, GMP FDA) валидация является регулярным изучением систем, процессов, инженерных комплексов и, естественно, самого фармацевтического продукта, чтобы обеспечить высокий уровень уверенности в том, что процессы были должным образом разработаны и находятся под контролем.

Эффективная валидация требует использования подхода, основанного на управлении рисками, полного понимания процессов производства и повышения их устойчивости, посредством внедрения новых технологий. Таким образом, валидация является динамическим процессом. Этот факт, очевидно, представляет некоторые сложности для регуляторных органов.

С точки зрении разработчиков и производителей ЛС валидация способна обеспечить следующие преимущества:

  • более глубокое понимание процессов и поэтому, уменьшение риска при предотвращении проблем и обеспечение гладкого управления процессом;
  • снижение стоимости устранения недостатков;
  • уменьшение риска несоответствия требованиям регуляторных органов.

После полной валидации процесса, возможно, что количество контролируемых параметров в конце процесса уменьшится. Разработчики, полностью понимая те параметры, которые влияют на изменчивость и, следовательно, на стабильность процесса, имеют необходимую информацию для управления процессом, например, через снижение изменчивости или повышение его скорости. Хотя «валидация» является интегральной частью «обеспечения качества», здесь видна взаимосвязь между валидацией и системой менеджмента. Для того чтобы эффективно проводить валидацию, руководство компании должно определить свою политику в данном вопросе. Одним из первых элементов, который инспектор FDA или PIC/S на-мерен проверить, является именно политика валидации.

Из книги «Комментарий к Руководству Европейского Союза по надлежащей практике производства лекарственных средств для человека и применения в ветеринарии.» / Под. ред. С.Н. Быковского, И.А. Василенко, С.В. Максимов. – М.: Изд-во «Перо», 2014

gmpnews.ru

Термин валидация (англ. Validation) используется в различных сферах деятельности человека в несколько различных смыслах. Ключевым моментом в валидации является сверка выставленных требований с необходимыми для достижения определённой (поставленной) цели требованиями. Если же эта цель и есть конечное требование, то возникает циклическая проблема (планирование плана или проблема инициализации) . Сверка требований может происходить на их полноту и/или точность.

Валидацию не следует путать с верификацией.

В технике или в системе менеджмента качества валидация подтверждает, что требования внешнего потребителя или пользователя продукта, услуги или системы удовлетворены. Верификация — это обычно внутренний процесс управления качеством, обеспечивающий согласие с правилами, стандартами или спецификацией. Простой способ запомнить разницу между валидацией и верификацией заключается в том, что валидация подтверждает, что «вы создали правильный продукт» , а верификация подтверждает, что «вы создали продукт так, как и намеревались это сделать» .
[править] Другие определения

Согласно российскому стандарту ГОСТ Р ИСО 9000-2001, который соответствует интернациональному, валидация определена следующим образом:

3.8.5 валидация (en validation; fr validation): Подтверждение на основе представления объективных свидетельств (3.8.1) того, что требования (3.1.2), предназначенные для конкретного использования или применения, выполнены, декларируемые свойства и характеристики подтверждаются, а поставленная цель (предназначение системы, комплекса, устройства и т. д. ) достигнута. Примечания:

1. Термин «подтверждено» используется для обозначения соответствующего статуса.
2. Условия применения могут быть реальными или смоделированными.

Исходя из выше описанного, валидация должна быть определена как:

Валидация: Подтверждение на основе представления объективных свидетельств того, что требования, предназначенные для конкретного использования или применения, точно и в полном объёме предопределены, а цель достигнута [

otvet.mail.ru

Что такое валидация данных

Валидация – это процесс проверки данных на соответствие различным критериям. При разработке любого приложения в большинстве случаев разработчику приходится иметь дело с обработкой данных, которые ввел пользователь в соответствующие поля на форме. По разным причинам пользователь может вводить некорректные данные. Например, в поле «Возраст» он по ошибке может указать отрицательное или вовсе нечисловое значение. На практике встречается множество ситуаций, где определенные поля в пользовательском интерфейсе могут содержать только те данные, которые строго соответствуют определенным шаблонам. Если не учитывать подобные ситуации, то в процессе работы приложения могут возникать сбои, связанные с некорректным вводом пользователя. Ошибки могут быть допущены случайно или намеренно. В последнем случае пользователь может вводить некорректные данные с целью вывести приложение из строя и таким образом произвести атаку на приложение. Поэтому каждое приложение, которое работает с данными, которые вводит пользователь (а таких приложений большинство) должно производить предварительную проверку корректности введенных данных. Именно по этой причине каждый разработчик должен быть знаком с механизмом валидации данных, которые указал пользователь.

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

Приведенный фрагмент кода является лишь небольшой демонстрацией того, насколько громоздким может быть код валидации данных. Тем не менее, приведенный выше пример является упрощенной демонстрацией того, как может выглядеть подобный код. Как видно при относительно малом количестве проверяемых параметров, создается большое количество кода. В реальных условиях эти проверки обычно сложнее, а параметров больше.

Поскольку подобный подход вносит множество программного кода в процесс обработки запроса и ухудшает читаемость программы, платформа ASP.NET содержит ряд механизмов для выполнения валидации в виде отдельных программных компонентов.

Существует два вида валидации данных, введенных пользователем.

  • клиентская валидация;
  • серверная валидация.

Клиентская валидация производится в бразуере на стороне клиента. Как правило, логика валидации на стороне клиента реализуется посредством сценариев JavaScript, которые запускаются внутри браузера. Клиентская валидация обычно содержит несложные алгоритмы проверки. Это происходит в силу того, что клиентский код физически не может обратиться к серверным ресурсам (например, к базе данных). Поэтому на стороне клиента проверяются самые тривиальные сценарии (такие как проверка длины строки, проверка на вхождение в диапазон и т.д.).

Клиентская валидация может отсутствовать в приложении. Однако, если сценарии валидации присутствуют на стороне клиента, это может избавить от необходимости лишних обращений к серверу в случае невыполнения простых условий проверки.

Серверная валидация работает в рамках программного кода, размещенного на стороне сервера. Здесь проверяются всевозможные случаи, в том числе те, которые уже были проверены на стороне клиента. Кроме тривиальных проверок, на стороне сервера могут работать более сложные алгоритмы. Необходимость дублирования проверки сценариев, которые уже были проверены на стороне клиента, обусловлена тем, что клиентские проверки могут не сработать, если в браузере у клиента отключено исполнение сценариев JavaScript. Другими словами наличие клиентской валидации не может гарантировать успешную проверку определенных там ограничений.

Общий алгоритм валидации данных, введенных пользователем можно представить следующим образом.

Таким образом, серверная валидация – это необходимый процесс, который должен выполнятся всякий раз, когда обрабатывается пользовательский ввод, а клиентская валидация – это опциональный компонент, который позволяет избавить пользователя от необходимости лишних обращений к серверу и повысить удобство работы с приложением.

www.intuit.ru

Проверка паролей

Одним из наиболее распространенных требований, особенно при разработке корпоративных приложений, является контроль сложности паролей, которые используют пользователи для входа в свою учетную запись. ASP.NET Identity включает класс PasswordValidator, с помощью которого можно настроить систему сложности проверки паролей, используя свойства, перечисленные в таблице ниже:

Свойства, определенные в классе PasswordValidator
Название Описание
RequiredLength

Задает минимально допустимую длину пароля

RequireNonLetterOrDigit

Если установлено значение true, пароль должен содержать хотя бы один символ, который не является ни буквой ни цифрой

RequireDigit

Если установлено значение true, пароль должен содержать цифры

RequireLowercase

Если установлено значение true, пароль должен содержать строчные символы

RequireUppercase

Если установлено значение true, пароль должен содержать прописные символы

Политика определения паролей задается путем создания экземпляра класса PasswordValidator, установки значений его свойств и использовании этого объекта в качестве значения для свойства PasswordValidator класса UserManager<T> в методе Create:

Я использовал класс PasswordValidator, чтобы определить политику, которая требует не менее шести символов, сочетание прописных и строчных букв. Чтобы протестировать эту функциональность, запустите приложение и перейдите по адресу /Admin/Index, затем нажмите кнопку «Создать» и попытайтесь создать пользователя с пустым паролем. При отправке формы, пароль не пройдет проверку достоверности, в результате отобразится ошибка:

Реализация пользовательской проверки паролей

Возможности встроенной проверки паролей являются достаточными для большинства приложений. Однако, возможно вам потребуется создать сложные проверки достоверности для паролей, выходящие за рамки стандартных свойств класса PasswordValidator. Расширить базовые возможности валидации паролей можно, создав класс, унаследованный от PasswordValidator и переопределяющий его метод ValidateAsync(). Добавьте файл класса CustomPasswordValidator.cs в папку Infrastructure со следующим содержимым:

В этом примере мы переопределили метод ValidateAsync() и вызвали сначала базовую реализацию этого метода для запуска встроенной проверки. Далее мы добавили пользовательскую проверку паролей на предмет того, не содержит ли он последовательности чисел «12345». Свойство Errors объекта IdentityResult доступно только для чтения, поэтому чтобы вернуть список ошибок мы создали новый объект IdentityResult и объединили ошибки из базовой проверки достоверности паролей с ошибками из пользовательской проверки. Я использовал LINQ для соединения этих ошибок.

Следующий пример демонстрирует использование нового класса валидатора:

Чтобы протестировать пользовательскую проверку паролей, попробуйте создать новую учетную запись пользователя с паролем «secret12345». Этот пароль нарушает два правила проверки — одно правило для встроенной проверки, второе — для пользовательской. Обе эти ошибки отобразятся при попытке создать нового пользователя:

Проверка данных пользователя

Более общие проверки могут осуществляться путем создания экземпляра класса UserValidator и использования его свойств из таблицы ниже:

Свойства, определенные в классе UserValidator
Название Описание
AllowOnlyAlphanumericUserNames

Если задано true, имена пользователей могут содержать только буквы и цифры

RequireUniqueEmail

Требует наличие уникального адреса электронно почты

Выполнение проверки данных пользователя выполняется аналогично проверке паролей — свойству UserValidator класса UserManager<T> присваивается объект UserValidator, с предварительно инициализированными свойствами:

Класс UserValidator принимает обобщенный тип, который указывает на класс описания пользователя (в нашем случает это AppUser). В конструктор класса UserValidator передается экземпляр типа UserManager, для связывания проверки пользовательских данных с классом модели пользователя.

Также как и для проверки паролей, вы можете расширить проверку данных пользователя, создав класс, унаследованный от UserValidator. В качестве примера добавьте файл CustomUserValidator.cs в папку Infrastructure проекта со следующим содержимым:

Конструктор производного класса должен принимать экземпляр класса управления пользователем (UserManager) и вызывать конструктор базового класса для запуска встроенной проверки достоверности. Настраиваемая проверка осуществляется путем переопределения метода ValidateAsync, который принимает экземпляр класса пользователя (IdentityUser) и возвращает объект IdentityResult. В этом примере мы добавили расширенную проверку поля адреса электронной почты, которая должна включать в себя домен «mail.com». В следующем примере мы расширили метод Create класса AppUserManager, добавив пользовательскую проверку:

На рисунке ниже показан пример тестирования этой проверки, когда email-адрес пользователя не содержит домена «mail.com»:

Изменения текста ошибок проверки достоверности

Чуть ранее я говорил, что покажу как изменить тексты стандартных ошибок проверки достоверности. Очевидно, что ошибки на английском языке для русскоязычного приложения недопустимы. Итак, нам необходимо реализовать интерфейс валидатора IIdentityValidator<T>, где T — тип проверяемого поля. Например, рассмотренный выше класс PasswordValidator реализует интерфейс IIdentityValidator<string>, а UserValidator — IIdentityValidator<IdentityUser>. Для примера давайте изменим определение класса CustomUserValidator:

В этом примере мы вручную проверяем заполнение поля и список допустимых символов в имени пользователя. Также необходимо изменить вызов вспомогательного класса валидации в методе Create() класса AppUserManager:

professorweb.ru

Валидация и верификация — что это простыми словами?

Оба понятия связаны с тестированием какого-либо продукта и обеспечением его качества. Если мы будем говорить простым языком, то выведем следующее:

  • Валидация – гарантированная уверенность производителя в том, что он создал продукт по всем необходимым стандартам.
  • Верификация – помогает увериться в том, что изделие соответствует всем изначально заданным требованиям к нему.

верификация и валидация что это простыми словами

Рассказывая простыми словами, что это – верификация и валидация, нужно сделать упор и на такие факты:

  • Для потребителя важнее всего валидация – уверенность в том, что он получает правильный продукт, соответствующий его требованиям.
  • Для производителя более ценной будет верификация – подтверждение того, что изделие, которое он отправляет на реализацию, отвечает всем необходимым стандартам и нормам.

Еще одно значение

Мы еще разберем различие в понятиях «верификация» и «валидация» в тестировании. Ведь по большому счету они связаны с международными требованиями к проверке, приемке технологий и различной продукции.

Однако вместе с тем слова плотно вошли в жизнь и интернет-пользователей. Например, регистрируясь в платежных системах типа «Киви», «Яндекс. Деньги», вы должны пройти процесс верификации. В данном случае это обозначает проверку подлинности указанных данных о себе, идентификацию вас системой.

валидация и верификация отличие

А те, кто активно пользуются социальными сетями («ВКонтакте», «Одноклассники» и проч.), рано или поздно видят перед собой окошко с просьбой пройти валидацию. Это такая же проверка истинности введенных вами данных. К примеру, на привязанный к аккаунту телефон приходит СМС с кодом, который нужно напечатать в определенное поле, чтобы подтвердить, что вы являетесь владельцем указанного номера.

Таким образом, в данном случае трудно выделить разницу между валидацией и верификации. И то и другое, по сути, здесь является проверкой на указание соответствующих действительности данных. Хотим также указать на факт, что валидацию/верификацию успешно используют разработчики различных вирусов с целью выманивания у вас личной информации. Отчего такие данные следует вводить на надежных ресурсах, с компьютера, защищенного современным качественным антивирусом.

Определение стандарта ИСО 9000:2000

Объяснить простыми словами, что это – верификация и валидация, поможет характеристика этих терминов, данная в документах ИСО (ISO – Международная организация по стандартизации). Здесь мы видим следующее:

  • Верификация – подтверждение на основе объективных предоставленных фактов того, что установленные нормы были выполнены.
  • Валидация – подтверждение на основе объективных предоставленных фактов того, что установленные нормы для конкретного применения выполнены.

чем отличается валидация от верификации

Вот из этих определений уже вытекает разница валидации и верификации:

  • Первая процедура проводится только по необходимости. Продукт анализируется в заданных условиях эксплуатации. Результатом будет вердикт: возможно ли его использовать в данной обстановке.
  • Вторая процедура практически обязательна. Это проверка на соответствие продукта требованиям, которые будут актуальны при любых условиях, при любом использовании.

Прочие определения верификации

Помочь разобраться в теме нам поможет ряд распространенных определений рассматриваемых понятий. Приведем характеристики верификации:

  • Подтверждение соответствия выпущенного товара, продукта определенным эталонам.
  • Практически обязательная процедура; сличение характеристик произведенной единицы с рядом заданных требований. Результат – вердикт соответствия или несоответствия последним.
  • Провозглашение подтверждения, что установленные нормы в отношении изделия были выполнены.
  • Простыми словами – создан продукт, который соответствует необходимым стандартам.

валидация и верификация разница

Прочие определения валидации

Рассмотрим теперь определения валидации:

  • Практическое определение того, насколько тот или иной продукт соответствует ожиданиям его непосредственных пользователей.
  • Процедура, которую проводят при необходимости. Это распространенный анализ заданных условий и оценка характеристик продукта касательно его эксплуатации в данной среде. Результат – вывод о возможности использования товара, изобретения в определенной сфере.
  • Подтверждение соблюдения требований системы стандартов, заказчика, непосредственного пользователя и проч.
  • Простыми словами – создан правильный продукт, удовлетворяющий потребителя.

Отличия на основе перевода

Определить, в чем разница между валидацией и верификацией, поможет и обращение к переводу этих слов, имеющих английские корни:

тестирование верификация и валидация различия в понятиях

  • Verification – какая-либо проверка.
  • Validation – придание чему-либо законной силы.

Даже из этого следует, что верификация предшествует валидации, не является конечной. Окончательный вердикт продукту, имеющий законную силу, дает именно последняя.

Отличия верификации и валидации в сравнении

В сравнительной таблице легче обозначить различия этих в чем-то схожих терминов.

Верификация Валидация
Делаем ли мы продукцию правильно? Произвели ли мы правильный продукт?
Вся ли функциональность была реализована? Верно ли функциональность была реализована?
Верификация предшествует валидации: она включает в себя полную проверку правильности написания, производства и прочего сотворения. Случается уже после верификации — это оценка качества произведенного продукта.
Проводят разработчики. Проводят тестировщики.
Статистический тип анализа: сравнение с установленными требованиями к продукту. Динамический тип анализа: продукт тестируется в эксплуатации для выяснения его соответствия нормам.
Объективная оценка: выносится на основе соответствия определенным стандартам. Субъективная оценка: личная оценка, которую ставит специалист-тестировщик.

Давайте еще немного порассуждаем, чем отличается валидация от верификации, в следующем разделе.

Ключевые различия понятий

Итак, расставим все точки над i. Верификация – это любое тестирование, через которое проходит продукт. Проверка правильности технологии его производства, а также качества изделия. Валидация же — понятие, более близкое к аттестации. Это соответствие каким-то конкретным, а не общим требованиям. Насколько хорош продукт не вообще, а именно для определенного потребителя, заказчика или заданных условий.

Еще можно отметить, что верификация – это бумажное, теоретические тестирование технологии или продукта. Валидация же – реальная, физическая проверка, осуществляемая на практике, в конкретных условиях.

в чем разница между валидацией и верификацией

Если изделие прошло верификацию, значит, оно соответствует каким-то заданным технологическим требованиям. Если же успешно пройдена валидация, выходит, что на практике оно также без нареканий применимо. Отсюда можно вынести, что последнее понятие несколько важнее, показательнее, нежели первое.

Примеры верификации

Давайте посмотрим на конкретные примеры, чтобы закрепить в голове разницу между этими понятиями.

Фармацевтический завод проверяет лекарства на соответствие конкретным требованиям. На вводе в производство устанавливается их безопасность для пациента в определенных дозах, отсутствие эффекта плацебо, неимение возможности проявления губительного привыкания и проч. Таким образом, верификация препаратом пройдена. А валидацию в этом случае проводит уже лечащий доктор: он определяет, поможет ли лекарство конкретному пациенту, не приведет ли его применение к риску для жизни и здоровья этого человека и т. д.

Рассмотрим на примере велосипеда. Проверяем, есть ли руль, сидение, цепи, колеса, тормозная система и проч. Все на месте? Верификация пройдена!

Примеры валидации

Теперь примеры, чем отличается валидация от верификации.

Валидация данных

Какое-либо предприятие в соответствии с определенными требованиями производит универсальные трубы. Поступает вопрос от заказчика: возможно ли данный продукт проложить по дну моря? Производитель должен провести валидацию своих труб в соответствии с предложенными условиями, чтобы объективно ответить на этот вопрос.

На примере того же велосипеда рассмотреть валидацию тоже очень легко. На устройстве можно кататься? Можно затормозить? Можно повернуть вправо, влево? Переключить скорость? Если все возможно, валидация пройдена. Не смогли затормозить, упало сидение, расшатан руль – увы, велосипед данную процедуру не прошел.

Вот мы и разобрали понятия «верификация» и «валидация», постаравшись выразить все простым языком. Надеемся, что это поможет вам четко проследить разницу между ними, особенности каждого.

fb.ru

Валидация лид-форм — полное руководство

Нет ничего более утомительного, чем заполнение неграмотно составленной лид-формы на посадочной странице. Вспомните, сколько раз вам приходилось перезаполнять все поля из-за того, что придуманный вами пароль не подходил системе по тем или иным критериям, уведомить о которых вас никто не постарался заранее.

Имейте в виду, что оптимизация лид-форм — это ключевой компонент процесса оптимизации конверсии, и основное внимание здесь следует уделить валидации полей.

  • Юзабилити лид-форм: эффективные методы повышения конверсии интернет-магазинов

Что такое валидация лид-формы?

Валидация лид-форм — это технический процесс, в ходе которого системой проверяется верность введенных пользователем данных. Если человек допустил ошибку при заполнении формы (например, указал данные в неправильном формате), то система укажет ему на эту ошибку (либо просто на ее наличие) и предложит исправить. Если же пользователь ввел все данные верно, то никаких дополнительных сообщений не возникнет (либо рядом с полем появится галочка), и он перейдет на следующий этап регистрации.

К примеру, Twitter не позволит вам перейти на следующий этап регистрации, если вы введете адрес электронной почты в неправильном формате:

Валидация

Когда вы введете адрес почты в том формате, который нужен системе, рядом с полем появится галочка, свидетельствующая о том, что формат введенных данных верен:

Валидация

Суть валидации — гарантировать введение пользователями данных в формате, требуемым системой (например, адрес почты должен соответствовать стандарту user@example.com, а вот, к примеру, пароль должен содержать не менее 7 символов).

Существуют два основных вида формы валидации:

1. Валидация после отправки данных.
2. Встроенная валидация.

  • 10 простых идей по улучшению конверсии лид-форм

Валидация после отправки данных

Этот вид валидации наиболее распространенный, но вместе с тем далеко не самый удачный. Принцип его работы довольно прост: после заполнения всех необходимых полей пользователь отправляет данные на сервер веб-ресурса (обычно нажатием кнопки «Отправить»), где они и проходят валидацию. Результат проверки возвращается на компьютер пользователя в виде сообщения: если все данные верны, то появится подтверждающее этот факт сообщение, если нет — то сообщение об ошибке.

Как вы понимаете, такая организация процесса валидации может вызывать массу неудобств. Представьте, что вы потратили порядка 10 минут на заполнение очень длинной формы, а затем получили сообщение, что совершили 8 ошибок, как на примере ниже:

Валидация после отправки данных

Извините, но вы совершили 8 ошибок при заполнении формы регистрации. Исправьте ошибки, отмеченные ниже, и попробуйте снова.
Ошибки: пароли не совпадают; неправильно введен email-адрес; не указана дата рождения и т.д.

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

Но бывают ситуации и похуже. Например, когда вам приходит сообщение об ошибке, а предлагаемый вариант заполнения поля оказывается совершенно нелогичным:

Валидация после отправки данных

Пип Лайя (Peep Laya), известный маркетолог и основатель блога ConversionXL, пытался заполнить форму, приведенную выше, чтобы получить смету на предстоящее мероприятие. После валидации формы система сообщила о совершенной ошибке. Строка «Число гостей» требовала ввода конкретного числа, тогда как Пип ввел предполагаемый диапазон гостей (от 50 до 100), что логично на самом деле, поскольку никогда нельзя быть уверенным в том, сколько человек посетит то или иное мероприятие. Как это обычно и бывает, до отправки формы о наличии подобного требования нигде указано не было. В этом-то и заключается основная ошибка разработчиков.

Чуть ниже мы коснемся тех примеров, в которых подобные недоработки элегантно устранены, а сами лид-формы представляют собой образцы, достойные для подражания, несмотря на то, что там валидация происходит после отправки данных.

Встроенная валидация

Ключевое преимущество этого вида валидации заключается в том, что он делает процесс заполнения лид-форм максимально комфортным. Разумеется, пользователю все так же придется вводить вручную и телефонные номера, и адреса электронной почты, но проверка введенных данных будет производиться мгновенно — если человек допустит ошибку, узнает он об этом незамедлительно и, следовательно, так же быстро сможет ее исправить.

Хороший пример встроенной валидации — регистрационная форма Twitter. При заполнении полей вы видите либо подтверждающий сигнал (зеленую галочку), либо сигнал, указывающий на наличие ошибки (красный крестик):

Встроенная валидация

Большинство экспертов сходятся во мнении, что встроенная валидация благотворно влияет на опыт взаимодействия с ресурсом (user experience). Вот что говорит о лид-формах Люк Врублевский (Luke Wroblewski), директор по продуктам Google и автор книги «Сначала мобильные!»:

«Лид-формы — не очень приятные собеседники. Они задают кучу вопросов, потом ждут, когда вы на них ответите, и лишь затем говорят что-то свое, как-то реагируют. Этот процесс больше напоминает монолог, чем активное взаимодействие».

Встроенная валидация во многом решает эту проблему, придавая процессу заполнения лид-формы характер диалога. Чтобы проверить данный тезис, было проведено исследование, в ходе которого эксперты сравнили эффективность встроенной валидации и валидации после отправки данных. Результаты были следующие:

  • коэффициент успешного заполнения формы повысился на 22%;
  • на 22% сократилось число совершенных ошибок;
  • рейтинг удовлетворенности повысился на 31%;
  • время выполнения задачи уменьшилось на 41%;
  • на 47% уменьшилось число фиксаций глаз;
  • на 22% увеличилось число людей, посчитавших, что заполнение формы стоило затраченных усилий.

Одна из статей веб-ресурса Designmodo посвящена описанию встроенной валидации на уже упомянутом сервисе микроблоггинга Twitter:

«Обаяние хорошо продуманного формата валидации данных в Twitter неотразимо. Информативные сообщения об ошибках появляются рядом с тем полем, где, собственно, совершена ошибка, мгновенно устраняя возникающее раздражение от процесса заполнения формы. Встроенная валидация помогает пользователю понять, что происходит в данный момент — небольшая регистрационная форма как будто пытается вести с ним разговор. Это настоящее откровение! В конце концов, человеку не придется ждать перезагрузки всей страницы, чтобы проверить, заполнена ли форма нужными данными».

Приемы оптимизации лид-формы

Встроенная валидация — это очень эффективный инструмент, но далеко не всегда оказывается возможным имплементировать его в свой ресурс. Однако даже в этой ситуации в ваших силах сделать лид-формы более понятными и удобными для заполнения. Ниже перечислены лучшие практики, которые помогут вам справиться с этой задачей.

1. Дополните лид-форму кратким пояснительным текстом (подсказками)

Подсказки (или микротекст) — это небольшие островки текста, набранного мелким шрифтом, которые придают отдельным элементам вашей страницы больше ясности. Всевозможные инструкции по заполнению лид-форм, сообщения об ошибках, инструкции, условия, описания продуктов — все это может быть представлено в виде подсказок. В контексте рассматриваемой темы использовании микротекст может существенно улучшить юзабилити ваших лид-форм, сделать их более понятными.

Однако текст, который вы размещаете рядом с полями формы, должен быть максимально доступным. Агентство Baymard Institute сообщает, что в ходе проведенного им исследования наиболее успешных интернет-магазинов было выявлено, что 92% из них грешат неадекватным описанием полей лид-форм в процессе подтверждения заказа.

Чтобы избежать путаницы, постарайтесь быть как можно более конкретными в подсказках, как на примере ниже:

Подсказки

С помощью коротких, но предельно ясных пояснений, разработчикам удается ответить на все возможные вопросы со стороны пользователя: как написать свое имя, номер карты и код безопасности. Микротекст помогает посетителям заполнить форму быстрее, с меньшим количеством ошибок.

Джошуа Портер (Joshua Porter), UX-директор в Hubspot, также отмечает невероятную полезность данного инструмента. Узнав, что пользователи испытывают затруднения с заполнением платежной информации, он добавил строку текста, которая сообщала, что информация, вводимая в форму, должна совпадать с информацией, размещенной на их кредитных картах. После этого нововведения проблема исчезла.

Hubspot

«Убедитесь, что вводимая вами информация совпадает с данными вашей кредитной карты»

Подсказки бывают полезны и для того, чтобы пояснить пользователям, зачем вам требуется та или иная информация, и снизить таким образом уровень скептицизма и недоверия к вам.

Согласно результатам исследования агентства Baymard Institute, пользователи чувствуют дискомфорт и тревогу, когда при заполнении формы их просят ввести информацию личного характера (например, номер телефона или адрес места жительства) и при этом не объясняют, зачем эта информация нужна. Очевидно, что такой подход чреват высоким уровнем отказов, поскольку далеко не каждый готов предоставить эти данные безвозмездно. В микротексте же вы можете дать ответ на подобные вопросы и снять лишнее напряжение. В частности, следует обратить внимание пользователей на то, для чего вам нужны те или иные данные, для каких целей:

Hubspot

«На этот адрес мы вышлем вам электронное письмо с подтверждением подписки»

2. Будьте аккуратны с сообщениями об ошибках

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

Обратите внимание на то, как реализована система оповещения об ошибке на сайте Meetup.com (социальная сеть). В данном случае неверно заполнено поле почтового индекса:

Meetup

Важно сделать так, чтобы содержание уже заполненных пользователем полей не менялось даже после отправки формы и появления сообщения об ошибке. Если после каждой перезагрузки будет происходит обнуление формы, вероятнее всего, ее так никто и не заполнит.

3. Будьте тактичны при оповещении об ошибках

Ясно как день: людям не нравятся сообщения об ошибках.

Журнал Smashing Magazine сообщает, что «даже если человек заполнил до 90% лид-формы правильно, но после ее отправки и перезагрузки страницы увидел сообщение об ошибке, он будет чувствовать себя так, словно ничего и не заполнял».

Для начала, не используйте слова с негативным оттенком. Выбросьте из головы все фразы типа «ошибка» и «неправильно».

Самое худшее, что вы можете сделать — это дать человеку почувствовать себя недостаточно умным, чтобы заполнить вашу форму (которая, вероятно, сама по себе слишком запутанная). Вместо того, чтобы фокусировать внимание пользователя на его ошибках, предложите вариант решения проблемы.

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

Ниже — пример, в котором все сделано правильно. Обращаем внимание на то, как Google сообщает своим пользователям о совершенных ими ошибках:

Meetup

Если на вашем сайте реализована встроенная валидация, помните, что кроме оповещения об ошибках, вам нужно как-то сообщать пользователям и о том, что они сделали правильно.

4. Не будьте излишне придирчивы

Один из неприятных моментов, с которым сталкиваются пользователи при заполнении лид-форм — ситуация, когда данные запрашиваются в конкретном формате, а вариативность исключается.

К примеру, если вы запрашиваете у человека дату, разрешите ему ввести год как «16» или «2016» — не нужно ограничивать его каким-то одним вариантов, ведь очевидно, что могут быть использованы оба эти обозначения. Также позвольте людям ставить (/) или (.) между цифрами. Когда вы запрашиваете номер телефона, не требуйте наличия пробелов, скобок или чего-нибудь еще — пусть пользователь введет свой номер телефона так, как ему это удобно.

Если вам нужны данные в определенном формате, объясните это с помощью микротекста, а еще лучше — преобразуйте данные в нужный формат при помощи скрипта.

Подобная нетребовательная валидация делает пользовательский опыт более инклюзивным. Неважно, поймет ли и увидит ли человек подсказку — пока возможны вариации при введении данных, все они должны быть приняты.

Джеймс Робинсон (James Robinson), автор бестселлера «Будущее сетевого маркетинга», говорит по этому поводу следующее:

«Начните использовать свободную валидацию лид-форм: вместо того, чтобы строго требовать от пользователей ввода данных в конкретном формате, допустите вариативность. Со временем вы поймете, как именно удобно пользователям вводить ту или иную информацию, и приспособитесь под их формат. Это более выигрышно, чем требовать от людей нечто, что подходит вам, но не им».

Особенно это касается паролей. Старайтесь не допускать возникновения такого сценария:

Пароль

«Поле с паролем не может быть пустым;
Пароль должен содержать от 8 до 16 символов;
В пароле должны быть использованы буквы и цифры;
Пароль должен содержать хотя бы одну цифру или букву;
Не допускается повторения числа или буквы до 3-х раз и т.д.»

  • 5 советов по созданию вашей следующей лид-формы

Превентивные меры

Грамотный сервис и комфортный user experience — это не только своевременные и приятные глазу сообщения об ошибках, но и инструменты, которые помогают пользователям не совершать ошибок вовсе. Вышеперечисленные приемы во многом преследуют ту же цель, но их не всегда бывает достаточно. Ниже перечислены несколько превентивных инструментов, при наличии которых совершить ошибку можно разве что специально.

1. Не следуйте общему правилу

На большинстве сайтов вы можете встретить лид-форму, при заполнении которой (как правило, поля «Пароль») вы не видите вводимые значения: они заменяются звездочками. Как вы понимаете, несмотря на то, что эта практика широко распространена, она далеко не самая удачная, поскольку вызывает проблемы с юзабилити.

Вместо того, чтобы делать как все, экспериментируйте. Например, можете попробовать систему с показом последнего введенного символа в пароле (это просто находка для владельцев смартфонов с маленькими экранами):

«Пароль»

2. Показать пароль

Еще в 2009 году на этот аспект обращал внимание и Якоб Нильсен (Jakob Nielsen), основатель консалтингового агентства Nielsen Norman Group, в своей статье «Хватит скрывать пароли» (Stop Password Masking). Он также утверждает, что маскировка пароля приводит к большим проблемам с юзабилити лид-формы. Согласно Нильсену:

  • пользователи совершают больше ошибок, когда они не видят, какие символы вводят в поле. Поэтому они чувствуют себя недостаточно уверенно и легко могут вовсе отказаться от заполнения формы (что приводит к снижению показателя конверсии);
  • возникающая неуверенность и неопределенность в итоге приводит к тому, что люди склонны использовать более простые пароли, которые просто взломать. Это заметно снижает степень безопасности, а следовательно — и удовлетворенность вашим сервисом, если вдруг возникнет критическая ситуация.

Взгляните на пример eBay:

Валидация данных

Кстати, совсем необязательно требовать от пользователя подтверждения email-адреса при регистрации. Так делают многие сервисы, но это не повод поступать так же. Вместо этого можно последовать примеру Vimeo — запрашивать электронный адрес только один раз:

email-адрес

3. Не используйте плейсхолдеры

Плейсхолдеры выглядят следующим образом:

Плейсхолдеры

Они не совсем удобны по следующим причинам:

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

4. Выпадающие меню и всплывающие подсказки

По возможности, ограничьте число вопросов, при ответе на которые пользователи могут допустить ошибку. Например, для заполнения той же даты можно задействовать выпадающее меню.

Помните пример, приведенный выше, в котором пользователю необходимо ввести конкретное число посетителей мероприятия?

Выпадающие меню

Вместо того, чтобы выпытывать у пользователя точное число гостей, разработчикам следовало реализовать форму ввода информации в формате того же выпадающего меню, где можно было бы выбрать один из диапазонов (0-50, 50-100, 100-200 и т.д.).

Если есть возможность, то используйте технологию встроенных подсказок. Пример — ниже:

Выпадающие меню

  • Тонкости настройки лид-форм, которые позволят вашей конверсии взлететь вверх

Заключение

Заполнение лид-форм редко когда бывает приятным. При этом если пользователь не понимает, что он может сделать неправильно, либо не знает, как исправить ошибку, то с большей вероятностью он просто-напросто покинет ваш сайт и найдет какой-нибудь другой.

Приведенные выше инструменты и приемы помогут вам превратить заполнение формы в приятный и увлекательный опыт, но для этого недостаточно одних лишь технологий. Как и всегда, важно внимательное отношение к клиенту, содействие и помощь при выполнении этой обязательной, но не всегда простой работы. Измените свое отношение к посетителям — и тогда вы сможете найти еще не один десяток способов, как сделать валидацию лид-форм, да и заполнение самой лид-формы, занятием необременительным.

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

Высоких вам конверсий!

По материалам conversionxl.comImage source Simo Tata 

lpgenerator.ru


You May Also Like

About the Author: admind

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

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

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

Adblock
detector