Валидация — что это простыми словами? Чем отличается валидация от верификации? + ПРАКТИЧЕСКИЙ СОВЕТ
Валидация — что это простыми словами? Чем отличается валидация от верификации? Ответы на эти вопросы — в статье.
Многие слова «валидация» и «верификация» считают синонимами. Но это не так. Разница есть, но она очень тонкая. Давайте разбираться.
Валидация и верификация — что это простыми словами?
Справедливости ради надо сказать, что в разных областях деятельности (в банках, в платежных системах, в интернете), в разных отраслях производства эти термины используются по-разному. Я решила привести здесь определение валидации и верификации из стандарта ISO 9000.
Мы видим, что определения совпадают в значительной части, но не полностью. Однако, несмотря на такое большое совпадение валидация и верификация — это разные действия.
Занятие 14 Программы с циклами и ветвлениями
Чтобы проще было понять, что такое валидация, давайте сначала разберемся, чем валидация отличается от верификации.
Чем отличается валидация от верификации?
Итак, что такое верификация? Более детально можете узнать из этой статьи, но здесь скажем коротко, что слово «верификация» происходит от английского слова «verification» — проверка. А слово «валидация» происходит от английского «validation» — придание законной силы.
Верификация (verification) — проверка Валидация (validation) — придание, подтверждение законной силы
Примеры валидации и верификации в разных сферах.
Без примеров трудно понять отличия валидации и верификации. Приведем несколько примеров из разных областей.
Пример из области медицины
Скажем, разработали новое лекарство. Провели многочисленные тесты для ПРОВЕРКИ, что лекарство лечит такую-то болезнь. Здесь речь идет о ВЕРИФИКАЦИИ (о проверке соответствия лекарства его предназначению). Но Вы знаете, что на самом деле лекарство подходит не всем. Чтобы начать лечение Вам нужна ВАЛИДАЦИЯ врача.
Только врач может ПОДТВЕРДИТЬ, что это лекарство подойдет КОНКРЕТНО Вам.
ВЕРИФИКАЦИЯ — это тестирование лекарства с целью ПРОВЕРКИ на соответствие его предназначению. А ВАЛИДАЦИЯ — это ПОДТВЕРЖДЕНИЕ врача, что лекарство подойдет КОНКРЕТНОМУ больному.
Пример из области производства
Предположим завод по производству велосипедов принял заказ на партию велосипедов. Так вот, ВЕРИФИКАЦИЮ (ПРОВЕРКУ) на соответствие требованиям заказчика выполняет сам завод-производитель. А вот ВАЛИДАЦИЮ (ТЕСТИРОВАНИЕ, ПРОВЕРКУ) на соответствие своим требованиям будут выполнять представители самого заказчика.
Пример из области IT
Аналогичный пример можно привести из области IT. Компания — разработчик программного обеспечения получила заказ на разработку какого-то софта. Программа, которая была создана, прошла тестирование. Результатом тестирования является ВЕРИФИКАЦИЯ на стороне компании, выполняющей заказ, что программа полностью соответствует тех заданию заказчика. А вот ВАЛИДАЦИЮ будет выполнять сам заказчик, когда установит программное обеспечение и протестирует его.
Пример из сферы интернета
Социальная сеть Твиттер проводит ВЕРИФИКАЦИЮ аккаунтов знаменитостей, чтобы участники сети точно знали, что посты публикуются действительно этой знаменитостью. В результате верификации в аккаунте знаменитости появляется синий значок с галочкой.
Еще пример. Для того, чтобы стать продавцом на Амазоне, Вам необходимо пройти ВЕРИФИКАЦИЮ личности. Также необходимо пройти верификацию при регистрации аккаунтов во всех платежных системах (Вебмани, Яндекс.Деньги, Киви и т.д.)
Пример из законодательной области
Инициативный депутат решил улучшить жизнь и придумал прогрессивный Закон. Законотворческие органы выполнят ПРОВЕРКУ нового Закона на соответствие другим Законам и международному праву и ВЕРИФИЦИРУЮТ его. Но Закон вступит в силу не сразу, а только через месяц — после его ВАЛИДАЦИИ (придания законной силы) высшим органом законодательной власти. За этот месяц можно отозвать Закон, выявив вред для каких-то КОНКРЕТНЫХ слоев населения.
Например, соц сеть Твиттер верифицирует аккаунты знаменитостей для того, чтобы пользователи были уверены, что сообщения действительно публикует эта знаменитость или её официальный представитель. В аккаунте пользователя Твиттере, который прошел такую верификацию, ставится синий значок с галочкой.
Теперь можно сделать общий вывод, что верификация (проверка) встречается чаще, чем валидация. Валидация (подтверждение для конкретного случая) нужна не всегда.
Практический совет
Вы спросите, для чего нужно разбираться в этих терминах? Скажу, что есть и практическая польза. Главная цель верификации и валидации — безопасность, чтобы Ваши банковские карты и аккаунты были защищены. Однако, пользуясь тем, что многие не разбираются в этих терминах, злоумышленники для похищения личных данных часто применяют такой способ, как сообщение с просьбой верифицировать или валидировать вашу банковскую карту, аккаунт и т.д..
Практический совет: При появлении окна с просьбой верификации или валидации Ваших данных проверьте в адресной строке данные сайта, нет ли пропущенных или лишних символов. Либо попробуйте зайти в эту программу с другого устройства и если такого сообщения не появляется, значит Ваш компьютер надо лечить от опасных вирусов.
Резюме
Надеюсь, статья, оказалась полезной для Вас и Вы теперь знаете ответы на вопросы: Валидация — что это простыми словами? Чем отличается валидация от верификации?
Вот по традиции порция полезного видео. В котором Жак Фреско учит мыслить нестандартно, не так, как все. ЭТИ НЕСКОЛЬКО МИНУТ БУДУТ ТОЧНО ПОТРАЧЕНЫ НЕ ЗРЯ!
Желаю всем новых идей и много сил для их реализации!
Источник: alenakraeva.com
Что такое Валидация простыми словами?
Слово валидация встречается достаточно часто в интернете, когда речь заходит о заполнении разного рода форм ввода. Поэтому вполне логичным действием будет разобраться в том, что это такое и зачем нужно. Об этом и пойдет речь в данном обзоре.
Валидация это
Валидация — это в сфере ИТ простыми словами проверка корректности введенных значений пользователем. А в общем смысле валидация это подтверждение того, что требования, подразумевающие конкретное использование или применение, выполнены.
Например, вы могли обращать внимание, что, когда заполняете разного рода формы ввода в сайтах, то в случае некорректно введенных данных сайт не дает отправить их. В такой ситуации обычно кнопка отправки становится недоступной, а поля с некорректно введенными значениями подкрашиваются красными рамками или как-то иначе выделяются. Это и представляет собой валидацию.
Примечание: Кстати, слово валидация применяется во многих других сферах. Учитывайте это
В чем разница между валидацией и верификацией?
Нередко верификацию и валидацию путают между собой. И в этом нет ничего удивительного, так как эти термины схожи по смыслу. Однако верификация подразумевает нечто формальное (соответствие общим требованиям), а валидация нечто более персонализированное.
Например, вам нужна некая программа, которая выполняет опредленное действие. Вы ищите в интернете и находите список программ, у которых указано данное действие как поддерживаемое. Это верификация, так как формально программы выполняют нужное вам действие.
Дальше вы устанавливаете эти программы себе на компьютер и проверяете их. Из всех программ выбираете одну или несколько, которые выполняют действие так, как вам надо. Это валидация, так как, хоть формальные требования выполнены, не каждая программа подходит под ваши конкретные требования.
Зачем нужна валидация?
Первым делом, посмотрите на картинку выше, она из обзора Валидация полей произвольных форм и контейнеров на jQuery. Не сложно заметить, что в такой форме достаточно просто понять, где данные были введены правильно, а где требуется их корректировка (в данном случае подразумевается, что поля с датой и URL могут быть пустыми).
Чаще всего валидация применяется для решения следующих задач:
2. Как дополнительная защита сайта. Разного рода переполнения буфера, инъекции и т.п. Иными словами, все то, что используют «редиски» для того, чтобы получить доступ к внутренностям сайта. Соответственно, задача валидации в том, чтобы изначально ограничить подобные возможности.
Например, если в поле с данными должен быть обычный текст, скажем, с названием товара, то значит в этом поле не должно быть html или JS-кода, а так же некоторых специальных символов, ведь там должен быть обычный текст.
3. Для снижения нагрузки. Каждая необходимость исправлять ошибку — это время и силы. Как говорится, порой лучше потратить дополнительных 5 минут на проверку, чем потом «часами париться».
Виды валидации форм ввода в сайтах
Прежде всего нужно понимать, что валидация в сайтах может происходить ДО и ПОСЛЕ отправки формы ввода. В последнем случае речь идет о том, что вы заполнили форму с данными, нажали кнопочку «Отправить», данные отправились на сайт и вам вернулся некий результат. Если данные введены корректно, то проблем не возникнет. Если данные введены некорректно, то отобразится ошибка.
Когда же речь заходит о валидации ДО, то существует три вида:
1. Посимвольная валидация. В данном случае подразумевается, что когда вы вводите данные, результат подобной проверки отображается сразу (после каждого нажатия какой-либо клавиши или иного действия).
2. Валидация при переходе к другому полю или части сайта (смена фокуса). В данном случае подразумевается, что проверка корректности значений происходит в тот момент, когда вы начинаете вводить данные в другое поле, щелкаете мышкой где-то в ином месте сайта и т.п. Т.е. результат валидации не виден во время ввода данных.
3. Перед отправкой формы к сайту. В данном случае подразумевается, что данные проверяются в тот момент, когда вы нажимаете кнопку «Отправить» (или некую подобную), при этом сами данные не отправляются сразу, а проходят проверку. Результатом же становится либо выделение полей с некорректными значениями (отображение ошибок и т.п.) и в таком случае данные не отправляются к сайту, либо отправка формы с данными к сайту. Такой подход может применяться в тех случаях, когда данные нужно проверять в совокупности, ну или проверка может занимать время.
Стоит отметить, что лучше всего использовать валидацию как ДО, так и ПОСЛЕ. Дело в том, что валидация ДО позволяет пользователю сразу заполнять корректные данные, еще до их отправки. А валидация ПОСЛЕ позволяет исключить те ситуации, когда у пользователя по каким-то причинам не была произведена проверка данных перед отправкой (в жизни всякое бывает).
Как вы могли узнать из этого обзора, валидация это крайне полезное действие и им не стоит пренебрегать.
Понравилась заметка? Тогда время подписываться в социальных сетях и делать репосты!
Источник: ida-freewares.ru
Что такое валидация — простыми словами и на примерах
Каждый владелец интернет-ресурса рано или поздно открывает для себя валидацию HTML кода.
Валидация – это проверка его соответствия общепринятым правилам и нормах. Вокруг понятия постоянно бушуют страсти: программисты и верстальщики спорят о том, нужна она или нет, помогает ли быстрее выходить в топ, но большинство из них склоняется к тому, что нужно прислушиваться к мнению гуру. То есть, тех, кто разрабатывает поисковики и алгоритмы ранжирования.
Валидация: разбираемся с понятием
Понятие валидации существует в нескольких науках, поэтому человеку недавно решившему посвятить себя созданию сайтов, с ним сложно разобраться. Например, в информатике существует термин «валидация программной системы», описывающий процесс соответствия программы предъявляемым к ней требованиям.
В программировании валидацией называют процедуру, позволяющую убедиться в том, что определенный метод будет последовательно давать результаты, отвечающие предварительно выбранным критериям. Простыми словами, валидация для владельца ресурса – это проверка веб-страницы на соответствие стандартам и, соответственно, выявление в ней ошибок. О том, что такое веб-страница, читайте здесь.
Сами стандарты называются спецификацией. Над их созданием трудится W3 Консорциум вместе с разработчиками браузеров. Логично, что сайт, который прошел проверку успешно, называется валидным.
Быть или не быть
Как уже было сказано, чтобы ответить на этот вопрос, достаточно найти мнения специалистов. В одном из интервью тему освещал Николас Закас, сотрудник Yahoo и, по совместительству, автор книги о JavaScript для разработчиков-профессионалов. К слову, я уже описывал лучшие способы изучения этого языка для новичков.
По его словам, основной аргумент в пользу валидности – это кроссбраузерность. Один и тот же сайт при наличии ошибок может отображаться по-разному в разных браузерах (обязательно прочтите о том, что делают и как работают браузеры).
Иными словами, вы можете тратить уйму времени на подбор интересного контента, уникальных картинок, а люди будут уходить. Просто потому, что в их любимом браузере ваш сайт отображается неправильно, некрасиво, там что-то не работает, визуально не отображается или отображается не так.
Есть у валидности и другие преимущества:
- Стабильность. Сам по себе HTML-код характеризуется простой структурой, тем не менее в процессе увеличения объема документа в нем легко запутаться. И даже если в данный момент браузеры правильно отображают сайт с ошибкой, то в будущем, когда пройдут обновления, гарантии в качестве никто не даст.
- Тенденции. Во-первых, новые версии браузеров стараются обращать особое внимание на спецификации и отображать интернет-ресурсы с минимальными ошибками либо вообще без них. Во-вторых, XML никто не отменял. Этот язык используется для хранения и обмена данных. Он является следующей ступенью после HTML и ошибок не прощает. Хотите его освоить? Учитесь писать код правильно.
- Компактность, читабельность. Эти выгоды вы оцените при достижении определенной критической массы. Тогда для вас уменьшится объем кода, а для ваших читателей – скорость загрузки страницы.
В то же время валидный, но не интересный сайт не означает, что его полюбят пользователи и поисковики, и на это нужно также обращать внимание.
Как проверять
Существуют специальные сервисы и программы, html Валидаторы, которые способны оценить качество исходного кода и выявить в нем ошибки. Они немного отличаются друг от друга (устанавливаются под любой браузер или позволяют запустить проверку онлайн), но работают по одному и тому же принципу.
Свой действующий сайт вы можете прямо сейчас проверить на валидность на: validator.w3.org . Достаточно ввести его адрес в адресную строку и дождаться ответа системы.
Преимущества этого и других онлайн-сервисов в том, что они постоянно отслеживают новшества и совершенствуют свои алгоритмы, эффективнее проверяя ресурсы на предмет наличия ошибок. К слову, Яндекс и Гугл также регулярно проверяют валидацию кода и в случае выявления неточностей об этом сообщают.
Что делать потом
Опытные верстальщики советуют при обнаружении ляпов и ошибок:
- устранять грубые;
- оставлять незначительные, если они улучшают, а не ухудшают работу сайта.
В конце концов, невалидный сайт:
- будет работать быстрее и удобнее, если в нем найдется место атрибутам для Javascript/AJAX;
- станет сео-оптимизированным при наличии разметки ARIA.
К слову, есть сервис, схема RELAX NG, в котором предусмотрена функция проверки ARIA в документах html.
Типы ошибок
Условно все ошибки кода делятся на:
- ляпы в файлах шаблона – их проще всего искать и исправлять;
- в сторонних скриптах, которые отображаются на сайте – виджеты ВКонтакте, видео с YouTube (о том, как быстро вставить его на главную страницу я писал здесь) – исправить их самостоятельно вы не сможете за неимением доступа к ним;
- правила, которые валидатор не понимает – ситуации, когда в шаблоне вы ориентировались на CSS-правила 3, а программа сравнивает их с правилами версии 2.1;
- которые машина посчитает ляпами, хоть они таковыми и не нуждаются (noindex, хаки).
Бывает также, что сервис не замечает закрывающихся тегов и сообщает о наличии проблемы там, где ее нет.
Вывод
Валидация – это хорошо. К мнению специалистов и разработчиков спецификаций нужно прислушиваться, да и себя полезно время от времени проверять. Но валидация ради валидации – это глупо. Устранив все ошибки на сайте, вы сможете гордиться своим мастерством, но так и не вывести ресурс в топ в поисковой выдаче (все об этом термине я описал здесь). Просто потому, что валидный сайт – это не главное.
Да и главные страницы Яндекс, Мейл.ру, топовых ресурсов, по результатам проверок сервисов, также имеют ошибки, но это не мешает им оставаться читаемыми, востребованными, наконец, первыми.
Ну и самое важное, нужно развиваться. Хотите преуспеть в программировании? Обратите внимание на бесплатный курс от GeekBrains .
Он представляет собой набор простых пошаговых видеоуроков, благодаря которым совсем скоро вы сможете написать свою первую программу. Все участники могут отслеживать прогресс, общаться в группе. По окончанию курса они получают сертификат. Проводят обучение опытные программисты, помощью которых уже воспользовались более 917 тыс. человек. Торопитесь присоединиться к ним и вы!
А также подписывайтесь на обновления блога и вступайте в группу ВКонтакте , чтобы еще больше узнать о секретах продвижения интернет-сайтов.
Источник: start-luck.ru
Home
В комментариях к заметке «Можно ли делить на 0,01 ?» я обещал написать отдельный пост, посвященный валидации данных, которые приложения получают извне — от пользователя, от других программ, из файлов и т.д. Кроме того, не так давно эта тема вновь ненадолго возникла в обсуждении заметки «Проверка экранных форм». Так что, видимо, пришло время обсудить этот вопрос в деталях.
Мы рассмотрим три вопроса — 1) зачем вообще нужна валидация данных, и 2) где и когда может выполняться валидация данных, 3) какие бывают разновидности проверок.
Зачем нужна валидация данных?
Казалось бы, «невалидные» данные, не удовлетворяющие определённым ограничениям, могут вызвать сбой в работе программы. Но что это означает? Предположим, в каком-то месте программы возникает исключение при попытке преобразовать строку в число, если строка имеет некорректный формат.
Разумеется, если исключение не будет нигде перехвачено, это может привести к аварийному завершению программы. Но это маловероятный сценарий развития событий. Скорее всего в каком-то месте сработает перехватчик, который либо выдаст пользователю какое-то сообщение об ошибке в программе, либо сделает запись в журнал ошибок, после чего программа постарается восстановиться от сбоя и продолжить работу. То есть даже если валидацию не выполнять, вполне вероятно, что ничего страшного не случится.
Но определённые негативные последствия у отсутствия валидации всё таки могут быть, давайте чуть подробнее рассмотрим, какие проблемы при этом могут возникнуть.
- Невозможность восстановиться после сбоя. Не всегда программа способна «вернуть всё назад». Возможно, в процессе работы программа выполнила какие-то необратимые действия — удалила файл, отправила данные по сети, напечатала что-то на принтер, запустила резец станка и он частично произвёл обработку заготовки детали. Но даже если восстановление в принципе возможно, алгоритм восстановления может тоже содержать ошибки, и это иногда приводит к совсем печальным последствиям.
- Дополнительная нагрузка на систему. Восстановление после сбоя — это лишняя работа. Вся работа, которая была выполнена до момента сбоя — тоже лишняя. А это означает дополнительную нагрузку на систему, которой можно избежать, если заранее проверить данные. С другой стороны, валидация — это тоже дополнительная нагрузка, причём восстановление приходится делать лишь изредка, а проверку надо выполнять каждый раз, так что ещё неизвестно, что выгоднее.
- Инъекции не вызывают сбоев. Один из основных способов эксплуатации уязвимостей в программах заключается в том, чтобы «обмануть» валидаторы, то есть передать данные, которые валидатор признаёт корректными, но при этом они интерпретируются непредусмотренным образом, так что злоумышленник может получить несанкционированный доступ к данным или некоторым возможностям программы, либо способен разрушить данные или программу. Если валидации нет вообще, задача злоумышленника максимально упрощается.
- Сложность идентификации причины проблемы. Если исключение вылетело откуда-то из глубины программы, определить причины его возникновения не так-то просто. И даже если это возможно, может оказаться нелегко объяснить пользователю, что сбой вызван данными, которые он ввёл некоторое время назад в каком-то совершенно другом месте программы. А если проверка выполнена немедленно после ввода данных, никаких сложностей с идентификацией источника проблемы не возникает.
Короче говоря, отсутствие валидации может приводить к вышеописанным (а может быть и ещё каким-то другим) проблемам. Соответственно, наличие валидации позволяет предотвратить серьёзные сбои, упрощает идентификацию проблем, но за это приходится расплачиваться производительностью, поскольку дополнительные проверки увеличивают нагрузку на систему. И тут мы переходим ко второму вопросу — как уменьшить эту дополнительную нагрузку.
Где и когда выполнять валидацию данных?
Как уже было сказано выше, с точки зрения уменьшения нагрузки лучше всего вообще не выполнять валидацию данных.
Но если всё-таки проверка нужна, логика подсказывает, что удобно проверять данные в том месте, где они попадают в программу из внешнего мира. После такой проверки можно быть уверенным, что в программу попадают правильные данные и в дальнейшем они могут использоваться без дополнительных проверок.
Это может быть пользовательский интерфейс, через который человек вводит данные. Это может быть файл, содержащий настройки программы или данные, которые программа должна обработать. Это может быть база данных, в которую информация может попадать из других программ. Это может быть сетевой протокол обмена данными с другими программами. Наконец, это может быть программный интерфейс, который использует другая программа, вызывая некоторые функции/процедуры и передавая в них параметры.
Увы, здравый смысл иногда вынужден отступить перед натиском действительности. «Фейс-контроль» данных на входе иногда не просто нецелесообразен, но вообще невозможен. Ниже приведены некоторые причины этого.
-
Для валидации требуется доступ к недоступной части состояния системы. Это особенно характерно для проверки данных, вводимых человеком через графический интерфейс пользователя. Современные приложения часто построены с использованием многоуровневой архитектуры, которая предполагает, что реализация пользовательского интерфейса выделена в презентационный слой, а для проверки требуется доступ к другим слоям, вплоть до слоя базы данных.
Как выполнять валидацию данных?
Впрочем, где бы ни выполнялась валидация, можно это делать несколькими различными способами, в зависимости от того, какие ограничения накладываются на данные.
- Посимвольная проверка. Как правило такие проверки выполняются в пользовательском интерфейсе, по мере ввода данных. Но не только. Например, лексический анализатор компилятора тоже выявляет недопустимые символы непосредственно в процессе чтения компилируемого файла. Поэтому такие проверки можно условно назвать «лексическими».
- Проверка отдельных значений. Для пользовательского интерфейса это проверка значения в отдельном поле, причём выполняться она может как по мере ввода (проверяется то неполное значение, которое введено к настоящему моменту), так и после завершения ввода, когда поле теряет фокус. Для программного интерфейса (API) это проверка одного из параметров, переданных в вызываемую процедуру. Для данных, получаемых из файла, это проверка какого-то прочитанного фрагмента файла. Такие проверки, опять-таки по аналогии с компиляторной терминологией, можно назвать «синтаксическими».
- Совокупность входных значений. Можно предположить, что в программу сначала передаются какие-то данные, после чего подаётся некоторый сигнал, который инициирует их обработку. Например, пользователь ввёл данные в форму или в несколько форм (в так называемом «визарде») и наконец нажал кнопку «OK». В этот момент можно выполнить так называемые «семантические» проверки, нацеленные на валидацию не только отдельных значений, но и взаимосвязей между ними, взаимных ограничений.
Транзакция — это последовательность действий, которые либо все завершаются успешно, либо происходит какой-то сбой при выполнении отдельного действия, и тогда отменяются результаты всех предыдущих действий этой цепочки. Так вот, валидацию можно выполнять в процессе выполнения транзакции, а последняя проверка может быть выполнена в самом конце транзакции по обработке данных. При этом мы валидируем уже не сами данные, а то состояние, которое получилось после их полной обработки, и если это состояние не удовлетворяет каким-то ограничениям, тогда мы признаём входные данные невалидными и возвращаем всё к исходному состоянию.
Какой способ валидации следует применять на практике в том или ином случае? Чаще всего одним способом ограничиться не удаётся, да и не нужно. Валидацию данных можно и нужно выполнять в несколько этапов, усложняя проверки.
Сначала, по мере ввода, следим за тем, чтобы данные не содержали недопустимых символов. Например, для числового поля пользователю может быть запрещён ввод нецифровых символов.
После того, как ввод завершён, можно проверить всё значение целиком. Для введённого числа могут быть какие-то ограничения, например, оно не должно превышать определённого максимального допустимого значения. Если наше числовое поле представляет собой возраст, оно должно находиться в пределах от 0 до, скажем, 120.
Когда заполнены все поля, можно проверить, согласованы ли введённые значения друг с другом. Например, если в форме кроме поля для указания возраста есть поле для ввода номера паспорта, приложение может проверить, что при заполнении номера паспорта возраст должен быть не менее 14 лет.
Наконец, если всё введено корректно, можно попытаться начать обработку, выполняя проверки по ходу дела, а также в самом конце, и если что-то пошло не так, выполнить откат к исходному состоянию.
Ну и, конечно же, проверки на следующем уровне могут подстраховывать проверки предыдущих уровней. Скажем, для веб-приложений обязательной является проверка данных, пришедших на сервер в HTTP-запросе, независимо от того, выполнялась ли перед этим предварительная валидация в браузере или нет. Причина этого в том, что проверку на клиентской стороне можно обойти. Для других видов приложений обойти проверки не так просто, но иногда тоже вполне возможно, как показано в примере чуть ниже.
Тестирование валидаторов
Завершим статью демонстрацией различных видов валидаторов, а также некоторыми рекомендациями относительно того, как при тестировании проверять правильность их работы.
Начнём с посимвольной проверки. Графический редактор Paint, диалог изменения размеров рисунка, ширина рисунка. В это поле допускается вводить только цифры, при попытке ввести другие символы выдаётся сообщение об ошибке:
Однако, проявив смекалку, можно обойти эту валидацию вводимых символов: через буфер обмена удаётся вставить в это поле отрицательное число, несмотря на то, что минус является недопустимым символом:
Впрочем, это не приводит к негативным последствиям, потому что на следующем уровне стоит ещё одна проверка, которая срабатывает при нажатии кнопки OK:
Есть и другие ограничения для этого поля, которые тоже проверяются после нажатия кнопки OK:
А вот находящееся совсем рядом в том же диалоге поле для ввода наклона рисунка не содержит валидации символов, несмотря на то, что это тоже числовое поле. Более того, при вводе недопустимых символов после нажатия OK можно увидеть вот такое странное сообщение, практически не поддающееся расшифровке:
Все вышеописанные примеры связаны с проверкой отдельно взятого поля. Пример валидации комбинации полей можно найти в том же приложении, но в другом месте — в диалоге настройки параметров страницы для печати. Если указать размеры полей страницы так, чтобы в сумме они превосходили ширину страницы, получим вот такое сообщение:
Ну и, наконец, в заметке «Почему не хватает памяти, чтобы уменьшить размеры рисунка?» описана ошибка, связанная с тем, что в этом графическом редакторе отсутствует корректная обработка сбоев и откат транзакции при слишком сильном увеличении размера рисунка.
Тестировщику необходимо все эти ситуации отрабатывать. Во-первых, нужно проверять валидацию на всех уровнях. Во-вторых, нужно проверять согласованность валидаторов на разных уровнях. В-третьих, надо искать пути обхода валидаторов, пытаясь добраться до следующего уровня без предварительных проверок.
Большая часть этой статьи посвящена не способам тестирования валидаторов, а описанию их устройства. Почему? Потому что врага надо знать в лицо. Чтобы найти дефект валидации данных, надо понимать, где искать и на что обращать внимание.
Обсудить в форуме
Источник: www.software-testing.ru