Что такое валидация и верификация: Разница между верификацией и валидацией / Хабр

Разница между верификацией и валидацией / Хабр

alyonachern

Тестирование IT-систем *Терминология IT Тестирование веб-сервисов *

Из песочницы

Перевод

Автор оригинала: Thomas Hamilton

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

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

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

Ключевая разница:

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

  •  Верификация не требует исполнения кода, в то время как валидация требует.

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

  • Верификация проверяет, соответствует ли ПО спецификации, в то время как валидация проверяет, соответствует ли ПО требованиям и ожиданиям.

  • Верификация находит баги на раннем этапе цикла разработки, в то время как валидация находит баги, которые верификация не может.

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

  • Верификация выполняется командой QA, в то время как валидация выполняется командой тестирования с командой QA.

  •  Сравнивая тестирование верификации и валидации, процесс верификации предшествует процессу валидации, в то время как процесс валидации идет после процесса верификации.

Вот основное различие между тестированием верификации и валидации:

Верификация

Валидация

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

Это динамический механизм тестирования и валидации фактического продукта

Не связано с выполнением кода

Всегда связано с выполнением кода

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

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

Проверяется соответствие программного обеспечения спецификации

Проверяется, соответствует ли программное обеспечение требованиям и ожиданиям заказчика

Обнаруживает баги на ранних стадиях цикла разработки

Может обнаружить баги, которые не может обнаружить верификация

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

Цель — это реальный продукт

Команда контроля качества проводит проверку и убеждается, что программное обеспечение соответствует требованиям и спецификации

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

Идет перед валидацией

Идет после верификации

Примеры верификации и валидации.

А теперь давайте рассмотрим пример, объясняющий планирование проверки и валидации:

В области разработки ПО рассмотрите следующую спецификацию для теста на верификацию и теста на валидацию:

Кликабельная кнопка с именем Submet

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

В противном случае команда разработчиков создаст подобную кнопку:

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

Таким образом, теперь новая спецификация:

Кликабельная кнопка с именем Submit (Отправить)

Как только код готов, выполняется валидация. Тест на валидацию обнаружил:

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

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

Теги:

  • валидация
  • верификация
  • тестирование

Хабы:

  • Тестирование IT-систем
  • Терминология IT
  • Тестирование веб-сервисов

Всего голосов 11: ↑9 и ↓2 +7

Просмотры

17K

Комментарии 10

Алена Чернякова @alyonachern

QA engineer

Комментарии Комментарии 10

Верификация и валидация — Школа седого тестировщика

Наверняка многие из нас сталкивались с такими словами, как верификация и валидация, в некотором техническом контексте.

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

Итак, что же это за слова такие?

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

Валидация — доказанное объективными результатами исследования подтверждение того, что требования для ожидаемого конкретного использования приложения были выполнены (Глоссарий ISTQB)

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

Поиск разницы

Как мы выяснили из определения, верификация связана с подтверждением неких требований. Если мы возьмём любой технологический процесс от пошива штор и сборки офисного кресла до написания ПО, то заметим, что на предметы нашего процесса всегда есть техническое задание. В нём написано, какой высоты должно быть кресло, какого цвета и из какого материала. И если мы верифицируем кресло, то мы проверим его высоту, цвет и соответствует ли материал заявленному, т.е. наличие всех необходимых компонентов из ТЗ. Аналогично и для ПО.

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

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

Другими словами, верификация — это подтверждение того, что техническое задание было выполнено верно и в полном объеме. А валидация — проверка того, что итоговый продукт функционирует так, как от него и ожидалось. Может случиться так, что ТЗ выполнено верно, но итоговый продукт работает совсем иначе, чем от него ожидалось. Поэтому валидация является более показательным и всеобъемлющим понятием, чем верификация.

На примере из тестирования ПО

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

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

В игру вводят новую фичу “Ежедневный бонус”.

Макет(то, что мы видим в билде)

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

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

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

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

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

(сайт)(макет)

Приступим к верификации. Проверим соответствие ТЗ, макету, посмотрим вёрстку и т.д.

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

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

Итог

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