# Pruebas unitarias en Quarkus generadas con Diffblue (Parte  I)

# 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:

1. Implementación de código en base a las funcionalidades y casos requeridos
    
2. 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?

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1693535811900/040d11f6-c27f-4b4f-a555-27a038da7995.png align="center")

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)

![A comparison table for the various features of Diffblue Cover, EvoSuite, Randoop and SquareTest](https://www.diffblue.com/images/blog/screenshot-2020-01-07-at-4-56-31-pm.png?_cchid=324ec9cbda281b0f4a842e8340d85cb1 align="center")

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?

![Payment GIF - Conseguir el mejor gif en GIFER](https://i.gifer.com/8m3H.gif align="center")

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**.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1693537044298/5b3a3cb4-a230-488f-a8c2-3cd95fb198f2.png align="center")

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](https://www.diffblue.com/community-edition/download/)) y la versión [**Trial de 14 días**](https://www.diffblue.com/try-cover) . 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.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1693662485217/5aa95ed6-21fc-4bf1-9e28-922c2d48605c.png align="center")

### 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.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1693663044839/8fe4d0bd-7eec-470c-ab1d-19f91d4daea4.png align="center")

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

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1693663183555/0ab0c278-7fe2-48c3-9c76-0fb308092c8b.png align="center")

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