¡ASTQ Summit está disponible bajo demanda! Escuche a los líderes de la industria compartir cómo están brindando calidad continua. Míralo ahora >>

X

Evalúe y garantice la confianza en la cobertura de su prueba

La solución de Parasoft para la cobertura de código expone el código en su aplicación que ha sido probado y no ha sido probado. Los usuarios pueden realizar la cobertura del código en varios niveles, función o unidad, todo el archivo o toda la aplicación en el hardware de destino o en los entornos de host. Y puede agregar la cobertura de los diversos métodos de prueba, como la prueba unitaria y la prueba del sistema.

¿Qué es la cobertura del código?

La cobertura del código estructural es la identificación del código que se ha ejecutado y registrado con el fin de determinar si el sistema se ha probado adecuadamente. La cobertura de código expresa el grado en el que el código fuente de la aplicación es ejercido por todas las prácticas de prueba, incluidas las pruebas unitarias, las pruebas manuales, las pruebas funcionales automatizadas y similares. Esto permite métricas de cobertura y calidad más precisas, al tiempo que expone partes de la aplicación con código muerto, no probadas o no probadas.

Como resultado, la cobertura de la aplicación proporciona una visión extremadamente poderosa del riesgo. En la mayoría de las organizaciones, las pruebas unitarias son el vehículo principal para la cobertura de conducción. Y aunque la prueba unitaria es una práctica de prueba valiosa que también permite varios beneficios orientados al proceso, también es costosa en términos de experiencia y tiempo para crear, administrar y mantener las pruebas.

La cobertura del código se puede aprovechar como parte del proceso de integración continua (CI), así como como parte del flujo de trabajo del escritorio del desarrollador. También puede realizar análisis avanzados en el código fuente e identificar qué pruebas unitarias deben volver a ejecutarse en función de los cambios de código que ha realizado el desarrollador.

Estas herramientas de cobertura de código son especialmente útiles en industrias para el desarrollo integrado de aplicaciones críticas de seguridad y protección donde los sistemas de software no pueden fallar o se perderán vidas.

La minuciosidad de la cobertura en sistemas críticos para la seguridad depende de la métrica del nivel de integridad de seguridad de la aplicación (SIL o ASIL) que se usa en varias industrias y del nivel de garantía de desarrollo (DAL) que se usa comúnmente en aviónica. La minuciosidad se refiere a los elementos estructurales en el código. Por lo general, estos se desglosan en la declaración de código, la rama, las decisiones de condición modificada y con Parasoft, también puede profundizar en un nivel mucho más detallado de granularidad de cobertura, como el código objeto o el lenguaje ensamblador.

Beneficios de la cobertura del código

Respuestas, "¿Terminé la prueba?"

La cobertura del código puede ayudar a medir la integridad de la prueba y garantiza que haya inspeccionado cada línea de código en su aplicación durante la ejecución. Aprovechar una combinación de métodos de prueba como análisis estático, pruebas unitarias, pruebas del sistema, pruebas de rendimiento y similares, es la mejor manera de garantizar la calidad del código.

Satisfacer las necesidades de cumplimiento de la cobertura del código

Cumpla con los requisitos de cobertura de código para estándares de seguridad funcional como DO-178B / C, ISO 26262, IEC 62304, IEC 61508 y EN 50128. Los requisitos de cobertura de código ayudan a garantizar la seguridad y confiabilidad del código al exponer el código no probado y eliminar los defectos.

Reducir el costo de los defectos

Los defectos de código que se encuentran en la producción son los más costosos. Evite que se escapen a través de las grietas resaltando el código que no ha sido probado antes de lanzar su aplicación. Esto puede realizarse en la estación de trabajo del desarrollador o automatizarse como parte del proceso de integración continua (CI).

Realice la verificación del código de ensamblaje / objeto

Para los requisitos de cobertura de códigos críticos de seguridad más estrictos, como DO-178C Nivel A, Parasoft ofrece cobertura de códigos a nivel de ensamblaje. Ahorre días, incluso semanas, de esfuerzo manual laborioso y propenso a errores con nuestra solución automatizada.

Cumplir con la cobertura del código en el hardware de destino y host

La prueba exhaustiva de las aplicaciones integradas de seguridad y críticas para la seguridad requiere probar el hardware en el destino y en el entorno del host. Parasoft proporciona instrumentación de código para capturar y reportar la cobertura del código estructural para la cobertura de la decisión, rama, condición modificada (MC / DC) y más.

Obtenga una cobertura de código del 100%

Aunque generalmente puede alcanzar los objetivos de cobertura de código estructural del 100% a través de pruebas unitarias, ahorre tiempo y esfuerzo agregando los resultados de cobertura de código obtenidos automáticamente de las pruebas del sistema. Y luego complete el código descubierto restante mediante pruebas unitarias.

Herramientas de cobertura de código estructural

Implemente el conjunto de productos de Parasoft para realizar una cobertura de código estructural de aplicaciones escritas en C, C ++, Java, C # y VB.NET.

Mejores prácticas para la cobertura del código

Obtener la cantidad de código que se ejerce durante las pruebas es una métrica poderosa para comprender el nivel de riesgo que queda en la aplicación. A continuación, se muestran algunas de las mejores prácticas a seguir.

Canalización de CI

La integración de pruebas y cobertura de código en su sistema de compilación aumentará la eficiencia, promoverá la colaboración y brindará una mayor visibilidad en todo su ciclo de vida de desarrollo de software.

Pruebas del sistema

Aproveche las pruebas de su sistema para obtener cobertura de código e identificar las pruebas faltantes que pueden exponer errores ocultos.

Asesor de cobertura

No pierda tiempo tratando de determinar todos los valores de entrada y las condiciones previas requeridas en un caso de prueba para obtener cobertura en una declaración, rama o línea de código MC / CD esquiva. Utilice un asesor de cobertura.

Cobertura agregada

Utilice los diversos métodos de prueba que debe realizar para agilizar sus requisitos de cobertura. La cobertura agregada se puede obtener a partir del sistema, la integración, la unidad y las pruebas manuales.

Generación automatizada de casos de prueba

Las soluciones de Parasoft pueden analizar y generar automáticamente casos de prueba unitarios para eliminar problemas de puntero nulo, condiciones de valor fuera de los límites, dividir por cero y muchos otros tipos de defectos. Además, estos casos de prueba se pueden habilitar para producir cobertura de código y, en algunos casos, obtener hasta un 90% de cobertura de código estructural.

Instrumentación parcial

La instrumentación de código provoca que el código se sobrecargue y el aumento en el tamaño del código puede afectar la capacidad de cargar el código en el hardware de destino con restricciones de memoria para realizar pruebas. Instrumente partes de su código a la vez, ejecute sus pruebas y agregue sus métricas de cobertura de cada ejecución.

Depurador para cobertura

Si tiene que satisfacer el 100% de cobertura del código estructural pero tiene un código defensivo que solo se ejecutará cuando el sistema entre en un estado de falla que podría demorar semanas, meses o incluso años (o quizás nunca), use su depurador para simular las condiciones necesarias y realizar una inspección visual de la ejecución / cobertura del código.

Código muerto

Si se encuentra un código porque no tiene un camino para su ejecución, por motivos de seguridad, asegúrese de que se elimine y nunca salga al campo.

Cómo comenzar con la cobertura del código

Para comenzar a recopilar cobertura de código, familiarícese con sus necesidades de requisitos de cobertura. Tal vez su industria y tipo de aplicación no requieran que se obtenga ninguna métrica de cobertura, pero desea garantizar o mejorar la calidad del código, por lo que el 75% podría ser su objetivo inicial.

Si su industria requiere el cumplimiento de un estándar funcional como DO-178C para aviónica o ISO 26262 para automotriz o IEC 62304 para medicina, entonces determine si necesita obtener una cobertura de código del 100% o se recomienda otro porcentaje de cobertura de código. Además, sepa qué tipo de cobertura de código estructural necesita satisfacer. Podría ser la función, línea, declaración, bloque, llamada, ruta, decisión, condición simple, MC / DC, objeto / ensamblaje o una combinación de estos.

Una de las formas más fáciles de obtener cobertura de código es durante la implementación, cuando los ingenieros crean casos de prueba unitaria para probar su código. Soluciones como la prueba Parasoft C / C ++ pueden integrarse directamente en su IDE y proporcionar esta funcionalidad, ofreciendo una curva de aprendizaje muy corta para el usuario. El equipo de control de calidad puede reutilizar estos casos de prueba unitaria para pruebas de regresión y / o como parte del proceso de compilación en un flujo de trabajo de canalización de CI automatizado.

Tenga en cuenta que la instrumentación del código puede provocar un exceso de código y, si está probando en el hardware de destino, es posible que deba realizar una instrumentación parcial. El código instrumentado también puede alterar el rendimiento de la ejecución, por lo que es posible que desee familiarizarse con varias funciones de optimización disponibles.

 

Recopilar y reportar las métricas de cobertura de su código es crucial. Hay varios métodos que se basan en si su aplicación se ejecuta en un destino integrado o en un sistema o servidor con todos los recursos.

En última instancia, obtendrá o combinará datos de cobertura para obtener las métricas de cobertura de su código completo. Los informes de cobertura se pueden generar desde su IDE y se pueden exportar al DTP del panel de análisis e informes de Parasoft. En DTP, los usuarios pueden inspeccionar visualmente las áreas de alto riesgo, comprender qué se debe abordar a continuación y producir informes de auditoría y cumplimiento.

Ejemplo de cobertura de código

Cobertura de código de Parasoft dentro de las soluciones de análisis e informes del panel de control IDE y DTP.

Captura de pantalla del panel de cobertura de código completo del Centro de informes de Parasoft.

 

¿Por qué Parasoft?

La solución de Parasoft para la cobertura del código proporciona comentarios críticos sobre la integridad y minuciosidad del proceso de prueba, al correlacionar las pruebas y los resultados de la cobertura del código estructural. Puede utilizar estos resultados o métricas para evaluar la unidad, la integración y la integridad de las pruebas a nivel del sistema a través de nuestro soporte de todos los tipos importantes de cobertura de código (función, llamada, línea, declaración, bloque, ruta, decisión, condición simple y MC / DC), incluida la cobertura de objetos / ensamblajes.

Los resultados de cobertura están disponibles directamente en el IDE, con vistas convenientes y aspectos destacados en el editor de código fuente, así como en forma de informes estáticos en HTML o PDF e informes dinámicos a través del panel de informes centralizado de Parasoft.

Los usuarios pueden monitorear aplicaciones ejecutadas de forma nativa en el escritorio, multiplataforma usando simuladores o en hardware embebido real. El módulo de cobertura de prueba de C / C ++ está optimizado para minimizar el impacto en el rendimiento de ejecución y la huella binaria de prueba, lo que lo hace adecuado para su uso con aplicaciones de alta gama basadas en servidor, así como con sistemas muy limitados basados ​​en 16 bits. microcontroladores.

Cuando se conecta con Process Intelligence Engine de Parasoft, los usuarios se benefician del análisis de impacto de las pruebas. Para todas y cada una de las pruebas realizadas, incluidas las manuales, a nivel de sistema o basadas en la interfaz de usuario, las pruebas se registran no solo para pruebas / fallas y resultados, sino también para su impacto de cobertura en la base de código.

Cada prueba adicional se superpone a esta información existente, creando una imagen completa del éxito y la cobertura de la prueba. A medida que se cambia el código, el impacto es claramente visible en el registro subyacente, destacando las pruebas de cobertura que ahora fallan o el código que ahora no se ha probado. Elevar esta información en varios grados de detalle permite a los desarrolladores y evaluadores identificar rápidamente lo que necesita ser modificado / arreglado para la próxima ejecución de prueba.

Con Parasoft, los equipos pueden concentrarse en la cobertura de código para las áreas de desarrollo activo, en lugar de la base de código completa, lo que puede ser especialmente problemático cuando se trabaja con bases de código heredadas. En lugar de intentar únicamente lograr un número de cobertura para todo el código base, Parasoft lo ayuda a identificar las partes del código que están cambiando.

El panel de informes de Parasoft correlaciona los datos de la prueba C / C ++ con los cambios observados en la base de código para enfocar al equipo de desarrollo en lograr niveles más altos de cobertura de código para esas partes específicas y modificadas de la base de código. Con Parasoft, puede minimizar el impacto de los cambios administrando de manera eficiente el cambio en sí.

Preguntas Frecuentes

La cobertura del código estructural es la identificación del código que se ha ejecutado y registrado con el fin de determinar si el sistema se ha probado adecuadamente. La cobertura de código expresa el grado en el que el código fuente de la aplicación es ejercido por todas las prácticas de prueba, incluidas las pruebas unitarias, las pruebas manuales, las pruebas funcionales automatizadas, etc. Esto permite métricas de cobertura y calidad más precisas al tiempo que expone el código muerto, las partes no probadas o infraprobadas de la aplicación. Como resultado, la cobertura de la aplicación proporciona una visión extremadamente poderosa del riesgo. En la mayoría de las organizaciones, las pruebas unitarias son el vehículo principal para la cobertura de conducción.

La cobertura del código debe estar determinada por sus necesidades u objetivos de cobertura. ¿Necesita cumplir con un estándar funcional de seguridad (DO-178C para aviónica o ISO 26262 para automotriz, o IEC 62304 para médico) que exige o recomienda una cobertura del 100%? O tal vez solo desee mejorar la calidad de su código, por lo que el 60% podría ser su objetivo inicial. Además, determine qué tipo de cobertura de código estructural necesita satisfacer. Podría ser la llamada, línea, declaración, bloque, función, ruta, decisión, condición simple, MC / DC, objeto / ensamblaje o una combinación de estos.

Recomendamos una cobertura de código mínima del 60%, que debería ser fácil de obtener. Esto le dará algo de consuelo, pero saber que el 40% del código no fue probado puede darle algunas noches de insomnio.

Algunos recomiendan 70-80%, pero la mejor manera de determinar si necesita aumentar su porcentaje de cobertura se basa en la cantidad de defectos que se han identificado. Si es un número alto, la calidad del código es un problema y le recomendamos que aumente la cobertura de su código. Sepa que incluso con una cobertura de código del 100%, no garantiza que se hayan identificado todos los defectos. Solo proporciona una reducción del riesgo.

Sí, es posible obtener una cobertura de código del 100%. Puede lograr esto mediante la agregación de varios métodos de prueba y mediante la observación de la ejecución del código utilizando su depurador. Por ejemplo, las pruebas unitarias pueden acercarlo mucho a su objetivo del 100%, pero para las líneas de código que requieren circunstancias muy específicas para ejecutarse, como el código defensivo, puede llevar semanas, meses, años o es posible que nunca llegue a ese evento. . Si su herramienta de cobertura no proporciona una forma de alcanzar el 100% de cobertura del código, puede utilizar su depurador y, en algunos casos, editar la pila de llamadas y recorrer el código descubierto mediante una inspección visual.

Saber que sus pruebas no han dejado ningún código sin probar es su señal. Sin embargo, sus objetivos de análisis de cobertura de código deben basarse en cualquier requisito de cumplimiento o en el objetivo de su organización de mejorar la calidad del código. Si el requisito es una cobertura de estado de cuenta del 100%, cobertura de sucursales y cobertura de MC / DC, ese es su objetivo. Cuando haya probado todas sus líneas de código y haya alcanzado el porcentaje de cobertura que requiere el contrato, habrá terminado. Tenga en cuenta que las pruebas de código abierto no son tan precisas o confiables como las herramientas de prueba desarrolladas profesionalmente, por lo que querrá utilizar herramientas certificadas, como las que ofrece Parasoft.

¡Absolutamente! Las soluciones de automatización de pruebas de Parasoft han integrado la integración en las canalizaciones de Azure y con otras herramientas como GitHub, GitLab, Jira y otras que automatizan su integración continua y el flujo de trabajo de entrega continua. Las integraciones brindan flexibilidad, como el uso de la API de línea de comandos para automatizar no solo las pruebas de cobertura de código, sino todas las pruebas de software invocando todas sus suites de prueba.