Nuestra experiencia migrando Postman a Bruno

En el mundo del testing de APIs, elegir la herramienta adecuada puede marcar la diferencia en la colaboración y eficiencia del equipo. En este post, comparto nuestra experiencia migrando la colección de Postman a Bruno, una alternativa más ligera y flexible que nos permitió optimizar la gestión de nuestras colecciones.

En nuestro día a día las pruebas de API forman un papel fundamental y se pueden realizar con muchas tecnologías, yo particularmente soy muy partidario de usar tecnologías más programáticas como puede ser Rest Assured, pero concretamente para este proyecto, necesitábamos una herramienta que guiara a las personas que no están tan acostumbradas a realizar pruebas en código, por lo que empezamos a trabajar con Postman.

¿Por qué nos planteamos un cambio?

Postman al ser una herramienta más visual, facilitó mucho que todo el equipo de desarrollo se involucrara en el mantenimiento de las pruebas. Pero el problema surgió cuando empezamos a trabajar todos sobre la colección de Postman. Postman ofrece colaboración en su nube, pero esto no encajaba con la manera de trabajar del equipo, ya que todo nuestro ecosistema está montado sobre Git. La gestión de la colección de Postman vía repositorio, resultó ser una carga para el equipo. Empezaron a surgir muchos problemas con los mergeos y pérdidas de información. Por lo que necesitábamos otra opción para poder trabajar más cómodamente.

Tras darle unas vueltas un compañero, me habló de Bruno y después de investigar un poco me pareció una opción muy interesante como herramienta a la que migrar.

Nuestra experiencia con Bruno

Cuando empezamos a probar Bruno, lo primero que sentí fue un alivio. Sin necesidad de iniciar sesión y sin depender de la nube. Abres Bruno y ya estás dentro, listo para trabajar. Es rápido, ligero y directo al grano.

La primera gran diferencia con Postman y que nos hizo plantearnos seriamente Bruno, es que aquí todo se guarda en archivos locales, por lo que versionar colecciones con Git es tan natural como cualquier otro código del proyecto, evitando problemas de mergeos y solucionando los conflictos rápidamente. Sin embargo con Postman, la gestión en repositorio es inexistente, los que no están atentos, directamente sobreescriben la colección y los que lidian con los cambios, tienen que descargarse la colección actualizada, cargarla en Postman y después añadir los cambios para posteriormente repositarlos.

Otro punto que nos sorprendió es la fluidez en la interfaz, que tiene muchas similitudes con Postman, por lo que el equipo se adaptó fenomenal a la herramienta.

Pero el punto diferencial que nos hizo enamorarnos es que podíamos generar una librería externa de utilidades e importarla en los proyectos donde hubiera colecciones de Bruno. De esta manera podríamos centralizar en la librería aspectos comunes como la gestión del login o la reutilización de aserciones.

En resumen, las impresiones fueron claras: menos ruido y más eficiencia.

¿Cómo migrar de Postman a Burno?

Bruno ofrece la posibilidad de migrar la colección de Postman directamente y he de decir que este proceso lo realiza estupendamente.

Cómo podéis ver en esta imagen Bruno permite importar la colección de diferentes herramientas y nosotros lo usamos para nuestra migración.

A ver, no nos engañemos aunque marques la opción de “Auto translate postman scripts” las funciones del API de Postman no terminan de relacionarse del todo bien con las de su API. Pero lo bueno es que el código se lo lleva tal cual y en el caso de no poder relacionar la función del API de Postman que se esté utilizando, la comenta, para que seas tú quien la sustituya por la función del API de Bruno que necesites o te lo puedas implementar tu.

Para que se entienda mejor cómo funciona Bruno y lo fácil que es trabajar con él, voy a hacer un pequeño recorrido práctico creando una colección desde cero y lanzando una petición a una API pública.

Breve vuelta por Bruno: atrapando datos con la API de Pokémon

Primero hay que descargarse Bruno desde su página oficial.

Creando la primera request

Una vez instalado vamos a crear una colección nueva, que llamaremos Prueba.

Creamos una nueva request:

