2010-05-23 9 views
6

He escrito un pequeño sistema operativo para el proyecto integrado que se ejecuta en blanco pequeño a mediano.¿Cómo probar la confiabilidad de mi propio (pequeño) sistema operativo incorporado?

Agregué algunas pruebas de unidad automatizadas con una cobertura de código de prueba alta (> 95%), pero el alcance es solo la parte estática.
Obtuve algunas métricas de código como complejidad y legibilidad.
Estoy probando mi código con un verificador de reglas con soporte MiSRA, y por supuesto solucioné todas las advertencias.
Estoy probando el código con un analizador estático y volví a arreglar todas las advertencias.

¿Qué puedo hacer ahora para probar y mejorar la fiabilidad de mi sistema operativo? ¿Qué tal la parte dinámica?

+0

Dejar que la gente realmente lo use no es una opción en este momento? –

+0

@Tim Post: Sí, 2 proyectos lo están ejecutando ... ¡pero debo proporcionar información sobre la fiabilidad! He probado solo la parte estática. – TridenT

+0

¿Es este un sistema operativo basado en texto? –

Respuesta

1

Intente escribir algunas pruebas de unidad para la parte dinámica. Luego ejecute las pruebas en el hardware de destino. Ejecute las pruebas en el hardware con más núcleos Ejecute las pruebas en el hardware con un solo núcleo

Varíe la velocidad del reloj del sistema objetivo y ejecute las pruebas dinámicas.

debería sacudir la mayoría de los problemas de sincronización.

+0

¡Quizás sea la única solución! Pero escribir unidad/prueba de integración con evaluación de tiempo, en el objetivo, con múltiples núcleos ... ¿Escribiré la prueba unitaria durante 10 años?!? – TridenT

+0

Ejecute las pruebas dinámicas en el destino. (1) experimente ejecute las pruebas dinámicas en hardware de desarrollo con más o menos experimentos de núcleos (2). Ejecutar en el objetivo con diferente velocidad de reloj (1) experimento. Un total de 5 experimentos. –

1

Eche un vistazo a software-testing entry on wikipedia. Es una descripción bastante completa de las diferentes ramas de las pruebas. Puede encontrar una nueva idea o dos allí.

+0

Es un comienzo interesante, pero no sé cómo manejar el comportamiento dinámico de mi sistema operativo. ¡Seguiré el enlace para la investigación! – TridenT

2

cosas que faltan en su lista:

  • Si no lo está haciendo, entonces también ejecutar las pruebas unitarias en el hardware de destino, para comprobar si hay problemas de compilación y hardware.

  • Las revisiones de código, especialmente para comprobar las condiciones de carrera

También puede revisar el código ensamblador generado, si no es demasiado grande.

+0

Las revisiones de código son buenas, pero es 'una oportunidad'.La revisión del código de ensamblaje se realizó parcialmente, pero ¿qué resultados debo mostrar? – TridenT

1

Pruebe Atomic Object's sitio. Pruebe this also..

También James Greening.

+0

La técnica simulada es bastante difícil en C (el SO está escrito en C + ASM) y pesado en comparación con C++. ¡Pero podría ser la única solución! – TridenT

+0

Creo que usan mucho la generación de código también. – Gutzofter

1

Parece que ha hecho mucho para probar su sistema. Creo que el próximo paso sería lograr que otros proyectos o personas lo usen. Otros usuarios mostrarían rápidamente que eran problemas de robustez.

+0

sí, y ya solicitan una mejor documentación de usuario :) – TridenT

Cuestiones relacionadas