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