Existen varias aplicaciones orientadas a la ejecución de pruebas de APIs. Una de las más populares, por derecho propio, porque lleva años en el mercado y tiene una comunidad de usuarios detrás muy importante, es Postman, de la que hemos hablado varias veces en este blog: os hemos contado cómo gestionar y construir tus APIs rápidamente y también hemos hablado de Newman y cómo ejecutar colecciones Postman desde línea de comandos.

En el otro lado de esta balanza está Bruno, una aplicación relativamente reciente cuya primera versión fue liberada en octubre de 2022. El motivo de hacer la comparativa entre una herramienta con tanto uso y conocida con una tan reciente es porque Bruno está claramente orientado a ser un reemplazo de código abierto y sin “cosas subidas a la nube sin necesidad” de Postman.

En gran medida, copia características y nomenclatura como forma de allanar el camino de migración desde una herramienta a la otra.

Comparativa de características

Característica Postman Bruno
Web del proyecto Postman Bruno
Licencia Propietario (algunas partes con licencia Apache-2.0) MIT
Creación de usuario Necesario para usar la aplicación No
Tipo de cliente Web, GUI, Consola GUI
Sistemas Operativos Linux, Mac y Windows Linux, Mac y Windows
Colaborativo Sí, asociando usuarios a un proyecto Sí, con un gestor de Código (Git, Mercurial, SVN…)
Características de pago Sí, desde 14$ mes/usuario No, aunque en un futuro añadirán nuevas características de pago (12$ año)
Planes No hay límite para las ejecuciones manuales Básico -> 25 ejecuciones colección/mes Profesional -> 250 ejecuciones colección/mes No hay límite de ejecuciones por mes.

Instalación

Aquí empiezan los puntos a favor de Bruno.

Vistazo al entorno de trabajo

Ambas funcionan de una forma similar. Bruno copia nomenclatura y forma de trabajar porque su intención claramente es ser un sustituto de código abierto y “de cielo despejado” de Postman.

En ambos casos, debemos crear una colección para empezar a trabajar. Bruno nos pide un nombre y un path donde va a guardar los ficheros. Postman además de un nombre, nos pregunta si va a ser una colección privada, colaborativa o empresarial. Aquí aparece la primera gran diferencia:

La estructura de organización de las peticiones vuelve a ser idéntica en ambos casos. Cada colección se compone de carpetas y de peticiones que organizaremos a nuestro gusto.

En ambos casos, podemos configurar entornos de trabajo donde podemos definir variables con valores por defecto. Esto nos permite lanzar una misma colección en diferentes entornos (desarrollo, preproducción, producción, etc.). Estas variables pueden ser de dos tipos: normales o secretas.

Postman con un ejemplo del API de AEMET.
Postman con un ejemplo del API de AEMET.
Bruno con el mismo ejemplo del API de AEMET.
Bruno con el mismo ejemplo del API de AEMET.

Casi toda la funcionalidad es similar. En ambos casos, se pueden configurar parámetros en las peticiones; Postman permite muchos más formatos de autorización en las peticiones; Bruno de momento se limita a Bearer Token, Basic y AWS, permiten enviar cabeceras, indicar un cuerpo de la petición en varios formatos, ejecutar scripts previos a la petición y realizar tests con los datos obtenidos.

Bruno tiene aún algunas funcionalidades bastante básicas en desarrollo y, por tanto, no disponibles aún.

Ejecución de colecciones

Podemos ejecutar las colecciones en ambas aplicaciones de forma muy parecida. Existen diferencias en cómo se realiza el proceso, siendo más sencillo en Bruno, que por defecto persiste los datos, pero no permite indicar el número de iteraciones que queremos realizar.

Postman tiene como clara ventaja la posibilidad de ejecutar las colecciones de forma iterativa, pudiendo realizar la misma secuencia de peticiones múltiples veces desde el entorno gráfico.

Entorno de programación

Ambas aplicaciones usan JavaScript. Si bien el entorno de Postman es más completo, pues tiene una autoayuda que te sugiere funciones y variables disponibles, algo que se echa mucho de menos en Bruno.

Obteniendo los datos y guardándolos en una variable en Postman.
Obteniendo los datos y guardándolos en una variable en Postman.
Obteniendo datos de la respuesta de una petición y guardándolos en una variable en Bruno.
Obteniendo datos de la respuesta de una petición y guardándolos en una variable en Bruno.

Integración con entornos CI/CD

Ambas aplicaciones tienen un sistema de ejecución de colecciones por línea de comandos. En el caso de Postman se hace mediante Newman y en el caso de Bruno, mediante Bruno-cli. En ambos casos nos permite integrar nuestras pruebas de APIs dentro del proceso de CI/CD.

Valoración final

No cabe duda de que Postman es una aplicación más completa y mucho más madura, con algunas utilidades como la monitorización que no están disponibles en Bruno. Bruno tiene algunas deficiencias aún para llegar al mismo nivel en cuanto a la ejecución de pruebas y a las distintas características que podemos necesitar a la hora de probar algunas API/REST.

En la parte del trabajo del día a día, Bruno es más ligero y está orientado al trabajo en repositorios de código (Git, Mercurial…) que es algo que ha perdido Postman con su filosofía de “todo en la nube”. El hecho de no tener que crearnos un usuario para poder ejecutar pruebas de nuestra API es también un plus a favor de Bruno.

Si estás pensando en migrar de Postman a otra aplicación, valora Bruno siendo consciente de que tal vez te falte alguna funcionalidad que estás necesitando. Échale un vistazo y dedícale tiempo antes de tirarte a la piscina. Si lo que quiere hacer es empezar de cero con pruebas básicas de una API, Bruno es una alternativa realmente buena y que merece la pena.

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete

Estamos comprometidos.

Tecnología, personas e impacto positivo.