Probar lo que sucede cuando se realizan las llamadas a funciones desde el Software que se prueba (SUT) es una parte integral de todos los niveles de pruebas dinámicas. El control de la interfaz de llamadas de Cantata genera automáticamente el marco de pruebas necesario para estas interfaces, lo que facilita la:

  • Simulación de la interfaz de llamada entre el SUT y los objetos llamados (tanto si están incluidos en la creación o no)
  • Interceptación de la interfaz de llamada entre el SUT y los objetos llamados incluidos en la creación.
  • Configuración y comprobación de datos (a los que puede acceder el SUT) cuando se producen llamadas a función
  • Configuración y comprobación de los valores de retorno al SUT o aumento de las excepciones
  • Inyección de errores al SUT
  • Comprobación del orden de las llamadas realizadas
  • Control de cada instancia de una llamada a funciones, de modo que se pueda establecer/comprobar un comportamiento diferente para cada aparición.

El Envoltorio automático para interceptar (no solo simular) las llamadas es exclusivo de Cantata, que proporciona un control de llamadas sin precedentes, tanto para el aislamiento de la unidad como para las pruebas de integración.

¿Qué es el control de llamadas de Cantata?

Los controles de la interfaz de llamadas de Cantata se generan automáticamente para todas las llamadas a funciones realizadas por el Software que se prueba (SUT), por ejemplo, a otras funciones en el mismo archivo u otro, código de objeto de terceros, sistema operativo / biblioteca del compilador o firmware / hardware de destino. Los usuarios tienen pleno control sobre el estilo apropiado del control de llamada de Cantata que se generará para cada llamada realizada desde cada función:

  • Stubs Stubs para simular llamadas a objetos no incluidos en la creación
  • Aislamientos para simular llamadas específicas a objetos incluidos en la creación
  • Envoltorios para simular o interceptar llamadas específicas a objetos incluidos en la creación.
  • Resolución de dependencia para eliminar automáticamente las referencias de enlaces no definidas

Cada tipo de control de llamada de Cantata se escribe en C/C++ según corresponda, lo que proporciona un punto de control de pruebas en el flujo de ejecución para configurar y comprobar los datos disponibles en el SUT (por ejemplo, datos globales o registros de hardware) y parámetros/retornos. Puesto que cada tipo de control también puede tener múltiples instancias, se puede establecer o comprobar un comportamiento y orden de llamada diferentes cada vez que se realiza una llamada en cada escenario de caso de pruebas.

El aislamiento de C++ para las pruebas del resto del código base puede resultar en un largo efecto en cadena de referencias indefinidas en el momento del enlace cuando se crean los ejecutables de prueba. Dependency Resolver de Cantata determina las referencias que faltan y añade automáticamente el código requerido para resolver todas las referencias no definidas (métodos o variables).

 

Los diversos controles de llamada de Cantata ofrecen a los evaluadores la flexibilidad de elegir la simulación o la intercepción según sea necesario para dirigir y comprobar el código.

¿Qué es el envoltorio de Cantata?

El envoltorio es una instrumentación de accesibilidad automática única que intercepta o simula llamadas a funciones. Va mucho más allá de las simulaciones tradicionales (por ejemplo, stubs, simulacros, falsificaciones, etc.), y proporciona más flexibilidad para probar interfaces cuando los objetos se integran entre sí.

Los envoltorios generadas automáticamente interceptan las llamadas antes de que se realice (ANTES de los envoltorios), después de que se realice (DESPUÉS de los envoltorios), o pueden sustituir la llamada original con una simulación (REEMPLAZAR los envoltorios).

Si se utiliza un script de pruebas de Cantata, las secciones ANTES, DESPUÉS y REEMPLAZAR del envoltorio se escriben en el script de prueba. El envoltorio también se puede utilizar fuera de un script de prueba de Cantata para proporcionar control de interfaz de llamada con otros controladores.

“Muy útil, especialmente para comprobar los mensajes enviados de un proceso a otro, y también para simular respuestas de procesos externos al proceso bajo prueba."

Dave Parker, Ingeniero de software, Marconi Communications

“Sin este [envoltorio de Cantata], habría sido difícil simular condiciones externas difíciles no influidas directamente por nuestro código, como los errores de asignación de memoria".

Simon Prior, Proyecto de sistema de protección del reactor primario, OSyS

¿Qué me ayuda a hacer el envoltorio de Cantata?

INTERCEPTAR Y SIMULAR LLAMADAS EN LA PRUEBAS DE UNIDADES

La pruebas de unidades comprueba una o más funciones sin el resto del sistema. Los controles de llamada tradicionales (por ejemplo, stubs, simulacros, falsificaciones) únicamente simulan los objetos llamados excluidos de la unidad de software compilada analizada.

El envoltorio de Cantata permite controlar las llamadas a funciones específicas tanto dentro como fuera de ese límite de compilación. Las llamadas a funciones específicas se pueden controlar mediante:

  • Envoltorio simulado para sustituir la llamada
  • Envoltorio de intercepción para configurar/comprobar la interfaz antes y después de la llamada

