Валидация и верификация требований к системе
Очень часто путают два понятия валидация и верификация. Кроме того, часто путают валидацию требований к системе с валидацией самой системы. Я предлагаю разобраться в этом вопросе.
В статье «Моделирование объекта как целого и как композиции» я рассмотрел два подхода к моделированию объекта: как целого и как конструкции. В текущей статье нам это деление понадобится.
Пусть у нас есть проектируемый функциональный объект. Пусть этот объект рассматривается нами как часть конструкции другого функционального Объекта. Пусть есть описание конструкции Объекта, такое, что в нем присутствует описание объекта. В таком описании объект имеет описание как целого, то есть, описаны его интерфейсы взаимодействия с другими объектами в рамках конструкции Объекта. Пусть дано описание объекта как конструкции. Пусть есть информационный объект, содержащий требования к оформлению описания объекта как конструкции. Пусть есть свод знаний, который содержит правила вывода, на основании которых из описания объекта как целого получается описание объекта как конструкции. Свод знаний – это то, чему учат конструкторов в институтах – много, очень много знаний. Они позволяют на основе знанию об объекте спроектировать его конструкцию.
Итак, можно начинать. Мы можем утверждать, что если правильно описан объект как целое, если свод знаний верен, и если правила вывода были соблюдены, то полученное описание конструкции объекта, будет верным. То есть, на основе этого описания будет построен функциональный объект, соответствующий реальным условиям эксплуатации. Какие могут возникнуть риски:
1. Использование неправильных знаний об Объекте. Модель Объекта в головах у людей может не соответствовать реальности. Не знали реальной опасности землетрясений, например. Соответственно, могут быть неправильно сформулированы требования к объекту.
2. Неполная запись знаний об Объекте – что-то пропущено, сделаны ошибки. Например, знали о ветрах, но забыли упомянуть. Это может привести к недостаточно полному описанию требований к объекту.
3. Неверный свод знаний. Нас учили приоритету массы над остальными параметрами, а оказалось, что надо было наращивать скорость.
4. Неправильное применение правил вывода к описанию объекта. Логические ошибки, что-то пропущено в требованиях к конструкции объекта, нарушена трассировка требований.
5. Неполная запись полученных выводов о конструкции системы. Все учли, все рассчитали, но забыли написать.
6. Созданная система не соответствует описанию.
Понятно, что все артефакты проекта появляются, как правило, в завершенном своем виде только к концу проекта и то не всегда. Но, если предположить, что разработка водопадная, то риски такие, как я описал. Проверка каждого риска – это определенная операция, которой можно дать название. Если кому интересно, можно попытаться придумать и озвучить эти термины.
Что такое верификация? По-русски, верификация – это проверка на соответствие правилам. Правила оформляются в виде документа. То есть, должен быть документ с требованиями к документации. Если документация соответствует требованиям этого документа, то она прошла верификацию.
Что есть валидация? По-русски валидация – это проверка правильности выводов. То есть, должен быть свод знаний, в котором описано, как получить описание конструкции на основе данных об объекте. Проверка правильности применения этих выводов – есть валидация. Валидация — это в том числе проверка описания на непротиворечивость, полноту и понятность.
Часто валидацию требований путают с валидацией продукта, построенного на основе этих требований. Так делать не стоит.
- анализ требований
- валидация
- верификация
Разница между верификацией и валидацией
Верификация в тестировании ПО – процесс просмотра документации, дизайна, кода и программы для того, чтобы проверить, было ли программное обеспечение создано в соответствии с требованиями или нет. Основная цель процесса верификации – обеспечить качество приложения, дизайна, архитектуры и т.д. Процесс верификации включает в себя такие действия, как ревью, пошаговое руководство и инспекция.
Валидация в разработке ПО – динамический механизм тестирования и проверки того, действительно ли программный продукт соответствует точным потребностям заказчика или нет. Этот процесс помогает гарантировать, что ПО выполняет желаемое использование в подходящей среде. Процесс валидации включает в себя такие действия, как модульное тестирование, интеграционное тестирование, системное тестирование и пользовательское приемочное тестирование.
- Процесс верификации включает в себя проверку документации, дизайна, кода и программы, в то время как процесс валидации включает в себя тестирование и проверку самого продукта.
- Верификация не требует исполнения кода, в то время как валидация требует.
- Верификация использует такие методы, как ревью, пошаговое руководство, инспекцию и отладку, в то время как валидация использует такие методы, как тестирование чёрного ящика, белого ящика и нефункциональное тестирование.
- Верификация проверяет, соответствует ли ПО спецификации, в то время как валидация проверяет, соответствует ли ПО требованиям и ожиданиям.
- Верификация находит баги на раннем этапе цикла разработки, в то время как валидация находит баги, которые верификация не может.
- Сравнивая валидацию и верификацию в тестировании ПО, процесс верификации нацелен на архитектуру ПО, дизайн, базу данных и др., в то время как процесс валидации нацелен на реальный программный продукт.
- Верификация выполняется командой QA, в то время как валидация выполняется командой тестирования с командой QA.
- Сравнивая тестирование верификации и валидации, процесс верификации предшествует процессу валидации, в то время как процесс валидации идет после процесса верификации.
Вот основное различие между тестированием верификации и валидации:
Верификация
Валидация
Процесс верификации включает в себя проверку документов, дизайна, кода и программы
Это динамический механизм тестирования и валидации фактического продукта
Не связано с выполнением кода
Всегда связано с выполнением кода
Верификация использует такие методы, как ревью, пошаговые руководства, инспекции, отладку и т.д.
Используются такие методы, как тестирование черного ящика, тестирование белого ящика и нефункциональное тестирование
Проверяется соответствие программного обеспечения спецификации
Проверяется, соответствует ли программное обеспечение требованиям и ожиданиям заказчика
Обнаруживает баги на ранних стадиях цикла разработки
Может обнаружить баги, которые не может обнаружить верификация
Цель — архитектура приложений и программного обеспечения, спецификация, полный дизайн, высокий уровень, дизайн базы данных и т.д.
Цель — это реальный продукт
Команда контроля качества проводит проверку и убеждается, что программное обеспечение соответствует требованиям и спецификации
Валидация программного кода выполняется с привлечением команды тестирования
Идет перед валидацией
Идет после верификации
Примеры верификации и валидации.
А теперь давайте рассмотрим пример, объясняющий планирование проверки и валидации:
В области разработки ПО рассмотрите следующую спецификацию для теста на верификацию и теста на валидацию:
Кликабельная кнопка с именем Submet
Верификация включала бы проверку документа о дизайне и исправление орфографической ошибки.
В противном случае команда разработчиков создаст подобную кнопку:
Таким образом, теперь новая спецификация:
Кликабельная кнопка с именем Submit (Отправить)
Как только код готов, выполняется валидация. Тест на валидацию обнаружил:
Благодаря тесту на валидацию команда разработчиков сделает кнопку кликабельной.
Что такое верификация и валидация в тестировании ПО
Узнайте о верификации и валидации в тестировании ПО, их отличиях и примерах для обеспечения качества продукта!
Алексей Кодов
Автор статьи
23 июня 2023 в 17:34
Верификация и валидация являются двумя ключевыми понятиями в области тестирования программного обеспечения. Они оба направлены на обеспечение качества продукта, но с разными целями и методами. В этой статье мы разберемся, что такое верификация и валидация, их основные отличия и примеры.
Верификация
Верификация – это процесс проверки, что продукт соответствует определенным требованиям и спецификациям на каждом этапе разработки. Верификация фокусируется на «Делаем ли мы продукт правильно?«. Она включает в себя следующие действия:
- Анализ требований
- Использование статических методов анализа кода
- Контроль проекта и процессов разработки
- Проведение код-ревью
Пример верификации:
Проверка того, что требования к программному обеспечению ясны, полны и не противоречивы.
Валидация
Валидация – это процесс проверки, что продукт соответствует ожиданиям и потребностям пользователей. Валидация фокусируется на «Делаем ли мы правильный продукт?«. Она включает в себя следующие действия:
- Тестирование функциональности
- Тестирование производительности
- Тестирование безопасности
- Тестирование совместимости
- Проведение пользовательского приема
Пример валидации:
Проверка того, что пользовательский интерфейс программного обеспечения удобен и соответствует ожиданиям пользователей.
Инженер-тестировщик: новая работа через 9 месяцев
Получится, даже если у вас нет опыта в IT
Основные отличия между верификацией и валидацией
- Цель: Верификация проверяет, что продукт соответствует требованиям и спецификациям, в то время как валидация проверяет, что продукт соответствует ожиданиям и потребностям пользователей.
- Этапы разработки: Верификация проводится на каждом этапе разработки, в то время как валидация проводится после завершения разработки.
- Методы: Верификация включает статические методы анализа (без исполнения кода), в то время как валидация включает динамические методы тестирования (с исполнением кода).
В заключение, верификация и валидация являются важными компонентами процесса обеспечения качества программного обеспечения. Они взаимодополняют друг друга и помогают создать надежный и качественный продукт, соответствующий требованиям и ожиданиям пользователей.
При подготовке материала использовались источники:
https://habr.com/ru/articles/244337/
https://habr.com/ru/articles/691048/