29. Logs, mensajes de error y evidencias para investigar problemas

29.1 Introducción

Cuando una prueba de integración falla, necesitamos evidencia para entender qué ocurrió. Esa evidencia puede estar en logs, mensajes de error, respuestas, estados de base de datos, eventos, archivos generados o capturas del ambiente.

Sin evidencia clara, el diagnóstico se vuelve lento. El equipo puede saber que algo falló, pero no dónde ni por qué.

En este tema veremos cómo usar logs, mensajes de error y evidencias para investigar problemas de integración de forma más efectiva.

29.2 Qué es evidencia en pruebas de integración

La evidencia es cualquier información observable que ayuda a confirmar qué hizo el sistema durante la prueba.

Puede incluir:

  • Logs de aplicación.
  • Mensajes de error.
  • Respuestas de servicios.
  • Registros en base de datos.
  • Mensajes publicados en colas.
  • Archivos generados.
  • Datos enviados a servicios simulados.
  • Identificadores de operación.
Una buena evidencia permite reconstruir el recorrido de la integración sin depender solo de suposiciones.

29.3 Logs útiles

Un log útil no es simplemente una gran cantidad de texto. Es información relevante para entender una operación.

Un buen log puede indicar:

  • Qué operación comenzó.
  • Qué componente participó.
  • Qué dependencia fue llamada.
  • Qué respuesta se recibió.
  • Qué error ocurrió.
  • Qué estado final se decidió.

Los logs deben ser claros, pero no deben exponer secretos ni datos sensibles innecesarios.

29.4 Niveles de log

Los sistemas suelen manejar distintos niveles de log. Usarlos correctamente ayuda a separar información normal de problemas reales.

Nivel Uso habitual Ejemplo
Debug Detalles para investigación técnica. Datos principales de una solicitud interna.
Info Eventos normales importantes. Orden creada correctamente.
Warn Situación anormal, pero controlada. Proveedor externo no respondió y se reintentará.
Error Falla que impidió completar una operación. No se pudo registrar el pago.

29.5 Identificadores de correlación

Un identificador de correlación permite seguir una operación a través de varios componentes. Es especialmente útil cuando una integración involucra servicios, colas o procesos asíncronos.

Por ejemplo, una compra puede tener un identificador que aparezca en:

  • La solicitud inicial.
  • Los logs del servicio de compras.
  • La llamada al proveedor de pagos.
  • El evento publicado.
  • El consumidor de notificaciones.
  • Los registros finales en base de datos.

Sin un identificador común, reconstruir el flujo puede ser mucho más difícil.

29.6 Mensajes de error claros

Un mensaje de error debe ayudar a entender qué ocurrió. No siempre debe mostrar detalles técnicos al usuario, pero sí debe permitir que el equipo investigue.

Un buen mensaje de error interno debería indicar:

  • Qué operación falló.
  • Qué dependencia estuvo involucrada.
  • Qué tipo de error ocurrió.
  • Si el error fue esperado o inesperado.
  • Qué identificador permite buscar más evidencia.

Mensajes como “error general” o “algo salió mal” son insuficientes para diagnosticar integraciones complejas.

29.7 Evidencia de base de datos

Cuando una integración modifica datos, la base de datos puede ofrecer evidencia fundamental.

Conviene revisar:

  • Registros creados.
  • Registros modificados.
  • Estados finales.
  • Relaciones entre entidades.
  • Marcas de auditoría.
  • Ausencia de registros que no deberían existir.

La prueba puede incluir consultas de verificación para confirmar el estado final sin depender de inspección manual.

29.8 Evidencia de servicios simulados

Los servicios simulados no solo devuelven respuestas. También pueden registrar qué solicitudes recibieron.

Esto permite verificar:

  • Qué endpoint o método fue llamado.
  • Qué datos se enviaron.
  • Qué encabezados o credenciales se usaron.
  • Cuántas veces se llamó a la dependencia.
  • Si hubo reintentos.
  • Si se enviaron datos que no correspondían.

Esta evidencia ayuda a diagnosticar errores de contrato, duplicados y configuración.

29.9 Evidencia de colas y eventos

En integraciones asíncronas, la evidencia puede estar en mensajes publicados, mensajes consumidos o mensajes enviados a una cola de errores.

Conviene observar:

  • Tipo de evento.
  • Contenido del mensaje.
  • Identificador de correlación.
  • Momento de publicación.
  • Estado de consumo.
  • Mensajes duplicados o pendientes.

Una prueba asíncrona debe poder distinguir entre “no se publicó”, “se publicó mal” y “se publicó bien pero no se consumió”.

29.10 Evidencia de archivos

Si una integración genera o procesa archivos, el archivo mismo es evidencia.

