# Верификация и валидация (Verification and Validation)

*Верификация (verification): Доказанное объективными результатами исследования подтверждение того, что определенные требования были выполнены. (ISO 9000)*

*Валидация (validation): Доказанное объективными результатами исследования подтверждение того, что требования для ожидаемого конкретного использования приложения были выполнены. (ISO 9000)*

*Верификация - это подтверждение путем представления объективных доказательств выполнения данным рабочим элементом установленных требований. (ГОСТ 56920)*

*Валидация демонстрирует, что рабочий элемент может использоваться пользователями для решения определенных ими задач. (ГОСТ 56920)*

Верификация - это проверки, выполняемые в процессе разработки ПО для ответа на вопрос: “правильно ли мы разрабатываем продукт?”. Это в т.ч. включает проверку документации: requirements specification, design documents, database table design, ER diagrams, test cases, traceability matrix и т.д. Верификация гарантирует, что ПО разрабатывается в соответствии со стандартами и процессами организации, полагаясь на [reviews](https://www.softwaretestinghelp.com/test-documentation-reviews/) и статические методы тестирования (т.е. без запуска ПО, но, например, с unit/integration tests). Верификация является превентивным подходом (Preventative approach).

| **Этап верификации**                      | **Действующие лица**                              | **Описание**                                                                                                                                                                  | **На выходе**                                                                                                               |
| ----------------------------------------- | ------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| Review бизнес / функциональных требований | Команда разработки / клиент для бизнес-требований | Это необходимый шаг не только для того, чтобы убедиться, что требования собраны и / или корректны, но и для того, чтобы убедиться, выполнимы ли они                           | Завершенные требования, которые готовы к использованию на следующем этапе - дизайне                                         |
| Review дизайна                            | Команда разработки                                | После создания дизайна команда разработчиков тщательно его просматривает, чтобы убедиться, что функциональные требования могут быть выполнены с помощью предложенного дизайна | Дизайн готов к имплементации                                                                                                |
| Прохождение кода (Code Walkthrough)       | Отдельный разработчик                             | Написанный код проверяется на наличие синтаксических ошибок. Это более обыденно и выполняется индивидуальным разработчиком на основе кода, разработанного им самим            | Код готов к unit testing                                                                                                    |
| Проверка кода (Code Inspection)           | Команда разработки                                | Это уже более формально. Специалисты в данной области и разработчики проверяют код, чтобы убедиться, что он соответствует бизнес-целям и функциональным целям                 | Код готов к тестированию                                                                                                    |
| Test Plan Review (внутренней командой QA) | QA команда                                        | План тестирования проходит внутреннюю проверку командой QA, чтобы убедиться в его точности и полноте                                                                          | Test plan готов к передаче внешним командам (Project Management, Business Analysis, development, Environment, client, etc.) |
| Test Plan Review (внешнее)                | Project Manager, Business Analyst, and Developer  | Формальный анализ test plan, чтобы убедиться, что график и другие соображения команды QA соответствуют другим командам и всему проекту                                        | Подписанный или утвержденный test plan, на котором будет основываться деятельность по тестированию                          |
| Test documentation review (Peer review)   | Члены команды QA                                  | Экспертная проверка - это когда члены команды проверяют работу друг друга, чтобы убедиться, что в самой документации нет ошибок.                                              | Документация по тестированию готова к передаче внешним командам                                                             |
| Test documentation final review           | Business Analyst and development team.            | A test documentation review чтобы убедиться, что test cases охватывают все бизнес-условия и функциональные элементы системы                                                   | Тестовая документация готова к выполнению                                                                                   |

Валидация - это процесс оценки конечного продукта, чтобы проверить, соответствует ли он потребностям бизнеса и ожиданиям клиентов, т.е. отвечает на вопрос: “правильный ли мы разработали продукт?”. Валидация является динамическим тестированием, т.е. происходит с помощью выполнения кода и прогона тестов на нём (UAT/CAT, usability, всё что угодно). Валидация является реактивным подходом (Reactive approach).

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

Источник: [Exact Difference Between Verification And Validation With Examples](https://www.softwaretestinghelp.com/what-is-verification-and-validation/)

Доп. материал:

* [В. В. Кулямин - Работа на тему “Методы верификации программного обеспечения”](https://www.ispras.ru/publications/methods_of_software_verification.pdf)
* [Форум тестировщиков: Verification & Validation - что это такое?](https://software-testing.ru/forum/index.php?/topic/979-verification-validation-chto-eto-takoe/)
