QaQatua

Hace unas semanas le eché una mano a un amigo QA, Oscar Islas, a "aterrizar" una idea con la que andaba trabajando y que me resultó muy atractiva desde el primer momento.

Como QA muchas veces tienes que preparar flujos de pruebas contra servicios que manejan información "sensible", por ejemplo "cuenta bancaria", "password", etc.

Algunos de estos servicios requieren el uso de criptografía de tal forma que estos campos van encriptados junto con el resto y a su vez son devueltos encriptados.

De cara al desarrollo no deja de ser "una capa más". Quiero decir, cuando desarrollo mi programa para enviar/recibir estos payloads, configuro mi aplicación con las claves publicas/privadas que el admin del entorno me proporcione y con unas cuantas líneas de código encripto/desencripto los mensajes.

El trabajo del QA es más laborioso. Debe preparar juegos de prueba que contemplen todos los escenarios así que le toca o bien pregenerar los mensajes o incluir algun tipo de librería que le haga lo mismo que hace el programador lo cual tampoco es fácil

Oscar Islas se enfrenta casi a diario a este tipo de situaciones. Como usa Postman pudo desarrollar una pequeña librería Groovy que embeber a la que invoca para que le haga el trabajo de encriptar/desencriptar payloads.

Tras echarle una mano revisando y poniendo a punto la librería Groovy se nos ocurrió que esta funcionalidad podría ser una buena herramienta para la comunidad y así comenzamos QaQatua (un giño a QA y a la funcionalidad que implementa que no deja de ser una cacatua que repite lo que le dices)

Idea

Básicamente QaQatua es una aplicación web que, tras configurarla, permite transformar las partes de un payload que le indiques tanto para encriptar como para desencriptar.

Así pues el "flujo" de un usuario (QA principalmente) sería:

  • preparar una prueba con datos "en claro"

  • invocar al endpoint QaQatua de encriptación, el cual le devolverá el payload transformado

  • invocar al servicio con el payload obtenido de la llamada a QaQatua

  • invocar al endpoint QaQatua de desencriptación, el cual le devolverá el payload transformado

  • validar que los campos retornados, ya "en claro", son los esperados

Usando Postman, SoapUI, o simple scripts con curl el uso es sencillo y evita tener que añadir dependencias a la herramienta

QaQatua

QaQatua permite a un usuario registrarse en el sistema mediante email/password.

Una vez identificado, el usuario puede crear hasta 3 proyectos, proporcionando un nombre identificativo a cada uno.

Cada proyecto consta de los siguientes campos:

  • fields, una lista de campos, separados por comas, a modificar en los payloads.

  • priv/pub keys, una pareja de clave pública/privada para operar con el payload.

Si el usuario no quiere "complicarse" con la gestión de claves puede solicitar a QaQatua que genere un juego de claves.

En cualquier caso estos tres campos son editables en todo momento por lo que puede empezar a diseñar sus casos de prueba y posteriormente proporcionar las claves que requiera el servicio a invocar.

Así mismo, al permitir más de un proyecto, es fácil crear casos de pruebas donde intervienen más de un servicio cada uno con claves diferentes.

Api

QaQatua ofrece un API realmente sencillo:

  • /api/projects:

    • get

    • post

    • put

    • delete

  • /api/encrypt:

    • post

  • /api/decrypt:

    • post

Además de contar con un interface Web, el api de projects permite la gestión vía REST

Los endpoints de encrypt/decrypt son altamente configurables y permiten especificar qué proyecto usar en cada petición (si el usuario tiene sólo un proyecto se usa por defecto) e incluso añadir fields a usar en una petición específica

Conclusion

En los próximos posts iremos contando más detalles de este proyecto, como tecnología usada, casos de éxito, nuevas funcionalidades, etc.

Este texto ha sido escrito por un humano

This post was written by a human

2019 - 2025 | Mixed with Bootstrap | Baked with JBake v2.6.7 | Terminos Terminos y Privacidad