Testing de APIs con Bruno: Tutorial Completo para QA Testers

Descubre Bruno, la alternativa open source a Postman para testing de APIs. Tutorial completo con ejemplos prácticos y casos de uso reales para equipos QA.

¿Qué es Bruno y por qué usarlo en QA?

Bruno es una herramienta de testing de APIs open source que está ganando popularidad como alternativa a Postman. Desarrollada con tecnología moderna, Bruno se destaca por ser completamente gratuita, no requerir cuenta obligatoria y almacenar los datos localmente en tu equipo, garantizando privacidad total.

A diferencia de Postman, Bruno utiliza un formato de archivo plano llamado Bru que es compatible con Git, facilitando la colaboración en equipo y el versionado de tus colecciones de APIs. Esto la convierte en una opción ideal para equipos de QA que buscan integrar el testing de APIs en sus flujos de CI/CD.

Prerrequisitos

Antes de comenzar con Bruno, necesitarás:

  • Conocimientos básicos de APIs REST y métodos HTTP
  • Experiencia previa con herramientas de testing de APIs (Postman, Insomnia, etc.)
  • Una API de prueba para practicar (usaremos JSONPlaceholder)
  • Git instalado en tu sistema (opcional, pero recomendado)

Instalación de Bruno

Bruno está disponible para Windows, macOS y Linux. Puedes descargarlo desde su sitio oficial o instalarlo usando gestores de paquetes:

Paso 1: Descarga e Instalación

Opción A: Descarga directa

Ve a usebruno.com y descarga la versión correspondiente a tu sistema operativo.

Opción B: Usando Homebrew (macOS)

brew install bruno

Opción C: Usando Chocolatey (Windows)

choco install bruno

Paso 2: Primera Ejecución

Una vez instalado, abre Bruno. Notarás inmediatamente la interfaz limpia y moderna, similar a Postman pero con un enfoque más minimalista.

Creando tu Primera Colección

Paso 3: Crear Nueva Colección

1. Haz clic en “Create Collection”

2. Nombra tu colección: “API Testing QA”

3. Selecciona una carpeta en tu sistema donde Bruno guardará los archivos

Bruno creará automáticamente una estructura de carpetas con archivos .bru que puedes versionar con Git.

Paso 4: Tu Primera Request

Vamos a crear una request GET básica usando la API de JSONPlaceholder:

1. Haz clic derecho en tu colección y selecciona “New Request”

2. Nombra la request: “Get All Users”

3. Configura la request:

Method: GET
URL: https://jsonplaceholder.typicode.com/users

4. Haz clic en “Send”

Deberías recibir una respuesta JSON con una lista de usuarios. Bruno mostrará automáticamente el código de estado, tiempo de respuesta y el cuerpo formateado.

Testing Avanzado con Bruno

Paso 5: Agregando Tests y Assertions

Bruno incluye un sistema de tests integrado usando JavaScript. En la pestaña “Tests” de tu request, agrega:

test('Status code should be 200', function() {
  expect(res.getStatus()).to.equal(200);
});

test('Response should be an array', function() {
  expect(res.getBody()).to.be.an('array');
});

test('First user should have required fields', function() {
  const users = res.getBody();
  expect(users[0]).to.have.property('name');
  expect(users[0]).to.have.property('email');
  expect(users[0]).to.have.property('username');
});

Paso 6: Usando Variables y Environments

Bruno maneja variables de manera similar a Postman. Crea un environment:

1. Ve a “Environments” en el panel izquierdo

2. Crea un nuevo environment llamado “Testing”

3. Agrega variables:

baseUrl: https://jsonplaceholder.typicode.com
userId: 1

4. Modifica tu request para usar variables:

URL: {{baseUrl}}/users/{{userId}}

Paso 7: Request POST con Datos

Creemos una request POST para crear un nuevo usuario:

1. Nueva request: “Create User”

2. Configuración:

Method: POST
URL: {{baseUrl}}/users
Headers:
  Content-Type: application/json

3. Body (JSON):

