Seminario web destacado: Pruebas de API mejoradas con IA: un enfoque de prueba sin código | Vea ahora

Verificación frente a validación en software integrado

Foto de cabeza de Ricardo Camacho, Director de Cumplimiento de Seguridad y Seguridad
28 de septiembre 2023
7 min leer

La verificación frente a la validación en el software integrado es un tema candente en el espacio de desarrollo de software. Si bien ambos términos representan significados similares, existen diferencias notables. Echa un vistazo a esta publicación para aprenderlos.

Cómo la automatización de pruebas acelera tanto la verificación como la validación

Garantizar el correcto funcionamiento, la calidad y la seguridad del software integrado es una parte sustancial de las actividades de software para sistemas embebidos. En gran parte, los equipos logran esto mediante pruebas de software y durante todo el desarrollo mediante análisis, trazabilidad, documentación, etc. El software crítico para la seguridad tiene enfoques rigurosos de verificación y validación que a menudo están codificados en estándares de la industria. Surge la pregunta: ¿cuál es la diferencia?

¿Cuál es la diferencia entre verificación y validación?

Las definiciones oficiales de validación y verificación se definen en el IEEE Glosario estándar de terminología de ingeniería de software.

Verificación: El proceso de determinar si los productos de una determinada fase del ciclo de desarrollo de software cumplen o no los requisitos establecidos durante la fase anterior.

Validación: El proceso de evaluación de software al final del proceso de desarrollo de software para garantizar el cumplimiento de los requisitos de software.

Barry Boehm escribió en Verificación y validación de requisitos de software y especificaciones de diseño definiciones más sucintas:

Verificación: "¿Estoy construyendo el producto correctamente?"

Validación: "¿Estoy construyendo el producto correcto?"

Estas definiciones llegan al quid de la diferencia entre estos dos aspectos clave de las pruebas.

El objetivo de la verificación y validación

El objetivo final es crear el producto adecuado. Más que eso, se trata de garantizar que el producto tenga la calidad, la seguridad y la protección necesarias para garantizar que siga siendo el producto correcto.

La verificación es parte del proceso de desarrollo de software que garantiza que el trabajo sea correcto. La verificación del software generalmente incluye:

  • Conformidad con los estándares de la industria, asegurando que el proceso y los artefactos cumplan con las pautas.
  • Revisiones, tutoriales, inspecciones.
  • Código estático análisis y otras actividades sobre artefactos producidos durante el desarrollo.
  • Hacer cumplir los estándares de arquitectura, diseño y codificación

La validación demuestra que el producto final cumple con los requisitos. Esos requisitos abarcan la funcionalidad más la confiabilidad, el rendimiento, la seguridad y la protección.

Para los productos físicos, la validación incluye que los clientes vean, prueben y prueben el producto ellos mismos. Pero para el software, la validación consiste en la ejecución del software y la demostración de su ejecución. Por lo general, involucra:

  • Ejecución de código para demostrar la funcionalidad correcta.
  • Ejecución en entornos objetivo.
  • Estrés, rendimiento, penetración y otras pruebas no funcionales.
  • Pruebas de aceptación a los clientes de forma directa y frecuente.
  • Usando artefactos de procesos de verificación para ilustrar trazabilidad de requisitos para finalizar la funcionalidad, especialmente para funciones específicas de seguridad y protección.

Es importante comprender las diferencias entre los objetivos de verificación y validación, y que el desarrollo de software necesita ambos. Estas actividades son una parte importante del esfuerzo que se dedica al desarrollo de software. Las organizaciones siempre buscan optimizarlas sin comprometer la seguridad, la protección o la calidad.

Cómo abordar la verificación y validación

El modelo V muestra el enfoque para una verificación y validación más formal, que utiliza el desarrollo de software crítico para la seguridad. Ilustra las actividades en cada etapa de desarrollo y las relaciones entre ellas.

Validación del modelo V
El modelo V de desarrollo de software que muestra la relación entre cada fase y la validación inferida en cada etapa de prueba.

El modelo V es bueno para ilustrar la relación entre las etapas de desarrollo y las etapas de validación. En cada etapa de prueba, se validan partes más completas del software con la fase que lo define. Sin embargo, el modelo V podría implicar un método de desarrollo en cascada. Hay formas de incorporar Agile, DevOps y CI / CD en este tipo de desarrollo de productos.

La verificación, por otro lado, asegura que cada etapa esté completa y realizada correctamente:

