¡Somos nominados al premio Embedded Award 2026 Tools y nos encantaría recibir su apoyo! Vota por C/C++test CT >>
White Paper
Antes de comenzar, vea una vista previa a continuación.
Las pruebas multiplataforma permiten ejecutar pruebas en el hardware de destino con pocos o ningún cambio en la interfaz o el uso de la herramienta. "Destino" se refiere al hardware conectado remotamente o a una simulación que simula el entorno de ejecución del producto en desarrollo.
Los entornos de destino ejecutan sistemas operativos embebidos en hardware con mayores limitaciones de memoria y rendimiento que los entornos de desarrollo host. La cadena de herramientas del compilador/enlazador/depurador difiere del procesador de destino.
Las pruebas basadas en objetivos, también conocidas como pruebas de integración, son esenciales para validar la funcionalidad, la seguridad y el rendimiento correctos de los sistemas embebidos, ya que el entorno host carece del sistema operativo embebido, las interfaces de hardware y los periféricos del producto final. Además, el rendimiento y el comportamiento de los sistemas de destino difieren de los del entorno host y pueden afectar el resultado de las pruebas.
Verificación y validación de software Es una parte inherente del desarrollo de software embebido. Las pruebas son clave para demostrar el correcto comportamiento del software. Prueba unitaria Es la verificación del diseño del módulo. Garantiza que cada unidad de software cumpla con su función.
Además, los requisitos de seguridad pueden exigir que las unidades de software no se comporten de forma inesperada ni sean susceptibles de manipulación con entradas de datos inesperadas. Las vulnerabilidades pueden manifestarse en el sistema de destino debido a las diferencias de comportamiento con respecto al entorno host. Las superficies de ataque de los dispositivos integrados son difíciles de simular en entornos host, por lo que las pruebas adecuadas requieren hardware de destino.
Recolectando y analizando métricas de cobertura de código Es importante para el software crítico para la seguridad. La cobertura de código mide la finalización de los casos de prueba y las pruebas ejecutadas. Proporciona evidencia de que la validación está completa, al menos según lo especificado por el diseño del software.
Es fundamental registrar y mantener la trazabilidad entre los casos de prueba, los resultados de las pruebas, el código fuente y los requisitos. Por lo tanto, la recopilación de datos durante las pruebas basadas en objetivos es crucial.

El modelo V de desarrollo de software que muestra la relación entre cada fase y la validación inferida en cada etapa de prueba.
Automatización de las pruebas de sistemas integrados Es un desafío debido a la complejidad de iniciar y observar pruebas en objetivos integrados. El acceso limitado al hardware del objetivo es otro desafío que enfrentan los equipos de software. Sin embargo, la automatización es esencial para que las pruebas integradas sean viables de forma continua desde el sistema de desarrollo anfitrión hasta el sistema de destino.
Las pruebas de software embebido requieren mucho tiempo. Automatizar la suite de pruebas de regresión permite ahorrar tiempo y dinero considerablemente. Recopilar los resultados de las pruebas y los datos de cobertura de código del sistema de destino es esencial para la validación y el cumplimiento de los estándares. El hardware de destino puede tener una conectividad física limitada, lo que dificulta la recuperación de los resultados de las pruebas. Afortunadamente, es posible extraer los datos de varios puertos, como el puerto serie, el puerto Ethernet (sockets TCP/IP), el conector JTAG y otros métodos.

