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

Короткие определения

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

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

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

Верификация: соответствует ли спецификации

Деятельность по верификации обычно проводится без запуска программного обеспечения. Вопрос: совпадает ли то что построено с тем что было согласовано?

Как выглядит верификация

Ревью документов

Охватывает ли документ требований все согласованные фичи? Согласован ли дизайн-спек с требованиями? Покрывают ли тест-кейсы все требования?

Code review

Реализует ли код то что описано в дизайн-документе? Соблюдены ли паттерны безопасности из стандартов кодирования?

Инспекция

Совместный просмотр требований, дизайна и реализации: всё согласуется?

Ревью прототипа/вайрфрейма

Соответствует ли UI-вайрфрейм согласованным пользовательским историям?

Цель

Найти дефекты в документах и дизайне до того как программное обеспечение построено или протестировано. Исправить неверное требование на бумаге дешевле чем после трёх спринтов разработки.

Валидация: решает ли реальную проблему

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

Как выглядит валидация

Пользовательское приёмочное тестирование (UAT)

Реальные пользователи или стейкхолдеры тестируют продукт в рамках своих реальных рабочих процессов. Вопрос: «Это делает то что мне нужно?»

Системное тестирование

Тестирование полной интегрированной системы против требований и против пользовательских целей. Вся система реально работает end-to-end для реалистичных сценариев использования?

Бета-тестирование

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

Юзабилити-тестирование

Могут ли пользователи реально достичь своих целей через этот интерфейс? Даже если технически корректен: удобен ли он в использовании?

Цель

Подтвердить что программное обеспечение создаёт реальную ценность. Фича может быть технически правильной и при этом абсолютно бесполезной.

Конкретный пример

Допустим требование:

«Поле поиска должно возвращать результаты в течение 3 секунд.»
Вопрос верификации: соответствует ли реализация этому требованию? Тестируем: запускаем поиск, измеряем время, подтверждаем что меньше 3 секунд. Прошло. Вопрос валидации: решает ли это реальную проблему пользователя? Обнаруживаем: пользователи ищут по огромным каталогам товаров, и 3 секунды воспринимаются как неприемлемо долго когда Google возвращает результаты за 0,3 секунды. Даже несмотря на то что спек говорил 3 секунды и код выполняет это условие, валидация проваливается.

Спецификация была неверной. Верификация ничего не поймала. Валидация поймала всё.

Именно поэтому нельзя полагаться только на верификацию: спецификация настолько хороша, насколько хороши люди которые её писали.

Ещё один пример: валидация формы

Требование: «Поле пароля не должно принимать менее 8 символов.»

Верификация: тестируем что пароль из 7 символов отклоняется. Отклоняется. Валидация: реальный пользователь пытается использовать свой обычный 6-символьный пароль, получает отказ, пробует создать новый 8-символьный, но сообщение об ошибке говорит просто «Invalid input» без объяснений. Он сдаётся и не регистрируется. Валидация провалена: продукт не помогает пользователю достичь цели: зарегистрироваться.

Код был правильным. Требование было слишком узким. Оно не учло пользовательский опыт при получении сообщения об ошибке.

Как это выглядит в жизненном цикле разработки

| Фаза | Активность | Верификация или валидация? |

|-------|----------|----------------------------|

| Требования | Ревью требований: проверка полноты и согласованности | Верификация |

| Дизайн | Walkthrough дизайна: проверка соответствия дизайна требованиям | Верификация |

| Разработка | Code review: проверка соответствия кода дизайну | Верификация |

| Тестирование | Юнит-тесты: проверка работы компонентов по спецификации | Верификация |

| Тестирование | Интеграционные тесты: проверка совместной работы модулей | Верификация |

| Тестирование | Системные тесты: проверка полной системы на соответствие требованиям | Оба |

| Тестирование | UAT: проверка что реальные пользователи достигают реальных целей | Валидация |

| Релиз | Бета-тестирование: использование в реальном мире | Валидация |

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

Почему это различие важно

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

Хороший QA ловит и то и другое. Чистое выполнение тестов по спецификации ловит ошибки верификации. Исследовательское тестирование, ревью юзабилити и UAT ловят ошибки валидации.

Версия для интервью

Если это спрашивают на интервью:

Верификация = «Правильно ли мы строим продукт?» Соответствие спецификациям, обычно статическое (ревью, walkthrough-ы) или раннее тестирование против задокументированных требований. Валидация = «Правильный ли продукт мы строим?» Подтверждение что продукт удовлетворяет потребностям пользователей, обычно через запуск программного обеспечения в реалистичных условиях (UAT, бета-тестирование, юзабилити-тестирование).

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

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

→ See also: Тестирование чёрного и белого ящика: чёткое руководство для QA-инженеров | Приёмочное тестирование: что это, кто делает и как | Что такое ручное тестирование: полное руководство для 2026 года