¿Qué son las pruebas integradas en las pruebas de software?

⚡ Resumen inteligente

Las pruebas integradas comprueban el comportamiento funcional y no funcional del software y el hardware de forma conjunta, ya que en un sistema integrado ambos están estrechamente acoplados y ninguno puede validarse adecuadamente por sí solo.

  • 🔘 Acoplamiento estrecho: El hardware se desarrolla en paralelo con el software, por lo que el entorno de prueba real suele llegar tarde.
  • ☑️ Cinco niveles: Las pruebas de unidad de software, integración, unidad de sistema, integración de sistema y validación de sistema se dirigen cada una a un límite de módulo diferente.
  • Riesgos de seguridad: Los productos médicos, ferroviarios, aeronáuticos y automovilísticos requieren pruebas rigurosas y documentadas antes de que se pueda otorgar la certificación.
  • 🧪 Preferencia de caja gris: Las pruebas unitarias del sistema observan los recursos internos y los mensajes del RTOS, por lo que los métodos de caja gris son los más adecuados.
  • 🛠️ Principales obstáculos: Acceso limitado al hardware, componentes de código abierto, defectos mixtos de software y hardware, y defectos difíciles de reproducir.

Pruebas integradas de software y hardware en un sistema embebido

¿Qué son los sistemas integrados?

Los sistemas embebidos Los sistemas embebidos son dispositivos controlados electrónicamente donde el software y el hardware están estrechamente integrados. Pueden contener diversos dispositivos informáticos. Se trata de ordenadores personales incorporados en otros dispositivos para ejecutar funciones específicas de la aplicación. El usuario final generalmente ni siquiera es consciente de su existencia.

Pruebas integradas

Pruebas integradas es un proceso de prueba para verificar la funcionalidad y no funcional Las pruebas de sistemas embebidos evalúan los atributos tanto del software como del hardware, y garantizan que el producto final esté libre de defectos. Su principal objetivo es verificar y validar si el producto final, que integra hardware y software, cumple con los requisitos del cliente.

Las pruebas de software embebido verifican y garantizan que el software en cuestión sea de buena calidad y cumpla con todos los requisitos. Estas pruebas son un excelente método para garantizar la seguridad en aplicaciones críticas como equipos médicos, ferrocarriles, aviación, industria automotriz, etc. Las pruebas rigurosas y minuciosas son cruciales para obtener la certificación del software.

Cómo realizar pruebas de software integrado

En general, realiza la prueba por cuatro razones:

  • Para encontrar errores en el software
  • Ayuda a reducir el riesgo tanto para los usuarios como para la empresa.
  • Reducir los costos de desarrollo y mantenimiento.
  • Para mejorar el rendimiento

En las pruebas integradas, se realizan las siguientes actividades:

  1. El software se proporciona con algunos datos de entrada.
  2. Se ejecuta una parte del software.
  3. Se observa el estado del software y se comprueba que los resultados posean las propiedades esperadas, como por ejemplo si el resultado coincide con el resultado previsto, si cumple con los requisitos y si no se producen fallos del sistema.

Tipos de pruebas de software integrado

Fundamentalmente, existen cinco niveles de prueba que se pueden aplicar al software embebido.

Pruebas unitarias de software

El módulo unitario puede ser una función o una clase. Las pruebas unitarias las realiza el equipo de desarrollo, principalmente el desarrollador, y generalmente se llevan a cabo mediante un modelo de revisión por pares. Los casos de prueba se desarrollan en función de la especificación del módulo.

Pruebas de integración

Pruebas de integración se puede clasificar en dos segmentos:

  • Pruebas de integración de software
  • Pruebas de integración de software/hardware

Finalmente, se prueba la interacción entre el hardware y los componentes de software. Esto puede incluir el análisis de la interacción entre los dispositivos periféricos integrados y el software.

El desarrollo de software embebido tiene una característica única: el entorno real en el que se ejecuta el software generalmente se crea en paralelo con el software. Esto genera inconvenientes para las pruebas, ya que no es posible realizar pruebas exhaustivas en un entorno simulado.

Pruebas de unidades del sistema

Ahora el módulo a probar es un marco completo que consta del código de software completo más todo sistema operativo en tiempo real (RTOS) y componentes relacionados con la plataforma, como interrupciones, mecanismos de asignación de tareas, comunicaciones, etc. El protocolo de punto de control ya no es una llamada a una función o una invocación de método, sino un mensaje enviado o recibido mediante las colas de mensajes del RTOS.

Se observan los recursos del sistema para evaluar la capacidad del sistema para soportar la ejecución del sistema integrado. Para este aspecto, pruebas de caja gris es el método de prueba preferido. Dependiendo de la organización, las pruebas unitarias del sistema son responsabilidad del desarrollador o de un equipo de integración de sistemas especializado.

Pruebas de integración del sistema

El módulo que se va a probar parte de un conjunto de componentes dentro de un único nodo. Los Puntos de Control y Observación (PCO) son una combinación de protocolos de comunicación relacionados con la red y eventos del RTOS, como mensajes de red. Además de un componente, un probador virtual también puede funcionar como un nodo.

