Верификация программного обеспечения — это дисциплина программной инженерии , языков программирования и теории вычислений , целью которой является обеспечение соответствия программного обеспечения ожидаемым требованиям.
Широкое определение верификации связывает ее с тестированием программного обеспечения . В этом случае существуют два основных подхода к верификации:
В системе классификации вычислений ACM темы верификации программного обеспечения отображаются в разделе «Программное обеспечение и его разработка» в разделе «Создание программного обеспечения», тогда как верификация программ также отображается в разделе «Теория вычислений» в разделах «Семантика и рассуждение», «Рассуждение программ».
Динамическая проверка выполняется во время выполнения программного обеспечения и динамически проверяет его поведение; она обычно известна как фаза тестирования . Проверка — это процесс обзора. В зависимости от области применения тестов мы можем разделить их на три семейства:
Целью динамической проверки программного обеспечения является поиск ошибок, вносимых действием (например, наличием медицинского программного обеспечения для анализа биохимических данных) или повторяющимся выполнением одного или нескольких действий (например, стресс-теста для веб-сервера, т. е. проверки того, является ли текущий продукт действия таким же правильным, как и в начале действия).
Статическая верификация — это процесс проверки соответствия программного обеспечения требованиям путем проверки кода перед его запуском. Например:
Проверка анализом - Метод проверки анализом применяется к проверке исследованием, математическими расчетами, логической оценкой и расчетами с использованием классических методов учебников или общепринятых компьютерных методов общего пользования. Анализ включает выборку и сопоставление измеренных данных и наблюдаемых результатов испытаний с рассчитанными ожидаемыми значениями для установления соответствия требованиям.
Если определить ее более строго, то верификация эквивалентна только статическому тестированию и предназначена для применения к артефактам. А валидация (всего программного продукта) эквивалентна динамическому тестированию и предназначена для применения к работающему программному продукту (не к его артефактам, за исключением требований). Обратите внимание, что валидация требований может выполняться статически и динамически (см. валидация артефактов ).
Верификацию программного обеспечения часто путают с валидацией программного обеспечения. Разница между верификацией и валидацией :