Un modesto primer paso en la generación de pruebas

En el ámbito del desarrollo de software, la comprobación del código es una tarea primordial que nunca debe pasarse por alto. En Berger-Levrault, nos tomamos muy en serio esta responsabilidad y aplicamos una política estricta que incluye el establecimiento de puertas de integración continua (CI) y de calidad en nuestro servidor SonarQube. Las pruebas no sólo apoyan diversas actividades de los desarrolladores, sino que también sirven como una valiosa fuente de documentación, describiendo el comportamiento esperado de un sistema o de sus componentes.

Como Berger-Levrault está migrando actualmente sus aplicaciones utilizando el Casino a menudo nos enfrentamos al reto de modernizar el front-end conservando al mismo tiempo la mayor parte posible del back-end. Sin embargo, esto plantea una cuestión crucial: ¿Cómo nos aseguramos de que el comportamiento del back-end sigue siendo coherente durante el proceso de migración, especialmente cuando se requieren modificaciones?

Para hacer frente a este reto, nos enorgullece presentar Modestnuestra innovadora herramienta de generación de pruebas diseñada con Evref y presentado en marzo a nuestras Unidades de Negocio y Unidades Transversales. Está diseñado para pruebas de no regresión utilizando trazas de ejecución. En esta entrada del blog, profundizaremos en las capacidades de Modest y demostraremos cómo puede revolucionar la generación de pruebas de aplicaciones.

Utilizar Modest como usuario

El uso de Modest es muy sencillo. Modest viene como una caja negra además de un agente Java para su aplicación. Sólo tiene que ejecutar los siguientes pasos

  1. Inicie su aplicación con el agente OpenTelemetry.
  2. Jugar con su solicitud
  3. Ejecute Modest (recogerá trazas, las analizará y generará pruebas)
  4. Integre las pruebas en su aplicación
  5. Ejecutar pruebas

Una inmersión profunda en los pasos y requisitos de Modest

Exploremos ahora los pasos y requisitos del proceso de Modest.

La imagen muestra los pasos del modest.From codebase to code modelFrom codebase to tracesFrom traces to value modelvalue model and code model build a unit test modelfinally unit test model generate unit test
Pasos de Modesto

Actualmente, Modest se centra en aplicaciones Java, generando pruebas Junit4 o Junit5.

Para instrumentaciónUtilizamos OpenTelemetry (compatible con Dynatrace) y un agente personalizado. El agente consiste en sólo cuatro clases con código mínimo que definen los métodos instrumentados y, en consecuencia, los métodos para los que se generan las pruebas. En particular, nuestro enfoque no requiere ningún cambio en el código base original. En el caso de Omaje, los métodos instrumentados son los de la capa de servicios, lo que nos permite generar pruebas para todos los servicios y, por tanto, para todo el back-end de Omaje.

Modesto entonces analiza la base de código para producir un modelo de códigoque es una representación del código base que puede utilizarse para análisis posteriores. Para ello, la herramienta Modest se desarrolla en PharoAprovechando la Moose plataforma informática de análisis. Esta herramienta ya forma parte integrante de muchos de nuestros proyectos de investigación recientes y forma parte de Importante contrato de Berger-Levrault con Inria. Permite analizar fácilmente el código fuente, generar código y visualizarlo para comprender mejor las bases de código.

Al mismo tiempo, Modest extractos a modelo de valor a partir de las trazas generadas, utilizando los argumentos serializados y el valor devuelto de cada llamada, y vincula esta modelo de valor con el modelo de código. Basándose en ambos modelos construye un modelo de pruebas unitarias: la representación de las pruebas que deben generarse para probar su aplicación.

Por último, genera sin esfuerzo código de prueba unitario y lo añade a la base de código.

Ejemplo de prueba unitaria generada por Modest

Las pruebas unitarias generadas siguen el patrón Organizar-Actuar-Asegurar. La página Organice reconstruye los argumentos y el valor devuelto obtenido de la traza. En Actuar ejecuta el método bajo prueba con los mismos argumentos. Por último, la fase Afirme verifica que el valor de retorno real coincide con el valor esperado de la traza.

Comentarios y trabajo futuro

Tras la presentación de la herramienta Modest, recibimos valiosos comentarios de varios equipos, que han dado forma a nuestro trabajo futuro:

  • Mejorar aún más las pruebas generadas moviendo la parte de configuración de las pruebas a archivos específicos para una mejor gestión de los archivos de prueba.
  • Explorar el uso de Postman (una herramienta ya muy utilizada por nuestros equipos) para crear trazas que luego puedan utilizarse para generar pruebas.
  • Encontrar una forma eficaz de empaquetar Modest para el equipo de producción, con archivos de configuración para facilitar su uso.

También estamos encantados de compartir que el equipo de Omaje ha las pruebas generadas son legibles y fáciles de mantener. El siguiente paso es integrarlos plenamente en la producción este verano.

Conclusión

Con ModestBerger-Levrault está dando un gran paso adelante para agilizar la migración de aplicaciones y permitir a los desarrolladores mantener un código de alta calidad. Estamos impacientes por ver el impacto transformador que Modest tendrá en nuestros procesos.

Más ...

Scroll al inicio