Pruebas de validación del sistema

El módulo que se va a probar es un subsistema con una implementación completa o el sistema embebido completo. El objetivo de esta prueba final es cumplir con los requisitos funcionales de la entidad externa. Cabe destacar que una entidad externa puede ser una persona, un dispositivo en una red de telecomunicaciones o ambos.

Diferencia: pruebas integradas y pruebas de software

La tabla siguiente compara las pruebas integradas con las convencionales. pruebas de software.

Pruebas de software Pruebas integradas
Las pruebas de software están relacionadas únicamente con el software. Las pruebas integradas están relacionadas tanto con el software como con el hardware.
En promedio, el 90% de las pruebas que se realizan en el mundo son puramente manuales. prueba de caja negra. Las pruebas integradas se realizan en sistemas o chips integrados, y pueden ser de caja negra o pruebas de caja blanca.
Las áreas principales de prueba son comprobaciones de GUI, funcionalidad, validación y algún nivel de prueba de bases de datos. Las principales áreas de prueba son el comportamiento del hardware en función del número de entradas que se le proporcionan.
Las pruebas de software se realizan principalmente en aplicaciones cliente-servidor, web y móviles. Las pruebas integradas generalmente se realizan en el hardware.
e.g., Google Mail, Yahoo Mail, Android aplicaciones. Por ejemplo, máquinas del sector sanitario, microcontroladores utilizados en ordenadores.

Desafíos: pruebas de software integrado

Algunos de los desafíos que se pueden presentar durante las pruebas de software embebido:

Dependencia de hardware

La dependencia del hardware es una de las principales dificultades que se presentan durante las pruebas de software embebido, debido al acceso limitado al hardware. Sin embargo, los emuladores y simuladores pueden no representar con precisión el comportamiento del dispositivo real y podrían generar una percepción errónea del rendimiento del sistema y la usabilidad de la aplicación.

Software de código abierto

La mayoría de los componentes de software embebido son de código abierto, no se desarrollan internamente y no disponen de un conjunto completo de pruebas. Existe una amplia gama de combinaciones de pruebas y escenarios resultantes.

Defectos de software versus hardware

Otro aspecto a considerar es el desarrollo de software para hardware de reciente creación. Durante este proceso, se puede detectar una alta tasa de defectos de hardware. Estos defectos no se limitan al software, sino que también pueden estar relacionados con el hardware.

Defectos reproducibles

En el caso de un sistema embebido, los defectos son más difíciles de reproducir o recrear. Esto obliga al procedimiento de prueba a valorar cada aparición de defectos considerablemente más que en un caso estándar, y a recopilar la mayor cantidad de datos razonablemente necesarios para encontrar la causa raíz del defecto.

Actualizaciones continuas de software

Los sistemas embebidos requieren actualizaciones de software periódicas, como actualizaciones del kernel, correcciones de seguridad, controladores de dispositivos, etc. Las limitaciones asociadas a las actualizaciones de software dificultan la identificación de errores. Además, esto aumenta la importancia del proceso de compilación e implementación.

Preguntas Frecuentes

Las pilas típicas combinan análisis estático, entornos de prueba unitaria para C y C++, analizadores de bus, tracDepuradores con capacidad electrónica y plataformas de hardware en bucle, además de prueba de automatización de esta forma, los conjuntos de pruebas de regresión se ejecutan sin supervisión.

La simulación hardware-in-the-loop (HIL, por sus siglas en inglés) ejecuta firmware real en el controlador real, mientras que un simulador proporciona las señales que produciría la planta circundante, poniendo a prueba condiciones de falla que no son seguras de crear físicamente.

Un simulador modela el comportamiento y ejecuta una compilación del host; un emulador reproduce el conjunto de instrucciones de destino para que se ejecute el binario real. Ninguno de los dos reproduce con exactitud los efectos analógicos y de temporización.

La norma IEC 61508 es la norma genérica de seguridad funcional. Las versiones sectoriales incluyen la ISO 26262 para vehículos de carretera, la DO-178C para software aeronáutico, la IEC 62304 para dispositivos médicos y la EN 50128 para control ferroviario.

Los modelos de IA clasifican el gran registro y tracLos volúmenes que produce un equipo, los fallos repetidos y el orden de prioridad de las pruebas de regresión en hardware limitado. La decisión sobre la seguridad recae en el ingeniero.

Copiloto de GitHub borradores de arneses de prueba y stubs para C o C++ Los módulos y las aceleraciones de las simulaciones repetitivas. El comportamiento del registro y las restricciones de tiempo que nunca vio aún necesitan ser verificados.

Mediante análisis del tiempo de ejecución en el peor de los casos, instrumentado trace en el objetivo, y pruebas de estrés a carga máxima. Los incumplimientos de plazos y la latencia de interrupción se miden en hardware real, que las compilaciones del host no pueden reproducir.

Lectura C y C++, comodidad con esquemas y analizadores lógicos, familiaridad con conceptos de RTOS y protocolos de bus, además de programación de scripts. Trabajos relacionados como Pruebas de IoT Se basa en la misma premisa.

Resumir este post con: