Введение

Проверка программного обеспечения — это дисциплина, относящаяся к разработке программного обеспечения, языкам программирования и теории вычислений, целью которой является подтверждение соответствия программного обеспечения заданным требованиям.

Широкий охват и классификация

Широкое определение верификации связывает её с тестированием программного обеспечения. В этом случае существует два основных подхода к верификации: динамическая верификация, также известная как экспериментальное тестирование, динамическое тестирование или просто тестирование. Она эффективна для обнаружения ошибок (программных ошибок). Статическая верификация, также известная как анализ или статическое тестирование, полезна для доказательства корректности программы. Однако она может приводить к ложноположительным результатам, если есть расхождения между реальным поведением программного обеспечения и предположениями, которые делает статическая верификация. В системе классификации вычислительной техники ACM темы верификации программного обеспечения представлены в разделе "Программное обеспечение и его разработка" в подразделе "Создание программного обеспечения", а верификация программ также встречается в разделе "Теория вычислений" в подразделе "Семантика и рассуждения, рассуждения о программах".

Узкий охват

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

Сравнение с валидацией

Проверка программного обеспечения часто путают с валидацией программного обеспечения. Разница между проверкой и валидацией: проверка программного обеспечения отвечает на вопрос: "Строим ли мы продукт правильно?" – то есть, соответствует ли программное обеспечение своим спецификациям? (Как дом соответствует его чертежам.) Валидация программного обеспечения отвечает на вопрос: "Строим ли мы правильный продукт?" – то есть, делает ли программное обеспечение то, что действительно требуется пользователю? (Как дом соответствует потребностям и желаниям владельца.)