Slide 1

Técnicas de Prueba Flexibles

Una herramienta para todas tus
pruebas unitarias y de integración

Cantata es una herramienta de pruebas dinámicas para pruebas unitarias y de integración de C/C++. Su conjunto flexible de capacidades de automatización de pruebas permite a los desarrolladores cumplir los requisitos de pruebas de las normas de seguridad del software y aplicar las mejores prácticas del sector.

La automatización de pruebas de Cantata le permite seleccionar la combinación más eficaz y eficiente de técnicas de pruebas dinámicas para adaptarse a sus estilos de implementación de código C y C++.

Las pruebas de Cantata pueden extenderse directamente en cualquier editor de código, ampliando la flexibilidad a cualquier cosa posible en el lenguaje de programación C/C++.

Flexibilidad Focalizada

Ninguna suite de herramientas puede soportar todos los estilos de pruebas, y Cantata no es una excepción. Cantata se centra en los requisitos de las pruebas unitarias y de integración de las pruebas dinámicas conformes con los estándares de código C y C++ en sistemas embebidos.

Con el conjunto de herramientas flexibles de Cantata puede elegir qué combinación de capacidades de pruebas automatizadas son las adecuadas para realizar sus pruebas unitarias, pruebas de integración o para mejorar sus pruebas de nivel superior.

"Las pruebas de módulos en fases tempranas del desarrollo son cada vez más importantes debido a la creciente complejidad del software. En la práctica, Cantata ha demostrado su eficacia y ha aumentado la eficiencia de las pruebas unitarias. Cantata de QA Systems ofrece una solución ideal para la creación y ejecución de pruebas unitarias y de integración, incluido el análisis de cobertura."

Matthias Schmidt, Gestión de pruebas, Verificación y Validación, Bosch Engineering GmbH

"A través de años de experiencia en pruebas unitarias usando Cantata para varias plataformas y lenguajes... confiamos en sugerir Cantata a nuestros clientes."

Padmakumar TV, Especialista principal en ingeniería, TATA Elxsi

Capacidades de cantata por técnica de ensayo

PRUEBAS EN FUNCIÓN DE LOS REQUISITOS

Cantata admite pruebas basadas en requisitos para verificar que el software hace lo que debe hacer (derivado de requisitos, especificaciones o modelos de bajo nivel).

El arnés de pruebas de Cantata controla el código bajo prueba a través de un script de prueba que llama a una función con entradas seleccionadas (parámetros y datos) y automatiza la comprobación del comportamiento real frente al esperado.

Los requisitos importados en el IDE de Cantata facilitan la definición de casos de prueba y el seguimiento de los requisitos con scripts de prueba o casos de prueba.

(Véase también Cantata Requirements Traceability).

PRUEBAS DE ROBUSTEZ

Cantata admite pruebas dinámicas de robustez para verificar que el código hace frente a condiciones anormales mediante técnicas recomendadas por todas las normas de seguridad del software, como:

  • inicialización anormal del sistema
  • entradas y datos no válidos
  • gestión de modos de fallo
  • valores límite
  • condiciones de borde aritmético
  • restricciones temporales
  • asignación de memoria
  • siembra de errores

Las pruebas de robustez se facilitan con los conjuntos de reglas de robustez de Cantata de valores predefinidos para tipos de datos básicos, en casos de prueba en bucle. Todos los datos globales accesibles también se comprueban automáticamente en busca de cambios involuntarios. Los scripts y envoltorios de prueba de Cantata facilitan la creación de condiciones previas de prueba anormales y la inyección de errores durante la ejecución de la prueba. (Véase también Cantata Call Control)

ENSAYOS ESTRUCTURALES

Las pruebas estructurales identifican el código fuente no comprobado por las pruebas de robustez y las basadas en requisitos, y abordan esas lagunas.

La cobertura de código de Cantata (utilizada dentro o fuera de las pruebas de Cantata) señala los elementos de código no ejecutados en contextos específicos o en todos los contextos. Las lagunas pueden resolverse añadiendo nuevos casos de prueba basados en los requisitos, documentando las razones por las que el código no debe ejecutarse en un contexto determinado o eliminando el código redundante.

Cantata AutoTest genera automáticamente guiones de prueba completos o casos de prueba adicionales para lograr una cobertura estructural del 100% para código C y C++. (Véase también Cantata Code Coverage & Cantata AutoTest).

Desarrollo basado en pruebas (TDD)

Cantata permite escribir pruebas en cuanto se crean prototipos de funciones en los ficheros de cabecera. Esto permite construir las pruebas antes de que el cuerpo del software bajo prueba esté completamente implementado. Cantata para TDD mejora las técnicas tradicionales de TDD de caja negra, dando acceso a pruebas completas de caja blanca sobre código interno encapsulado, como datos y funciones privados/estáticos.

PRUEBAS DE CAJA NEGRA

Las pruebas de caja negra verifican el código sólo a través de sus interfaces públicas, y no requieren el conocimiento de la implementación interna del código para comprobar su correcto comportamiento.

Cantata aporta potencia a esta técnica con pruebas en bucle parametrizadas o predefinidas por el usuario, de modo que las mismas funciones pueden llamarse con grandes conjuntos de datos de parámetros de entrada o valores de datos. La secuencia de llamadas esperadas y los valores de retorno esperados pueden variar en función de los conjuntos de datos de entrada, junto con las salidas de datos globales comprobadas a lo largo de la ejecución de la prueba.