Verificación del modelo V
El modelo V de desarrollo de software que muestra la relación de verificación entre cada etapa de desarrollo.

La verificación implica revisiones, recorridos, análisis, trazabilidad, pruebas y cobertura de código, y otras actividades para asegurarse de que los equipos estén construyendo el proceso y el producto correctamente. Por ejemplo, la ejecución de pruebas unitarias es una actividad de validación, y garantizar la trazabilidad, la cobertura del código y el progreso de las pruebas de las pruebas unitarias es la verificación. El papel clave de la verificación es garantizar que la construcción entregue los artefactos desde la etapa anterior a la especificación y en cumplimiento con las pautas de la empresa y la industria.

Confusión de nombres de verificación y validación

Es probable que las organizaciones utilicen la verificación y validación de formas ligeramente diferentes. Es una práctica común considerar la validación como una actividad que ocurre cerca del final del desarrollo de software donde los equipos presentan el producto al cliente (o probadores que actúan como sus apoderados) y demuestran el cumplimiento de todos los requisitos. El desarrollo integrado todavía utiliza el concepto de prueba de aceptación de fábrica (FAT).

Otra diferencia notable en la filosofía es DO-178B / C y estándares relacionados para el desarrollo de software de aviónica crítico para la seguridad para el cual la validación no es un término conocido. De hecho, la validación se considera redundante si la verificación está completa.

“La validación es el proceso de determinar que los requisitos de software son correctos y completos. DO-178C no proporciona una guía para las pruebas de validación de software porque se razona que el software que se verifica que sea correcto, en teoría, no debería tener problemas de validación durante las pruebas de integración de software, a menos que los requisitos de software estén incompletos o sean incorrectos ". - Certificación de software crítico para la seguridad según DO-178C y DO-278A, Stephen A. Jacklin, Centro de investigación Ames de la NASA

Aunque pienso Definición de Boehm corresponde al uso más común de los términos, es probable que haya personas que consideren unidad y pruebas de integración de software como pasos de verificación en lugar de validación.

Canalizaciones híbridas de DevOps para software crítico para la seguridad

En muchas organizaciones de software integrado, la implementación de un proceso totalmente ágil no es compatible con las restricciones que les imponen los estándares de seguridad y protección de la industria. Los artefactos, el código, los resultados de las pruebas y la documentación a menudo requieren y establecen fechas de entrega. El progreso se basa en estos entregables (hitos).

En algunos casos, como los grandes proyectos militares y de defensa, los entregables de hitos se incorporan al contrato y a los acuerdos de pago. Aunque esto implica un enfoque en cascada, no hay razón para limitar el desarrollo de software. Los equipos pueden usar modelos híbridos para lograr hitos de entregables utilizando métodos iterativos y ágiles internamente.

Modelo V ágil de Parasoft
Modelo V ágil de Parasoft

La razón para plantear esto en una discusión sobre verificación y validación es que los equipos pueden aprovechar muchos de los beneficios de la integración y las pruebas continuas en aplicaciones complejas críticas para la seguridad. Parte de eso es cambiar la verificación y validación de la izquierda lo más temprano posible en el proceso de desarrollo. Por ejemplo, no hay razón para retrasar las pruebas unitarias hasta que todas las unidades estén codificadas o esperar para analizar el código con análisis estático hasta que esté listo para la integración.

De manera similar, los desarrolladores deben intentar las pruebas de integración tan pronto como estén listos los componentes probados por la unidad. La combinación de la automatización con un enfoque continuo e iterativo proporciona enormes beneficios para la validación y verificación del software. Parasoft tiene herramientas que abordan las pruebas, la calidad y la seguridad en todas las fases del SDLC, como se muestra a continuación.

El modelo V muestra el enfoque para una verificación y validación más formal, que utiliza el desarrollo de software crítico para la seguridad.

Modelo de Parasoft V: Verificación vs Validación
Cómo encajan los productos Parasoft en cada fase del modelo V del SDLC.

Verificación acelerada

La verificación implica el trabajo para garantizar que cada fase de desarrollo cumpla con la especificación del paso anterior. En términos de codificación y prueba de software, la verificación es asegurarse de que el código satisfaga el diseño del módulo y, en última instancia, el diseño de alto nivel y los requisitos anteriores.

