La verificación de software es una disciplina de ingeniería de software , lenguajes de programación y teoría de la computación cuyo objetivo es asegurar que el software satisfaga los requisitos esperados.
Una definición amplia de verificación la relaciona con las pruebas de software . En ese caso, existen dos enfoques fundamentales para la verificación:
En el Sistema de Clasificación Informática ACM , los temas de verificación de software aparecen en "Software y su ingeniería", dentro de "Creación de software", mientras que la verificación de programas también aparece en Teoría de la computación, dentro de Semántica y razonamiento, Razonamiento de programas.
La verificación dinámica se realiza durante la ejecución del software y comprueba dinámicamente su comportamiento; comúnmente se la conoce como fase de Prueba . La verificación es un proceso de revisión. Según el alcance de las pruebas, podemos categorizarlas en tres familias:
El objetivo de la verificación dinámica de software es encontrar los errores introducidos por una actividad (por ejemplo, tener un software médico para analizar datos bioquímicos); o por la ejecución repetitiva de una o más actividades (como una prueba de estrés para un servidor web, es decir, verificar si el producto actual de la actividad es tan correcto como lo era al inicio de la actividad).
La verificación estática es el proceso de comprobar que el software cumple con los requisitos inspeccionando el código antes de ejecutarlo. Por ejemplo:
Verificación por análisis: el método de verificación por análisis se aplica a la verificación por investigación, cálculos matemáticos, evaluación lógica y cálculos que utilizan métodos clásicos de libros de texto o métodos informáticos de uso general aceptados. El análisis incluye el muestreo y la correlación de los datos medidos y los resultados de pruebas observados con los valores esperados calculados para establecer la conformidad con los requisitos.
Cuando se define de forma más estricta, la verificación es equivalente únicamente a las pruebas estáticas y está destinada a aplicarse a los artefactos. Y la validación (de todo el producto de software) sería equivalente a las pruebas dinámicas y está destinada a aplicarse al producto de software en ejecución (no a sus artefactos, excepto los requisitos). Tenga en cuenta que la validación de requisitos se puede realizar de forma estática y dinámica (consulte la validación de artefactos ).
La verificación de software suele confundirse con la validación de software. La diferencia entre verificación y validación es la siguiente :