Cada Envoltorio también permite configurar/comprobar todos los datos accesibles cuando se realizan las llamadas.

El envoltorio solo proporciona un control automatizado dentro del límite de compilación (por ejemplo, funciones que llaman a otras funciones en el mismo archivo o clase), y también una mayor opción de prueba a la hora de definir qué se incluye en el límite de prueba de unidades para el aislamiento o la prueba de unidades de clúster.

INTERCEPTAR Y SIMULAR LLAMADAS EN LAS PRUEBAS DE INTEGRACIÓN Y SISTEMAS

Las pruebas de integración y sistemas comprueban la interacción real entre varias unidades, por lo que cuantas más unidades haya integradas, menos útil será reemplazar esas unidades con simulaciones. El envoltorio de Cantata en las pruebas de integración y sistemas retiene todas las ventajas del envoltorio en la prueba de unidades, pero se vuelve aún más útil para simular o interceptar llamadas específicas cuando se prueban las interacciones reales.

 

Las intercepciones del envoltorio de Cantata están disponibles para cualquier llamada a funciones C/C++ realizada desde cualquier lugar dentro del software analizado para:

  • Otros componentes de software en la creación
  • Software externo (incluido código de terceros o de objetos)
  • Sistema operativo o funciones de biblioteca estándar
  • Firmware o hardware

Las intercepciones del Envoltorio de Cantata permiten al evaluador comprobar el comportamiento real de la interfaz, en lugar de utilizar escenarios de pruebas basados en suposiciones en una simulación. La intercepción de llamadas proporciona errores de inyección de capacidad sin precedentes y comprueba el comportamiento real de las interacciones reales (por ejemplo, fallos con sistemas operativos, códigos de terceros, firmware y hardware) que de otra manera son imposibles o demasiado costosos de probar.

¿Cómo funciona el envoltorio de Cantata?

El envoltorio de Cantata utiliza la instrumentación de accesibilidad (a través de la GUI o la CLI) sobre una copia del código fuente para interceptar llamadas a funciones desde el Software que se prueba (SUT).

 

Cualquier cosa que recibe una llamada a funciones C/C ++ puede estar envuelta (por ejemplo, otra función, un objeto de terceros, una base de datos, etc.). Un envoltorio tiene un prototipo de función idéntica al objeto llamado que se sustituye, pero la instrumentación de prueba permite que el objeto llamado se incluya en la creación de prueba sin provocar errores en el enlace.

 

Las secciones ANTES, REEMPLAZAR y DESPUÉS del envoltorio introducen funciones adicionales programables de C/C++, que luego llaman: otra sección del envoltorio, el objeto llamado o la devolución al SUT. Cada sección del Envoltorio contiene directivas de Cantata para registrar el orden de las llamadas, modificar o comprobar los parámetros/excepciones y todos los datos accesibles al SUT o al objeto llamado, y las devoluciones.

EDICIÓN DE LLAMADAS CONTROLADAS POR CANTATA

Cantata genera automáticamente cada Envoltorio (que contiene las secciones ANTES, DESPUÉS y REEMPLAZAR) en el script de pruebas con una instancia de emparejamiento DESPUÉS-ANTES predeterminada. Esto significa que los objetos llamados pueden envolverse sin forzar al evaluador a especificar el valor de retorno.

 

Se pueden añadir instancias adicionales de envoltorio (en los emparejamientos Antes-Después o Antes-Reemplazar) para comprobar todos los valores de parámetros pasados hacia el objeto llamado y desde el mismo. Si se añaden instancias adicionales, Cantata ofrece automáticamente comprobaciones de valores reales frente a valores esperados para todos los parámetros pasados a través de la interfaz.

 

Una llamada a funciones a un objeto puede tener todas las llamadas envueltas o solo funciones de llamada seleccionadas.

 

Los envoltorios se implementan como C/C++ en un script de pruebas de Cantata y se pueden editar en la GUI de Cantata, o directamente utilizando cualquier editor de C/C++.

CONTROL DE LLAMADAS EN CASOS DE PRUEBAS

Los controles de la interfaz de llamadas de Cantata pueden usar múltiples instancias de stubs, envoltorios o aislamientos para proporcionar distintos comportamientos en diferentes ocasiones en que se realiza la llamada. Estas llamadas e instancias controladas se utilizan en un script de pruebas de Cantata para establecer el orden esperado de llamadas y el comportamiento controlado para cada caso de prueba.

Las secuencias de llamada esperadas son muy flexibles (lineales, bucles de tamaño fijo, paralelos, etc.) y se pueden configurar para órdenes específicas o en cualquier momento para cada llamada controlada. El orden de las llamadas esperadas en cada caso de prueba se puede editar en la GUI de Cantata (administrador de scripts de pruebas) o directamente en cualquier editor de C/C++.

Más información sobre los envoltorios

 

Para obtener más información acerca de los envoltorios, consulte nuestro breve informe de envoltorios: