Pruebas unitarias en Quarkus generadas con Diffblue (Parte I)

I am Christian Loza Peralta, working as a technical leader specialized in software engineering and software architecture. My expertise lies in the development of scalable and secure applications, utilizing agile methodologies, as well as in the implementation of cloud-based solutions and the adoption of microservices architectures. Furthermore, my interest in philosophy and anthropology shapes my holistic approach to designing solutions that are not only technically robust but also contribute to technological culture. With a constant commitment to learning and improvement, I aim to tackle projects from a comprehensive perspective that combines technical and cultural effectiveness
Introducción
Existen muchos generadores de código hoy más que nunca, podríamos decir que son herramientas de ayuda y asistencia que utiliza un desarrollador, implementador ó programador de software para reducir el tiempo de de construcción de código, entre ellos (Github Copilot, Tabnine, ChatGPT, etc).
En base a esto, no es sorpresa de que el tiempo de desarrollo se limita a dos partes:
Implementación de código en base a las funcionalidades y casos requeridos
Pruebas unitarias
Si bien el segundo punto es determinante para una cobertura de código (90% o superior) tiende a generarse un mayor número de pruebas en base a la complejidad del código, y tambien esta parte se vuelve hasta cierto punto una acción repetitiva.
Por ello existen herramientas como mencioné en el primer párrafo para generar o ayudarnos, en este caso hablaremos de Diffblue.
¿Que es Diffblue?

Diffblue en un inicio fue un grupo de investigación de la Universidad de Oxford, que mediante el uso de algoritmos de Marchine Learning (supervisado, no supervisado y de refuerzo) pudieron generar pruebas unitarias de forma automática.
Hoy en día están separados de este grupo de investigación y es una empresa que provee no solo la generación de pruebas unitarias en un IDE si no que tambien pede generarse tambien dentro de flujo CI/CD.
¿Que tan confiable es la generación de sus pruebas unitarias?
En una tabla de comparación con otros generadores de pruebas unitarias Diffblue tiene una cobertura del 94% a comparación de EvoSuite (ver Tabla de resultados)

En resumen no solo se comparó la generación de pruebas sino que tambien se realizó comparación con respecto a instalación, complejidad por clase y paquete. y al obtener un 94% es un candidato para poder utilizarlo.
¿Como utilizo Diffblue?

Antes que nada dejame decirte que Diffblue no es gratis. Pero tienes 14 días para probar en el modo Teams Edition y en el modo CE (community Edition) puedes generar hasta 25 pruebas por día.

Pero si quieres aprovechar pide un trial y podas generar hasta 500 pruebas.
Instalación de Diffblue en IntelliJ
Existe dos opciones como comenté en la sección final la primera que puedes descarga la versión CE (Commity Edition) y la versión Trial de 14 días . ambas son plugins de IntelliJ
Version CE
Esta parte de instalación es muy sencilla, solo debes de instalar el plugin de forma manual y buscar el ZIP o si no puedes buscarlo en la sección plugins.

Trial 14 días
Una vez enviado tus datos y un correo real, llegará la siguiente información que contendrá el plugin a descargar y el Key correspondiente.

La activación puedes hacerla en la barra de menú Diffblue > Activate License y colocar la licencia

Debido a la extensión del post puedes ver las segunda parte en el siguiente enlace (AQUI)


![[Quarkus] - Entendiendo el @Nonblocking (BabySteps)](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fstock%2Funsplash%2FjM7nOw748Ho%2Fupload%2F235aec0da3879c41d9aa08fdde5cbb2d.jpeg&w=3840&q=75)
![[Ubuntu] 24.04 - Instalación VPN FortiClient](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fstock%2Funsplash%2Fa_PDPUPuNZ8%2Fupload%2F1491f93ea77059db4fbe85fd714abe72.jpeg&w=3840&q=75)
![[Ubuntu] - Instalación Zoom sin extensiones (ibus)](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fstock%2Funsplash%2FEh1xd5xDE-s%2Fupload%2F654d53fe3407e98e8c68a7c3798ae4f3.jpeg&w=3840&q=75)