# Верификация и валидация

{% hint style="warning" %}
Эти два понятия тесно связаны с процессами тестирования и обеспечения качества. **К сожалению, их часто путают**, хотя **отличия** между ними достаточно **существенны.**
{% endhint %}

{% hint style="info" %}
Как контролировать качество системы? Как точно узнать, что программа делает именно то, что нужно, и ничего другого? Как определить, что она достаточно надежна, переносяима, удобна в использовании? Ответы на эти вопросы можно получить с помощью процессов **верификации** и **валидации.**
{% endhint %}

{% tabs %}
{% tab title="Верификация" %}
**Верификация (verification)** — это *Процесс оценки системы* или её компонентов с целью определения удовлетворяют ли результаты текущего этапа разработки условиям, сформированным в начале этого этапа. ***Т.е. выполняются ли наши цели, сроки, задачи по разработке проекта,*** определенные в начале текущей фазы.

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

Отличия на практике:

{% hint style="info" %}
Исполнителя, волнует не только соблюдение всех норм качества (верификация) при реализации продукта, а и **соответствие всех особенностей продукта** желаниям заказчика.
{% endhint %}
{% endtab %}

{% tab title="Валидация" %}
**Валидация (validation)** — это Определение соответствия разрабатываемого ПО ожиданиям и потребностям пользователя, требованиям к системе.

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

{% hint style="info" %}
Заказчика интересует, в большей степени, **валидация** (удовлетворение собственных требований);
{% endhint %}
{% endtab %}
{% endtabs %}

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

<table><thead><tr><th width="72" data-type="number">№</th><th>Верификация</th><th>Валидация</th></tr></thead><tbody><tr><td>1</td><td>Делаем ли мы продукт правильно?</td><td>Делаем ли мы правильный продукт?</td></tr><tr><td>2</td><td>Реализована ли вся функциональность?</td><td>Правильно ли реализована функциональность?</td></tr><tr><td>3</td><td>Производится разработчиками</td><td>Производится тестировщиками</td></tr><tr><td>4</td><td>Включает статический анализ - инспектирование кода, сравнение требований и т.п. </td><td>Включает динамический анализ - выполнение программы для сравнения её реальной работы с установленными требованиями</td></tr><tr><td>5</td><td>Основывается на объективной оценке соответствия реализованных функций</td><td>Субъективный процесс, включающий личную оценку качества ПО</td></tr></tbody></table>

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

**Верификация** - это процесс, направленный на контроль качества программного обеспечения и обнаружение в нем ошибок.

<figure><img src="https://311615875-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFokjXEpQOY1WqTrGUkaQ%2Fuploads%2FOaHifrOpeCfkvxlaqvhx%2Fform.svg?alt=media&#x26;token=2ae7c89e-9cd2-4a59-af03-4b746003831e" alt=""><figcaption></figcaption></figure>

### Какие задачи решает верификация?

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

<br>
