Верификация и валидация - в чем разница?

Мы живем в мире, где нас окружают множество предметов. Качественных и не очень, красивых,
удобных, безопасных и не только. Все окружающие предметы проходят свой цикл жизни.
На стадии “создания” предметы производятся на основании требований - это могут быть
инструкции, нормы, планы, технологии, ГОСТы и даже просто образ, который возникает у его
создателя.
Процесс подтверждения, что предмет, программа, система отвечает определенным требованиям и называется верификацией. Её основная цель - ответ на вопрос: "Мы правильно строим продукт".

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

Итак, мы уже узнаем, что если машина произведена в соответствии со всеми предъявляемыми требованиями, то процесс верификации пройден успешно!

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

Каждый из нас выбирает именно то, что ему нравится. Если желаемая машина будет отвечать нашим стремлениям и требованиям, мы ее обязательно купим! Это и является валидацией.
Валидация программного обеспечения - это процесс подтверждения того, что программа отвечает пользовательским требованиям и ожиданиям. Основной вопрос, на который она отвечает - это: “ Мы строим правильный продукт?” И тут еще раз хочется отметить, что “правильный” - с точки зрения пользователя.
Характерной особенностью валидации является запуск кода. И когда специалист по тестированию пишет “Провалидировано на проде” это значит что разработанная функция может быть использована пользователями, а не просто отвечает требованиям заказчика и техническими возможностями.
Тестировщик является первым и самым требовательным пользователем в процессе разработки программного обеспечения. Не забывайте об этом - и делайте мир информационных технологий лучше!