La prueba puede conservar o verificar:

  • Nombre del archivo.
  • Ubicación.
  • Tamaño.
  • Contenido.
  • Formato.
  • Errores de lectura o escritura.

Cuando una prueba falla por un archivo inválido, conservar una copia temporal puede facilitar el diagnóstico.

29.11 Capturar entrada y salida

Para diagnosticar una integración, muchas veces necesitamos saber qué entró y qué salió de cada componente.

Esto puede incluir:

  • Datos de entrada del caso.
  • Solicitud enviada a un servicio.
  • Respuesta recibida.
  • Mensaje publicado.
  • Archivo generado.
  • Estado final consultado.

La captura debe ser suficiente para investigar, pero debe evitar exponer datos sensibles o secretos.

29.12 Evidencia y datos sensibles

Guardar evidencia no significa registrar todo sin filtro. Las pruebas pueden manejar contraseñas, tokens, correos, documentos, importes o datos personales.

Cuidados importantes:

  • No imprimir tokens completos.
  • No registrar contraseñas.
  • Enmascarar datos personales si no son necesarios.
  • Usar datos ficticios en pruebas.
  • Evitar conservar archivos con información sensible real.
  • Limitar acceso a evidencias cuando corresponda.

La evidencia debe ser útil y segura al mismo tiempo.

29.13 Evidencia automática en fallas

Una buena suite puede capturar información adicional cuando una prueba falla. Esto reduce el tiempo necesario para investigar.

Ejemplos:

  • Mostrar últimos logs relevantes.
  • Guardar respuesta recibida.
  • Listar mensajes de una cola de prueba.
  • Mostrar registros creados por el caso.
  • Conservar archivo generado.
  • Indicar variables de configuración importantes sin secretos.

Esta evidencia automática debe estar enfocada en el escenario, no ser una descarga masiva de información difícil de leer.

29.14 Ejemplo: pago rechazado

Supongamos una prueba donde un pago rechazado deja la orden como pagada por error. Para investigar, necesitamos evidencia como:

Evidencia Qué ayuda a entender
Respuesta del proveedor simulado Confirma que el pago fue rechazado.
Logs del servicio de compras Muestra cómo se interpretó la respuesta.
Estado de la orden en base de datos Confirma el estado final incorrecto.
Eventos publicados Indica si se publicó un evento de compra confirmada indebidamente.
Identificador de correlación Permite unir toda la evidencia de la misma operación.

29.15 Ejemplo: evento no consumido

Si un evento se publica pero el consumidor no genera el resultado esperado, conviene reunir:

  • Contenido exacto del evento publicado.
  • Canal o cola donde se publicó.
  • Logs del consumidor.
  • Estado de mensajes pendientes o fallidos.
  • Errores de deserialización o validación.
  • Estado final esperado y obtenido.

Esta evidencia permite distinguir si el problema fue de publicación, transporte, contrato o consumo.

29.16 Errores comunes

Al trabajar con logs y evidencias, suelen aparecer errores como:

  • No registrar identificadores de operación.
  • Guardar demasiada información irrelevante.
  • No registrar el estado final.
  • Mostrar mensajes de error genéricos.
  • Exponer secretos o datos sensibles.
  • No conservar evidencia cuando la prueba falla.
  • Registrar en distintos componentes sin forma de correlacionar.

29.17 Lista de verificación

Para mejorar evidencia en pruebas de integración, podemos revisar:

  • ¿La prueba muestra qué esperaba y qué obtuvo?
  • ¿Existe identificador de correlación?
  • ¿Los logs indican qué dependencia falló?
  • ¿Se puede revisar el estado final?
  • ¿Se capturan respuestas o mensajes relevantes?
  • ¿La evidencia evita exponer secretos?
  • ¿La información capturada ayuda a diagnosticar sin revisar manualmente todo el sistema?

29.18 Qué debes recordar de este tema

  • La evidencia permite reconstruir qué hizo el sistema durante una prueba.
  • Los logs útiles son claros, relevantes y seguros.
  • Los identificadores de correlación ayudan a seguir una operación entre componentes.
  • Base de datos, colas, archivos y servicios simulados también aportan evidencia.
  • Los mensajes de error deben ayudar a investigar, no solo indicar que algo falló.
  • La evidencia debe proteger datos sensibles y secretos.

29.19 Conclusión

Los logs, mensajes de error y evidencias son herramientas esenciales para investigar fallas de integración. Una prueba fallida debe entregar información suficiente para entender qué ocurrió y dónde comenzar el análisis.

Una suite madura no solo ejecuta pruebas: también ayuda a diagnosticar cuando algo falla.

En el próximo tema veremos automatización básica de pruebas de integración.