Además, la verificación asegura el cumplimiento de los requisitos a nivel de proyecto. Dichos requisitos incluyen el cumplimiento de los estándares de la industria, la gestión de riesgos, la trazabilidad y las métricas (cobertura y cumplimiento del código). Herramientas de automatización de pruebas de software de Parasoft Acelere la verificación automatizando los muchos aspectos tediosos del mantenimiento de registros, documentación, informes, análisis e informes:

  • Utilice el análisis estático lo antes posible para garantizar la calidad y la seguridad a medida que los desarrolladores escriben código. Además, el análisis estático evita errores y vulnerabilidades futuros, lo que reduce el impacto posterior de los errores que se pasaron por alto durante la inspección y las pruebas.
  • Automatización del cumplimiento de los estándares de codificación para reducir el esfuerzo manual y acelerar las inspecciones de códigos.
  • Trazabilidad bidireccional para todos los artefactos para asegurarse de que los requisitos tengan código y pruebas para demostrar que se están cumpliendo. Las métricas, los resultados de las pruebas y los resultados del análisis estático se rastrean hasta los componentes y viceversa.
  • Cobertura de código y prueba para asegurarse de que se implementen todos los requisitos y para asegurarse de que la implementación se pruebe según sea necesario.
  • Informes y análisis para ayudar a la toma de decisiones y realizar un seguimiento del progreso. La toma de decisiones debe basarse en los datos recopilados de los procesos automatizados.
  • Generación de documentación automatizada desde análisis y resultados de pruebas para respaldar el cumplimiento de estándares y procesos.
  • Automatización del cumplimiento de estándares para reducir los gastos generales y la complejidad mediante la automatización de los procesos más repetitivos y tediosos. Además, las herramientas pueden realizar un seguimiento del historial del proyecto y relacionar los resultados con los requisitos, los componentes de software, las pruebas y las desviaciones registradas.
Automatice las pruebas esenciales para verificar y validar los requisitos de Polarion

Validación acelerada

La validación es demostrar que un producto cumple con sus requisitos cuando la ejecución del código es necesaria ya sea de forma aislada para pruebas unitarias o en varias etapas de integración. Automatizar estos conjuntos de pruebas es un gran ahorro de tiempo para el desarrollo de software integrado.

La validación requiere la ejecución en el hardware de destino. La optimización de las pruebas de regresión aprovecha al máximo los recursos, las personas y el hardware disponibles. Herramientas de automatización de pruebas de Parasoft Acelere el proceso de validación reduciendo la dependencia de las pruebas manuales, manteniendo la trazabilidad y la cobertura del código de todos los resultados:

  • Automatización de todas las suites de prueba minimiza las pruebas manuales y reduce el cuello de botella de las pruebas debido a la disponibilidad limitada de hardware.
  • Ejecución de pruebas basadas en host y destino admite diferentes técnicas de validación según sea necesario.
  • Prueba de cambio a la izquierda comienza tan pronto como los equipos desarrollan el código. Aprovecha los marcos de pruebas unitarias y genera automáticamente arneses para probar tan pronto como el código esté listo. El soporte para el desarrollo basado en pruebas y las pruebas continuas está disponible a medida que madura el proceso de una organización.
  • Gestione el cambio con la ejecución inteligente de pruebas para centrarse en las pruebas solo para el código que cambió y los dependientes afectados.
  • Trazabilidad bidireccional entre código, pruebas, resultados de análisis estáticos y requisitos y soporte para herramientas de gestión del ciclo de vida de las aplicaciones (ALM) en toda la empresa.

Resum

La validación de software garantiza que los equipos creen el software adecuado para cumplir con los requisitos del mercado y del cliente. La validación es una prueba de que cumple con los requisitos y de que su producto es confiable, seguro y protegido para proteger a sus clientes.

La verificación de software garantiza que los equipos creen el producto de acuerdo con los procesos y estándares propios de su organización y los requeridos por el mercado. En otras palabras, la validación demuestra que el producto funciona, mientras que la verificación asegura que usted cruce todas las t y puntee todas las i.

La validación y la verificación consumen una gran parte de los recursos en el desarrollo de productos integrados. Suite de automatización de pruebas de software de Parasoft proporciona un conjunto unificado de herramientas para acelerar las pruebas ayudando a los equipos a cambiar las pruebas dejadas a las primeras etapas de desarrollo mientras se mantiene la trazabilidad, el mantenimiento de registros de resultados de las pruebas, los detalles de cobertura del código, la generación de informes y la documentación de cumplimiento.

Aprenda a satisfacer los requisitos de verificación y validación para los estándares de procesos de la industria.

Publicación relacionada + Recursos