Parasoft C / C ++test
Realizar análisis estático, pruebas unitarias y cobertura de código para desarrollar código C y C ++ de alta calidad que sea robusto, seguro y que cumpla con los estándares de la industria.
La cobertura de 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 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. También:
Como resultado, la cobertura de la aplicación brinda una visión extremadamente poderosa del riesgo. En la mayoría de las organizaciones, las pruebas unitarias son el vehículo principal para impulsar la cobertura. Y si bien las pruebas unitarias son una práctica de prueba valiosa que también permite varios beneficios orientados al proceso, también son costosas 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 exhaustividad de la cobertura en los 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 del código. Por lo general, se desglosan en la declaración de código, la rama, las decisiones de condición modificada y con Parasoft, también puede profundizar hasta un nivel mucho más fino de granularidad de cobertura, como el código objeto o el lenguaje ensamblador.
La cobertura del código a menudo se identifica o mide a través de la instrumentación del código. Esto se hace adornando el código fuente con un código de seguimiento adicional para determinar, mientras se ejecuta, si se ha ejecutado cada declaración, rama y/o ruta de decisión de condición modificada (MC/CD).
Es importante saber que la instrumentación del código hace que el código se hinche. El aumento en el tamaño del código no suele ser una preocupación. Para objetivos integrados con limitaciones de memoria, el aumento puede afectar la capacidad de cargar el código en el hardware de destino para realizar pruebas.
Los objetivos de porcentaje de cobertura de código pueden ser subjetivos en algunos casos. En otros casos, son obligatorios. Cuando se construyen aplicaciones que son críticas para la seguridad donde la falla puede causar la muerte, los estándares regulatorios y de la industria requieren una cobertura de código estructural del 100 %.
Para las aplicaciones que no son críticas para la seguridad, la cobertura del código tiende a dejarse a la decisión de la organización de desarrollo. El nivel de comodidad común para este tipo de circunstancias es lograr una meta de cobertura de código del 80 %.
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.
Recopile la cobertura de las pruebas unitarias, las pruebas del sistema, las pruebas manuales y todos los demás métodos de ejecución de pruebas utilizados. La prueba de Parasoft C / C ++ admite una variedad de métricas de cobertura (Branch, Statement, MC / DC, etc.), que los equipos pueden usar en el desarrollo de aplicaciones nativas y cruzadas.
Pedir demoRecopile y supervise la cobertura del código durante las pruebas funcionales manuales o automatizadas realizadas en su aplicación Java. Los usuarios pueden enviar datos de cobertura y resultados de pruebas para fusionarlos y correlacionarlos para el análisis, lo que proporciona información sobre qué tan bien se prueba la aplicación y la calidad de la prueba.
Empiza La Prueba GratuitaRecopile información de cobertura de código para aplicaciones web e independientes escritas en C # y VB.NET. Instale la aplicación monitoreada en la misma máquina donde está instalado dotTEST o en otra máquina.
Pedir demoObtener 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.
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.
Aproveche las pruebas de su sistema para obtener cobertura de código e identificar las pruebas faltantes que pueden exponer errores ocultos.
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.
Utilice los diversos métodos de prueba que debe realizar para acelerar sus requisitos de cobertura. La cobertura agregada se puede obtener a partir de pruebas del sistema, de integración, unitarias y manuales.
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.
La instrumentación del código hace que el código se hinche y el aumento en el tamaño del código puede afectar la capacidad de cargar el código en su hardware de destino con limitaciones de memoria para realizar pruebas. Instrumente porciones de su código a la vez, ejecute sus pruebas y agregue sus métricas de cobertura de cada ejecución.
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.
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.
Cobertura de código de Parasoft dentro de las soluciones de análisis e informes del panel de control IDE y DTP.
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 e ISO 21434 para automoción o IEC 62304 para medicina, determine si necesita obtener una cobertura de código del 100 % o si 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, instrucció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 están creando casos de prueba de unidad para probar su código. Con soluciones como Parasoft C/C++test y Jtest,
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 fusionará datos de cobertura para obtener sus métricas de cobertura de código completas. Los informes de cobertura se pueden generar desde su IDE y se pueden exportar al panel de análisis e informes de Parasoft DTP. En DTP, los usuarios pueden inspeccionar visualmente las áreas de alto riesgo, comprender qué debe abordarse a continuación y producir informes de cumplimiento y auditoría.
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í.
La cobertura de 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 que todas las prácticas de prueba ejercen el código fuente de la aplicación.
La cobertura del código debe determinarse según sus necesidades u objetivos de requisitos de cobertura. ¿Necesita satisfacer un estándar funcional de seguridad (DO-178C para aviónica o ISO 26262 para automoción o IEC 62304 para medicina) que exija o recomiende 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.
Recomendamos un mínimo de 60 % de cobertura de código, que debería ser fácil de obtener. Esto le brindará algo de tranquilidad, pero saber que el 40 % del código no se probó puede provocarle 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.
Sí, es posible obtener el 100% de cobertura de código. 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 con su depurador, 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 usted puede que nunca llegue a ese evento.
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 para mejorar la calidad del código.
¡Absolutamente! Las soluciones de automatización de pruebas de Parasoft se han integrado en las canalizaciones de Azure y con otras herramientas como GitHub, GitLab, Jira y otras que automatizan su flujo de trabajo de integración continua y entrega continua.