Los conjuntos de datos de prueba basados en tablas de Cantata también pueden importarse/exportarse a través de CSV. Una calculadora de efectos combinatorios GUI facilita la selección del vector de prueba. La optimización automática de la cobertura de Cantata identifica el conjunto preciso de vectores de casos de prueba necesarios para alcanzar los objetivos de cobertura.

PRUEBAS DE CAJA BLANCA

Las pruebas de caja blanca verifican el código concediendo acceso a las partes internas del código encapsulado (datos y funciones privados / estáticos).

Cantata concede a los probadores acceso directo a estos sin contaminar el código de producción con la compilación condicional, mediante el uso de instrumentación de accesibilidad totalmente automática sólo durante las pruebas. Los scripts de prueba pueden llamar directamente a funciones privadas o estáticas y establecer / comprobar parámetros y datos declarados privados o estáticos en un archivo o función local.

Las pruebas de caja blanca de Cantata pueden establecer condiciones de activación, y comprobar directamente los valores o el comportamiento interno de manera más eficiente que con las pruebas de caja negra.

El control de llamadas de Cantata también puede utilizarse en llamadas dentro del límite de compilación para pruebas de caja blanca.

PRUEBAS DE PROCEDIMIENTOS Y MÁQUINAS DE ESTADOS

Las pruebas procedimentales de Cantata verifican la lógica de procesamiento o los algoritmos de las funciones utilizando conjuntos adecuados de entradas de parámetros/datos, y comprobando que el orden real de llamada, la lectura/escritura de datos y los valores de retorno son los esperados. Cantata analiza el código fuente para generar scripts de prueba con los ganchos de prueba necesarios en los parámetros de las funciones y los datos accesibles para que los usuarios los configuren y comprueben.

Las máquinas de estado se prueban estableciendo condiciones de activación y creando eventos, para verificar las transiciones de estado correctas. Cantata white-box testing hace esto particularmente eficiente a través del acceso directo a los datos estáticos de la función local que almacenan el estado de la máquina.

La cobertura de código de contexto definido por el usuario de Cantata también se puede utilizar para verificar que el código se ha probado en diferentes estados. (Véase también Cantata Code Coverage).

PRUEBAS ORIENTADAS A OBJETOS

Las pruebas de estilo OO de Cantata se implementan como clases para probar métodos, plantillas o grupos de clases. Están automatizadas:

  • reutilización de casos de prueba mediante una jerarquía de herencia paralela
  • estructura de herencia de clases de prueba para clases heredadas
  • implementación concreta de clases base abstractas (ABC) o métodos virtuales puros (PVM)

Para romper la cadena de dependencia de clases y facilitar las pruebas de aislamiento de C++, Cantata encuentra y resuelve automáticamente las dependencias de referencias indefinidas que no son llamadas directamente por el software bajo prueba. (Véase también Cantata Call Control).

PRUEBAS UNITARIAS DE AISLAMIENTO

Cantata no dicta qué elemento de código se prueba como unidad, ni en qué medida cada unidad está aislada (desacoplada) del resto del sistema. La flexibilidad total viene dada por la generación automática configurable de stubs y isolates para simular, y wrappers para interceptar llamadas realizadas tanto externa como internamente por la unidad bajo prueba. El correcto procesamiento interno y el correcto uso de las interfaces (parámetros y datos), pueden ser verificados con Cantata como un ejecutable aislado tan pronto como una unidad compila, sin necesidad del resto del sistema.

Cantata genera un caso de prueba ejecutable inicial para cada función / método en el archivo fuente seleccionado (s) bajo prueba. Las pruebas unitarias de Cantata llaman a una función, inicializando todos los parámetros de entrada / salida, los datos accesibles y el orden de llamada esperado. Los casos de prueba son independientes entre sí y de la plataforma en la que se ejecutan, evitando una cadena de dependencias.

PRUEBAS DE INTEGRACIÓN

Las pruebas de integración impulsadas por Cantata no son más que grandes pruebas unitarias, pero con un conjunto de múltiples unidades construidas como un único ejecutable. Tales pruebas pueden verificar el mismo comportamiento interno de la unidad, pero lo más importante las interacciones entre las unidades, tales como:
asignación de memoria entre unidades
orden de lectura / escritura de datos
orden de las llamadas entre unidades
Las pruebas de integración de Cantata proporcionan el poder de elegir los puntos de entrada del controlador del script de prueba, con simulaciones internas y externas (stubs y isolates) o intercepciones (wrappers) para el uso flexible de estilos de pruebas de integración de arriba hacia abajo, de abajo hacia arriba o todo como uno. Las envolturas Cantata también se pueden utilizar cuando Cantata no es el buceador de pruebas, añadiendo un mayor control sobre las pruebas de integración.

Las técnicas expuestas pueden aplicarse en diversas combinaciones para cumplir los requisitos de las normas de seguridad del software y las mejores prácticas del sector. Para obtener información más detallada sobre el diseño de casos de prueba y los requisitos de una norma específica, consulte nuestro amplio conjunto de  recursos.