A continuación realizamos un GET a la siguiente URL: https://pokeapi.co/api/v2/pokemon/pikachu

Cuando la creamos y le damos a ejecutar, nos devolverá todas las características de Pikachu.

Aserciones

Como en Postman también podemos incluir aserciones personalizadas, que veremos su comprobación tras ejecutar la llamada.

Environments

La gestión de los environments es muy similar a la de Postman. Para crear un Environment, en la esquina superior derecha de la aplicación pulsamos en Environment y después en Configure.

Acto seguido creamos un environment, que vamos a llamar DEV. Dentro del environment, creamos la variable base_url, con la url https://pokeapi.co/api/v2/.

Para usarla lo único que tenemos que hacer es introducir el nombre de la variable que queramos entre “{}”, de esta manera {{base_url}}

Gestión de la Colección

Pero la mejor baza que tiene Bruno es la gestión de la colección, hemos añadido la siguiente estructura para mostraros cómo gestiona el proyecto:

En el sistema de ficheros del proyecto, podemos ver que genera ficheros y carpetas acordes a cada llamada y directorio:

De esta manera facilita el trabajo por repositorio permitiendo trabajar sin tener que preocuparse de gestionar un único fichero de colección como es el caso de Postman.

Creamos librería de utilidades

A continuación vamos a realizar una librería sencilla, que luego vais a poder importar en el resto de colecciones de Bruno, esto nos servirá para poder centralizar funcionalidades que queramos disponer en todas nuestras colecciones y así evitamos tener que replicarlas en todas.

Primero creamos un proyecto de node sencillo que tenga los siguientes ficheros:

package.json

index.json

Después en el terminal, nos dirigimos a la ruta donde hemos creado esta librería de custom. Para no publicar esta librería en el registry de npm, vamos a usar npm link, para usarla en local:

Después vamos a situarnos en la carpeta donde tenemos nuestra colección de bruno y creamos el fichero package.json de la colección para importar nuestra librería.

Una vez creado, desde el terminal y en la ruta del proyecto, linkeamos nuestra librería y realizamos un npm link custom-library, seguido de un npm install, para chequear que está todo correcto.

Una vez realizados estos pasos, reiniciamos la herramienta Bruno y tras volver a abrirla, vamos a importar nuestra librería en los test y a validar el status code.

Como podéis ver de una manera muy sencilla es posible utilizar librerías externas creadas por nosotros que nos van a permitir ampliar la capacidad de lo que nos ofrece Bruno con total flexibilidad. Esto fue un punto clave en la migración permitiéndonos optimizar la gestión de elementos reutilizables y mejorar la mantenibilidad de nuestros tests.

CLI para ejecución en terminal

El CLI es muy sencillo de utilizar, solo tenéis que instalarlo en la consola, siguiendo los pasos que pone en su página. En esta misma página tenéis una guía de uso con bastantes ejemplos.

Para terminar con el ejemplo, con el siguiente comando podemos lanzar nuestra colección.

bru run filename/dirname –env environmentName

Conclusión: Nuestra experiencia migrando a Bruno

Gracias a la migración a Bruno pudimos solventar el mayor impedimento que teníamos con Postman: la gestión de nuestras colecciones de APIs. El poder manejar colecciones como archivos independientes, nos permitió realizar revisiones en los pull request, poder auditar los cambios y mejorar la colaboración entre los equipos.

Pero la herramienta nos sorprendió con creces y la flexibilidad que ofrece no la había encontrado en ninguna herramienta hasta la fecha. El importar cualquier librería externa e incluso haber podido hacer una librería de utilidades y poderla incorporar de una manera tan sencilla nos ha permitido agilizar el desarrollo de las pruebas.

Si estás considerando migrar, nuestra experiencia nos dice que el cambio vale la pena. Bruno no solo simplifica la gestión de APIs, sino que también potencia el control y la eficiencia en equipos de desarrollo.

Compartir:

Artículos relacionados

Rol del QA Lead

La transformación digital de las empresas ha hecho crecer la demanda de perfiles IT. Los cambios en los procesos y metodologías de trabajo han supuesto retos que han abierto la

Leer más »