Pruebas de regresión para software embebido - Automatización a través de Jenkins

Me pregunto si alguien ha usado o al menos si hay algún complemento de Jenkins que pueda permitir la gestión de un ciclo de prueba completo para una compilación en particular.

Tal vez una primera pregunta sería, ¿existe algún complemento de Jenkins que pueda ofrecer una interfaz de alto nivel para probar software integrado a través de un nodo conectado a algún equipo de hardware?

En este caso, la prueba en sí sería realizada por alguna herramienta específica en el nodo. Jenkins actuaría solo como administrador, iniciando las pruebas en el nodo, recopilando resultados y actualizando estadísticas sobre la calidad de la construcción. Todo de manera iterativa, lo que permite que el equipo de prueba involucrado depure cualquier problema y actualice los elementos de prueba, si es necesario (casos de prueba si lo desea, pero también detalles del entorno si es necesario). Los ciclos de ejecución de las pruebas se realizarían durante la noche dejando el equipo disponible durante el día para ser utilizado en ejecuciones puntuales y depuración.

Dicho complemento debería poder verificar el proyecto de prueba si es necesario antes de cualquier ejecución de regresión y también permitir la entrada manual (por ejemplo, para forzar la detención de la prueba)

La idea completa también involucra algunos otros aspectos, pero por ahora solo estoy interesado en el complemento en sí.

Respuestas (1)

Básicamente, si puede configurar su prueba de regresión para que se pueda activar desde la línea de comando y los resultados se capturen y posiblemente se procesen posteriormente, entonces un nodo de Jenkins puede activarlo y, dado un valor de retorno del proceso de 0 para un pase y distinto de cero para un error, obtendrá un éxito o un fracaso (tal como lo hace con make). Toda la salida de la línea de comando se captura y está disponible para la depuración, etc.

En el pasado, configuré este tipo de cosas con python para invocar las herramientas de prueba, analizar los registros relevantes y establecer el valor de retorno.

Esto ya está hecho en este momento. Implementé una herramienta para hacer exactamente eso y se usa para ejecuciones únicas. Esta herramienta se usaría durante el día cuando todos están en la oficina. Hace un muy buen uso del mecanismo de cola que proporciona Jenkins y si hay más de un nodo dando servicio a un trabajo en particular, es una bendición. El complemento de Jenkins (o lo que sea que esté allí) que estoy buscando tendría que ser un poco más inteligente que eso. Debería comenzar la prueba, esperar a que termine la prueba en el intervalo de tiempo permitido, esperar al siguiente intervalo de tiempo disponible, etc.
Lo más probable es que necesite implementarlo yo mismo en función de este mecanismo de canalización, sospecho. Todas las estadísticas de prueba tendrían que procesarse en el nodo y entregarse a Jenkins como artefactos junit. Solo estoy especulando por el momento. Tiene alguna idea sobre esto? ¿O sugerencias? ¡Muchas gracias!
Desde la línea de comando es la única forma en que lo he visto hacer, en varias organizaciones.
@Mawg, demasiados desarrolladores en estos días, incluidos los desarrolladores de herramientas desafortunadamente, se han olvidado de la línea de comandos o han enterrado demasiado bien la documentación de la interfaz de la línea de comandos, lo que hace que las pruebas automáticas sean una molestia. Con Jenkins, si puede hacerlo en la línea de comando, entonces Jenkins puede hacerlo por usted y registrar los resultados.
Ciertamente estoy de acuerdo, pero si bien las habilidades como las secuencias de comandos bash/dos/powershell han disminuido, la popularidad de Python ha aumentado, por lo que la mayoría de las "líneas de comando" de Jenkins generalmente solo invocan algunas secuencias de comandos de Python.