Это очень сильно зависит от того, как вы определяете валидацию. Подумайте об этом: вы что-то покупаете и вводите номер своей кредитной карты. Если контрольная цифра не совпадает, вы не прошли проверку. Ни одна транзакция не была предпринята. Однако, если это действительный номер кредитной карты, но он не соответствует вашему почтовому индексу (требуется взаимодействие с БД / третьей стороной), то это ошибка платежа.
Теперь подумайте: вы вводите свой адрес и вводите Mastiffica в качестве своей страны. Почему система даже позволяла вам вводить это - они должны были ограничить интерфейс только действительными записями (БД не требуется после записи).
Или введите «пятьдесят» в поле суммы на экране вашего банковского платежа. Почему это позволяет письма там - это не проходит проверку (нет необходимости в БД). Но затем вы вводите 50 в поле суммы, и оказывается, что на вашем счету нет пятидесяти фунтов. Это ошибка валидации? Или это неудачная транзакция?
Теперь предположим, что вы прошли все основные проверки записей (контрольная сумма кредитной карты, страна, цифры, почтовый индекс), и транзакция не удалась, поскольку срок действия вашей кредитной карты истек. Это ошибка проверки или неудачная транзакция?
Вы можете рассматривать валидацию как основную гарантию того, что пользователи не будут вводить полностью произвольные данные, или вы можете думать о валидации как «Я могу завершить эту транзакцию с данными, которые мне были предоставлены». Я лично предпочел бы первое, но опять же, это вопрос определения.
Кроме того, существует аспект проверки первой строки в качестве меры безопасности - подстановочные данные, принятые после верхнего уровня пользовательского интерфейса, могут представлять угрозу безопасности (внедрение SQL, например)