{
  "name": "Jorge Escorcia",
  "username": "jorgeqa",
  "email": "jorge@mundoqa.com",
  "address": {
    "street": "QA Street",
    "suite": "Suite 123",
    "city": "Bogotá",
    "zipcode": "110111"
  }
}

4. Tests para POST:

test('User created successfully', function() {
  expect(res.getStatus()).to.equal(201);
});

test('Response contains created user data', function() {
  const user = res.getBody();
  expect(user).to.have.property('name', 'Jorge Escorcia');
  expect(user).to.have.property('email', 'jorge@mundoqa.com');
});

Casos de Uso Reales en Proyectos QA

Caso 1: Testing de Autenticación

Para APIs que requieren autenticación, Bruno maneja tokens de manera eficiente:

// En Pre-request Script
const loginResponse = await bru.post({
  url: '{{baseUrl}}/auth/login',
  body: {
    username: 'admin',
    password: 'password123'
  }
});

const token = loginResponse.data.token;
bru.setVar('authToken', token);

Luego usa el token en headers:

Authorization: Bearer {{authToken}}

Caso 2: Testing de Flujos Completos

Bruno permite crear flujos de testing secuenciales:

1. Login → Obtiene token

2. Create Resource → Usa token para crear

3. Get Resource → Verifica creación

4. Update Resource → Modifica datos

5. Delete Resource → Limpia datos

Caso 3: Integración con CI/CD

Bruno CLI permite ejecutar colecciones en pipelines:

# Instalar Bruno CLI
npm install -g @usebruno/cli

# Ejecutar colección
bru run collection-path --env testing

Comparación con Postman

Ventajas de Bruno:

  • Open Source y Gratuito: Sin limitaciones de requests
  • Local First: Datos almacenados localmente
  • Git Friendly: Archivos planos versionables
  • No requiere cuenta: Funciona offline completamente
  • Rendimiento: Más liviano que Postman

Consideraciones:

  • Ecosistema más pequeño que Postman
  • Menos integraciones de terceros
  • Comunidad en crecimiento

Mejores Prácticas para QA

1. Organización de Colecciones

API-Testing/
├── environments/
│   ├── dev.bru
│   ├── staging.bru
│   └── prod.bru
├── auth/
│   └── login.bru
├── users/
│   ├── get-users.bru
│   ├── create-user.bru
│   └── delete-user.bru
└── bruno.json

2. Naming Conventions

  • Usa nombres descriptivos para requests
  • Agrupa requests por funcionalidad
  • Prefija con números para orden de ejecución

3. Documentación

Bruno permite agregar documentación en formato Markdown a cada request, facilitando el mantenimiento del equipo.

Conclusión y Próximos Pasos

Bruno representa una excelente alternativa a Postman para equipos QA que valoran la privacidad, el control local de datos y la integración con Git. Su enfoque open source y su arquitectura moderna lo convierten en una herramienta prometedora para el futuro del testing de APIs.

Próximos Pasos Recomendados:

  1. Practica con APIs reales: Aplica Bruno en tus proyectos actuales
  2. Explora Bruno CLI: Integra testing automatizado en tus pipelines
  3. Colabora en equipo: Configura repositorios Git para compartir colecciones
  4. Contribuye al proyecto: Bruno es open source y acepta contribuciones
  5. Mantente actualizado: Sigue el desarrollo en GitHub para nuevas features

Como QA Testers, adoptar herramientas modernas y eficientes como Bruno nos permite enfocarnos en lo importante: garantizar la calidad del software. La curva de aprendizaje es mínima si ya usas Postman, pero los beneficios a largo plazo son significativos.

¿Has probado Bruno en tus proyectos? ¿Qué otras alternativas a Postman recomendarías? Comparte tu experiencia en los comentarios.


¿Te resultó útil este artículo?

Compártelo con otros QA Testers hispanohablantes.
Si tienes preguntas o quieres profundizar en algún tema,
escríbeme — estoy aquí para ayudarte.

JEscorcia
JEscorcia