¿Cuáles son algunas de las herramientas de software disponibles que se utilizan hoy en día para probar el firmware?

StackOverflow https://stackoverflow.com/questions/5359381

Pregunta

Soy un ingeniero de software que puede ser contratado como ingeniero de pruebas de firmware.Sólo quiero tener una idea de algunas herramientas de software disponibles en el mercado que se utilizan para probar el firmware.¿Puedes indicarlos y explicar un poco qué tipo de pruebas le brindan al firmware?Gracias de antemano.

¿Fue útil?

Solución

Las pruebas se presentan en varias formas y se pueden realizar en diferentes etapas.Además de la validación del diseño incluso antes de escribir el código, las pruebas de código se pueden dividir en pruebas unitarias, pruebas de integración, pruebas de sistemas y pruebas de aceptación (aunque los términos exactos y el número de etapas pueden variar).En el modelo V, estos se corresponderían horizontalmente con las etapas de requisitos y desarrollo del diseño.También en desarrollo y mantenimiento puede realizar pruebas de regresión, asegurándose de que los errores corregidos sigan solucionados cuando se apliquen otros cambios.

En cuanto a las herramientas, se pueden dividir en análisis estático y análisis dinámico.Las herramientas estáticas analizan el código fuente sin ejecutarlo, mientras que el análisis dinámico se ocupa del comportamiento del código durante la ejecución.Algunas herramientas (caras) realizan una "ejecución abstracta", que es una técnica de análisis estático que determina cómo el código puede fallar durante la ejecución sin una ejecución real. Este enfoque es computacionalmente costoso pero puede procesar muchas más rutas de ejecución y estados variables que el análisis dinámico tradicional.

La forma más sencilla de análisis estático es la revisión de código;conseguir que un humano lea su código.Existen herramientas para ayudar incluso con este proceso aparentemente manual, como Colaborador del código de SmartBear.Del mismo modo, la forma más sencilla de análisis dinámico es simplemente revisar su código en su depurador o incluso simplemente ejecutar su código con varios escenarios de prueba.Lo primero lo puede realizar un programador durante el desarrollo y la depuración de la unidad, mientras que lo segundo es más adecuado para las pruebas de aceptación o integración.

Si bien la revisión de código bien realizada puede eliminar una gran cantidad de errores, especialmente errores de diseño, quizás no sea tan eficiente para encontrar ciertos tipos de errores causados ​​por la semántica sutil o arcana de los lenguajes de programación.Este tipo de error se presta a la detección automática utilizando herramientas de análisis estático como Herramientas PC-Lint y FlexeLint de Gimpel, o Herramientas de control de calidad de Programming Research, aunque también son útiles enfoques de menor costo, como establecer un nivel alto de advertencia del compilador y compilar con más de un compilador.

Las herramientas de análisis dinámico vienen en varias formas, como análisis de cobertura de código, creación de perfiles de rendimiento de código, análisis de gestión de memoria y verificación de límites.

Las herramientas/proveedores de alta gama incluyen empresas como Cobertura, Poliespacio (una herramienta de análisis abstracto), Cantata, LDRA, y Klocwork.En el extremo inferior (en precio, no necesariamente en efectividad) se encuentran herramientas como PC-Lint y tessy, o incluso el código abierto entablillar (sólo C) y un gran número de herramientas de prueba unitaria

Otros consejos

Aquí hay algunas técnicas de prueba de firmware que he encontrado útiles ...

  1. Prueba unitaria en la PC; es decir, extraiga una función del firmware y compile y pruebe en una plataforma más rápida. Esto le permitirá, por ejemplo, probar exhaustivamente una función, mientras que esto llevaría el tiempo prohibitivo in situ.

  2. Instrumento Los manejadores de interrupción del firmware utilizan un temporizador de hardware en ejecución gratuita: garrapatas al ingresar y salir, y recuento de interrupciones. Realice un seguimiento de la frecuencia y el período Min y Max para cada manejador de interrupción. Estos datos pueden usarse para calificar el análisis monotónico o el análisis monotónico de la fecha límite.

  3. Use un protocolo estándar, como Modbus RTU, para que una variedad de datos de estado esté disponible a pedido. Esto se puede utilizar para datos de configuración y verificación.

  4. Cree el número de versión de firmware en el código utilizando un proceso de compilación automatizado, por ejemplo, obteniendo la información de la versión del repositorio de código fuente. Haga que el número de versión esté disponible con el #3.

  5. Use la pelusa u otra herramienta de análisis estático. Exige cero advertencias de la pelusa y del compilador con -wall.

  6. Aumente sus herramientas de compilación con un medio para incrustar el CRC del firmware en el código y verificarlo en tiempo de ejecución.

He encontrado útiles las pruebas de estrés. Esto generalmente significa darle mucha entrada al sistema en poco tiempo y ver cómo lo maneja. La entrada podría ser

  • Un archivos con muchos datos para procesar. Un ejemplo me haría un archivo con datos de onda que deba analizar mediante un dispositivo de alarma.
  • Datos recibidos por una aplicación que se ejecuta en otra máquina. Por ejemplo, un programa que genera datos de presentación/liberación de pantalla táctil aleatoria y lo envía a un dispositivo de un puerto de depuración.

Estos tipos de pruebas pueden sacudir muchos errores (particularmente en sistemas donde el rendimiento es crítico y limitado). Un buen sistema de registro también es bueno tener que rastrear las causas de los errores planteados por una prueba de estrés.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top