Cantata Logo - unit and integration testing tool for C/C++


AutoTest


Generación automática de casos de pruebas

¿Qué es AutoTest de Cantata?

AutoTest de Cantata crea scripts completos de pruebas de unidades o añade casos de pruebas a los scripts de Cantata existentes. Analiza el código fuente C para determinar todas las rutas posibles a través del código según un objetivo métrico de cobertura de código estructural:

  • 100% puntos de entrada a funciones
  • 100% declaraciones
  • 100% decisiones
  • 100% causa única MC/DC

Un algoritmo crea vectores de casos de pruebas que ejercitan todas las rutas de código requeridas, con las potentes capacidades de caja blanca de Cantata para definir datos, parámetros y controlar las interfaces de llamadas a funciones.

 

Los vectores de prueba dirigen el código y comprueban los parámetros que pasan entre funciones, valores de datos globales accesibles, orden de llamadas y valores de retorno.

 

Los casos generados con AutoTest se pueden editar de la misma manera que los casos generados por el usuario, y cada caso de prueba incluye una descripción de la ruta creada a través del código para ejercitar, lo que facilita su mantenimiento.

Procedural and state machine testing diagram - Cantata procedural tests verify the processing logic or algorithms in functions - flow chart

¿Qué me ayuda a hacer AutoTest?

CONFIGURACIÓN DE LA GENERACIÓN AUTOMÁTICA DE PRUEBAS

Las opciones de generación de AutoTest se pueden configurar fácilmente a través de la interfaz gráfica de usuario o de la barra de comandos:

  • Se requiere cobertura de código (conjunto de reglas)

  • Cómo se simulan o interceptan las llamadas a función.

  • Si se accede a variables estáticas globales

  • Funciones estáticas de las pruebas de unidades de aislamiento o las pruebas de integración de subgrupos

  • Qué datos comprobar (es decir, datos globales, argumentos de llamada a función o valores de retorno)

  • Si los datos globales se modifican durante las llamadas a funciones para forzar rutas;

  • Generación de límites máximos de tiempo, rutas, matrices, etc.

AutoTest Code Generation Screenshot - AutoTest Generation options can be easily configured - GUI - command line
Cantata code coverage - Measure Coverage - Function entry points - function call-returns - basic blocks - statements - decisions -loops - relational operators - boolean operators conditions - MC/DC

La selección de un conjunto de reglas de cobertura de código determinará la profundidad (es decir, la cantidad de casos de pruebas necesarias para alcanzar el objetivo). El estilo se determina mediante el uso de las opciones de generación de código específicas de AutoTest y norma de Cantata Workspace.

 

Las pruebas de unidades de aislamiento o las pruebas de integración de subgrupos, que utilizan enfoques de prueba de caja negra o de caja blanca, proporcionan flexibilidad para adaptarse a la minuciosidad de la prueba inicial y la capacidad de mantenimiento de la prueba para la refactorización del código necesaria.

 

 

IDENTIFICACIÓN DE PROBLEMAS DE PRUEBAS DE CÓDIGO

 

Si AutoTest no puede generar pruebas, o si las pruebas están incompletas, el Informe de generación de AutoTest proporciona información útil sobre cualquier problema de prueba dentro del código fuente.

 

Los mensajes de advertencia se escriben en el Informe de generación de AutoTest y muestran dónde y por qué no fue posible generar casos de pruebas, lo que indica posibles problemas en el código fuente o en la capacidad de probarlo dinámicamente. Por lo tanto, puede ser un complemento valioso para la revisión de código, incluso si AutoTest no se ejecuta dinámicamente.

GENERACIÓN DE PRUEBAS CON COBERTURA COMPLETA DE CÓDIGO

 

El informe de generación de AutoTest de Cantata identifica la cobertura de código esperada que se alcanzará cuando se ejecuten las pruebas generadas. A medida que los casos de AutoTest se generan inicialmente para la aprobación, las únicas comprobaciones fallidas serán aquellas en las que el Conjunto de reglas de cobertura compruebe la cobertura alcanzada frente a un objetivo.

 

Por supuesto, alcanzar la cobertura completa del código es solo una parte de los objetivos de las pruebas. Los casos de pruebas generados por AutoTest pueden revisarse y, cuando sea apropiado, asignarse a los requisitos (véase la sección de capacidad de trazabilidad de requisitos de Cantata Requirements Traceability Cantata para obtener más información).En este caso, AutoTest reduce drásticamente el esfuerzo del desarrollador para seleccionar vectores de casos de pruebas y comprobar los requisitos.

AutoTest Results Summary Screenshot - generate tests with full code coverage - build summary - results summary - coverage summary

SOLUCIÓN DE CASOS EXTREMOS EN BRECHAS DE LA COBERTURA

 

Si se está probando código complejo, incluso requisitos detallados, las pruebas de resistencia exhaustivas pueden dejar rutas de ejecución sin probar en el código, debido a que las diferentes combinaciones de los vectores de entrada requeridas para una cobertura completa son difíciles de identificar. Para estos "casos extremos", AutoTest puede generar casos de pruebas que ayuden a solucionar cualquier brecha en la cobertura del código si el código no es redundante.

 

AutoTest se puede utilizar en funciones seleccionadas para generar un conjunto de casos de pruebas dirigidos que consigan una cobertura del 100%. La optimización automática de la cobertura del código de Cantata puede, con un solo clic, eliminar/deshabilitar cualquier caso de prueba que no contribuya a la cobertura global del código obtenida.

AutoTest Coveragre Results Explorer Screenshot - plug edge case gaps in coverage - generating test cases to plug any gaps in code coverage if the code is not redundant
AutoTest Test Cases Screenshot - plug edge case gaps in coverage - generating test cases to plug any gaps in code coverage if the code is not redundant
Cantata AutoTest Test Safety net - Baseline regression testing

CREACIÓN DE UNA RED DE SEGURIDAD DE PRUEBAS DE REGRESIÓN DE REFERENCIA

 

Modificar el código heredado que se basa en las pruebas del sistema es muy caro e ineficiente, pero escribir un conjunto completo de pruebas de unidades desde cero simplemente no es comercialmente viable. AutoTest de Cantata genera automáticamente un conjunto de pruebas de unidades para todos los códigos seleccionados. Estas pruebas pueden actuar como una red de seguridad de referencia contra futuros errores de regresión a medida que cambia el código. Esto reduce la dependencia de las pruebas del sistema, que a menudo son costosas y largas, además de ser más minucioso y localizar errores con precisión.

 

AutoTest de Cantata genera un conjunto de archivos Makefile de Cantata, que se pueden integrar fácilmente en cualquier código abierto o herramientas comerciales de IC para permitir la realización de pruebas completamente automatizadas durante el desarrollo, en cada integración.

ACTUALIZACIÓN DESDE HERRAMIENTAS DE PRUEBA HEREDADAS

 

Incluso cuando ya se utilizan otras herramientas de pruebas de unidades, puede haber ventajas reales en la actualización de las instalaciones de prueba modernas y potentes disponibles en Cantata. Esto es especialmente cierto cuando las herramientas heredadas no presentan una buena compatibilidad o no están calificadas para las necesidades de certificación de las herramientas de acuerdo con las normas de seguridad.

 

AutoTest de Cantata ofrece dos rutas muy automatizadas para actualizar las herramientas de pruebas de unidades:

 

Para una base de código con un nivel de calidad aceptado, las pruebas existentes pueden simplemente reemplazarse por un conjunto de pruebas de unidades de Cantata generado por AutoTest.

 

Para las pruebas de unidades heredadas escritas en C (por ejemplo, las herramientas xUnit), las pruebas existentes se pueden incorporar a los scripts de prueba de Cantata, retener la inversión en casos de pruebas heredadas y luego mejorarse con capacidades adicionales de Cantata, incluido AutoTest.

Man jumping from old computer to new laptop - Upgrade from legacy test tool

¿Cómo funciona AutoTest?

AutoTest puede aplicarse mediante el uso de un Asistente de scripts de prueba o puede generar casos de pruebas adicionales en un script de prueba existente en la vista de Administrador de scripts de prueba. Para bases de código más grandes, puede ser más conveniente ejecutar AutoTest desde la barra de comandos.

 

AutoTest analiza el código fuente y utiliza las opciones de Cantata para generar:

  • El informe de generación de AutoTest, que proporciona información resumida y detallada sobre las pruebas que se han generado.
  • Scripts de prueba de Cantata (o casos de pruebas adicionales a scripts existentes)
  • Cantata Makefiles para crear el ejecutable de prueba

A continuación las pruebas generadas se crean y ejecutan, lo que produce el conjunto estándar de resultados e informes de Cantata.

AutoTest Process Chart - Chart showing process of AutoTest testing source code

ALGORITMO DE GENERACIÓN AUTOTEST

 

AutoTest de Cantata crea scripts completos de prueba de unidades de Cantata a partir de un código fuente mediante un algoritmo que genera automáticamente vectores de casos de pruebas que ejercitan rutas de códigos, comprueban datos, verifican parámetros y registran órdenes de llamadas. Las rutas de código utilizadas para generar los casos de pruebas se determinan mediante la selección de los tipos de métricas (Punto de entrada, Declaración, Decisión o MC/DC de causa única) en un Conjunto de reglas de cobertura de código.

 

Existen preferencias para influir en el algoritmo de generación de AutoTest, incluido el nivel requerido de cobertura de código, el método de control de llamadas, qué tipos de datos deben comprobarse, cómo se pueden modificar los datos para forzar las rutas de ejecución, los límites de tiempo, los límites de las rutas y muchos más. Estas preferencias afectan el estilo de las pruebas de Cantata y limitan el alcance de la generación de pruebas.

 

Las pruebas pueden ser más o menos exhaustivas y pueden hacer uso de enfoques de caja blanca o caja negra. La decisión sobre el estilo de pruebas de unidades generadas con AutoTest de Cantata dependerá de los objetivos del plan de regresión y de la manera en que cambia el código. Por ejemplo, permitiendo flexibilidad para la refactorización de código de funciones estáticas sin interrumpir las pruebas de caja negra.

MENSAJES DE ERROR Y ADVERTENCIA DE AUTOTEST

 

Si la generación de AutoTest de Cantata resulta en pruebas incompletas o encuentra una calidad de código sospechosa, los mensajes de advertencia se escriben en el Informe de generación de AutoTest. Estos mensajes de advertencia indican posibles problemas en el código fuente o su prueba dinámica, por lo que pueden tener un valor significativo.

 

AutoTest de Cantata notificará:

  • código inalcanzable, cuando no puede generar casos de pruebas para ejercitar todas las partes del software analizadas
  • posibles situaciones de bloqueo, como punteros nulos, un índice de matriz fuera de los límites, decisiones con variables sin inicializar y división por cero
  • truncamiento al escribir, cuando la tipografía puede provocar la pérdida de datos.
  • uso de datos sin inicializar, como un campo dentro de una gran estructura
  • datos estáticos no constantes dentro de una función, ya que su valor será desconocido al inicio de un caso de prueba
  • funciones de no retorno, cuando una función no devuelve el control a la persona que la llama, aunque Cantata tiene la capacidad de solucionar el problema con fines de prueba.
  • declaraciones de funciones implícitas, cuando se llama a una función antes de que se haya declarado
Más información sobre AutoTest de Cantata

 

Para obtener información más detallada sobre el AutoTest de Cantata, consulte:

Start
Trial
Learn
more
QA-Systems