El modelo V de desarrollo de software que muestra la relación entre cada fase y la validación inferida en cada etapa de prueba.
Las pruebas multiplataforma permiten generar y extender pruebas en el host (el entorno de desarrollo donde se instalan las herramientas) y luego ejecutarlas en uno o más destinos. Esto es especialmente útil para probar código que se compila de forma cruzada para su uso en un dispositivo integrado o en otra plataforma.
Parasoft C / C ++test Elimina la barrera para las pruebas integradas efectivas al generar automáticamente casos de prueba que pueden ejecutarse en cualquier entorno multiplataforma: host, simulador y en los entornos de destino reales. También es posible recopilar resultados de pruebas y métricas de cobertura de código. La instrumentación detecta defectos en tiempo de ejecución, como fugas de memoria, en las aplicaciones en ejecución.
En el entorno host, los desarrolladores pueden generar automáticamente un conjunto básico de casos de prueba unitarios y de API diseñados para identificar respuestas de funciones inesperadas ante condiciones límite. Con una configuración diferente, las pruebas generadas capturarán el comportamiento actual del software a nivel de método/función. Los siguientes pasos para este conjunto de pruebas incluyen:
El mismo conjunto de pruebas se compila de forma cruzada, generando ejecutables para un entorno de procesador y hardware diferente para su ejecución en un entorno de destino. C/C++test guarda y utiliza los resultados de las pruebas de destino posteriormente en la interfaz gráfica de usuario (GUI) para su evaluación y análisis. Los sockets TCP/IP pueden enviar automáticamente los resultados de las pruebas a la GUI de C/C++test, que recopila métricas de cobertura, como la cobertura de ramificación, condición simple y MC/DC para todas las pruebas. La GUI de C/C++test ofrece amplias funciones para la depuración de casos de prueba, incluyendo compatibilidad con numerosos depuradores de host, generación de informes de seguimiento de pila, generación de informes de secuencias de llamadas y visualización detallada de los resultados de los casos de prueba.
C/C++test y C/C++test CT pueden instrumentar la aplicación original para detectar problemas de memoria y, posteriormente, realizar una compilación cruzada e iniciarla en el destino para identificar errores de memoria existentes y recopilar la cobertura del código. Los equipos pueden combinar estos datos de cobertura con los de otras pruebas unitarias en el host o el destino.
El ejecutable de prueba consiste en un conjunto de herramientas de prueba basado en código fuente instrumentado y la biblioteca de ejecución de C/C++. En el caso de Parasoft C/C++test, utiliza una versión precompilada de la biblioteca de ejecución de C/C++test, incluida en la distribución de C/C++test.
Para las pruebas basadas en objetivos, los equipos necesitan una biblioteca de ejecución de C/C++test con compilación cruzada. C/C++test prepara automáticamente una compilación de la biblioteca. En casos excepcionales que requieren una personalización no estándar, es posible preparar manualmente una compilación de la biblioteca y usar un compilador cruzado para compilar el código fuente del arnés de pruebas.
C/C++test automatiza el proceso de compilación cruzada del arnés de pruebas y su vinculación con la biblioteca de ejecución de C/C++test, lo que requiere que C/C++test defina correctamente el compilador cruzado. Esto no requiere la interacción del usuario.
Las bibliotecas de tiempo de ejecución son un componente fundamental de las pruebas basadas en objetivos, ya que requieren un entorno de ejecución adecuado. Los equipos deben crear la biblioteca de tiempo de ejecución con un compilador cruzado y las bibliotecas adecuadas, como la aplicación y los casos de prueba.
Parasoft C/C++test se entrega con una biblioteca compartida de entorno de ejecución precompilada y completa. Sin embargo, este entorno de ejecución está diseñado para plataformas host complejas. Considerando la multitud de plataformas embebidas en las que se pueden realizar pruebas, así como sus capacidades y limitaciones, los equipos deben ajustar el entorno de ejecución antes de compilarlo para diferentes entornos embebidos. Por eso, el código fuente en C puro de la biblioteca de entorno de ejecución también está disponible.
Los equipos pueden configurar la biblioteca para que admita las funciones disponibles en la plataforma de destino o para bloquear las que no lo estén. Los desarrolladores de aplicaciones integradas conocen las ventajas y desventajas de las plataformas que utilizan y deberían ser capaces de crear una biblioteca configurada correctamente y añadir su ruta a la línea de comandos del enlazador.
Parasoft C/C++test crea la biblioteca de tiempo de ejecución automáticamente como parte de la fase de preparación del ejecutable de prueba. El sistema de los equipos requiere una compilación personalizada de la biblioteca de tiempo de ejecución de C/C++test.
La biblioteca de ejecución de C/C++test se distribuye en forma de archivos fuente y de encabezado en C. En la mayoría de los casos, los equipos pueden dejar que C/C++test la compile automáticamente. Si lo desean, pueden compilarla utilizando la utilidad "make" y una de las configuraciones preconfiguradas para las plataformas compatibles. C/C++test proporciona archivos de proyecto especiales que facilitan la compilación de bibliotecas de ejecución para IDEs populares.
La verificación y validación de software es una parte esencial del desarrollo y las pruebas de software embebido. Las pruebas unitarias son necesarias para garantizar que cada unidad de software cumpla con su función. Automatizar las pruebas de... sistemas embebidos es más desafiante debido a la complejidad de iniciar y observar pruebas en objetivos integrados.
El software embebido utiliza pruebas multiplataforma para probar tanto en sistemas host como de destino. Los entornos de destino están más limitados por la memoria y el rendimiento que los entornos host, y es probable que la cadena de herramientas del compilador/enlazador/depurador sea diferente a la del procesador de destino.
Parasoft C/C++test admite pruebas multiplataforma y permite la automatización de pruebas basadas en objetivos. Todo esto ayuda a desplazar las pruebas de objetivos a la izquierda y a aumentar la cobertura del código, a la vez que integra pruebas de objetivos complejas en los pipelines de CI/CD.
¿Listo para sumergirte más profundamente?