Union54
Union54 es una startup de tecnología financiera que ofrece servicios de emisión de tarjetas para empresas en África. Su API RESTful permite a las empresas de tecnología financiera emitir tarjetas de débito virtuales y físicas programables por sí mismas, sin necesidad de un banco o un procesador externo.
Todos los clientesPruebas de aplicaciones web
Con nuestro soporte profesional, las empresas pueden estar seguras de que sus soluciones web, incluidas las API web, se comportan según lo previsto. Ayudamos a Union54 a probar exhaustivamente su API RESTful para asegurarnos de que da el resultado deseado, tiene controles de autenticación y acceso adecuados, así como funciona bien.
Más informaciónPruebas automatizadas
Ayudamos a Union54 a construir y automatizar un conjunto completo de regresión que es estable, escalable y fácil de mantener. Nuestros ingenieros de control de calidad cubrieron el 90 % de los puntos finales de la API con automatización de pruebas y continúan automatizando nuevos escenarios de activación de bases de datos y funcionalidad de front-end.
Más informaciónIntroducción
Union54 es una escisión de Zazu, el banco contrincante de África al que se le otorgó la Membresía principal de Mastercard. Tras comprobar la falta de cooperación y los procesos heredados de los bancos africanos, los fundadores de Zazu idearon una solución que ayudó a otras empresas de tecnología financiera a acelerar el proceso de emisión de tarjetas. Con Union54, la producción y emisión de tarjetas tarda de tres a nueve días.
Las API de Union54 permiten a las empresas emitir tarjetas de débito físicas y virtuales, financiar tarjetas en cualquier moneda, programarlas según las preferencias de cada uno, utilizar una plataforma de gestión de tarjetas para diversas actividades de banca digital, entre otras funciones.
Desafío
Cooperar con Union54 no ha sido más que un placer: ya estábamos familiarizados con su equipo, flujos de trabajo y estándares de calidad gracias al proyecto Zazu.
Estos son algunos de los aspectos más importantes que se nos exigió cumplir:
- Restricciones de tiempo. Dado que Union54 participó en el lote de verano de Y Combinator, tuvieron aproximadamente dos meses para entregar un MVP en pleno funcionamiento antes de presentarlo a una audiencia seleccionada de inversores y prensa el día de la demostración. Por nuestra parte, éramos responsables de las pruebas oportunas de los puntos finales de la API a medida que se iban construyendo.
- Estabilidad de la automatización de pruebas. Los proyectos de tecnología financiera como Union54 no pueden prescindir de la automatización de pruebas. Tales soluciones requieren una cantidad doble de esfuerzo de prueba, y las pruebas manuales por sí solas no proporcionarán una cobertura del escenario de prueba del 100 %. Nuestra tarea consistía en desarrollar una serie de automatización de pruebas estable que fuera completa y fácil de mantener y escalar.
- Falta de la interfaz de usuario. Nuestro cliente buscaba ingenieros de control de calidad altamente técnicos capaces de probar puntos finales de API sin una interfaz de usuario. Este requisito no supuso un reto para nosotros, ya que contamos con un equipo de expertos capacitados en pruebas de API.
Las soluciones de empresas de tecnología financiera como Union54 no toleran ningún descuido, por lo que compartimos la responsabilidad del éxito del proyecto desde el primer día.
Solución
Para garantizar una cobertura suficiente de las pruebas desde las primeras etapas de desarrollo y cumplir con los plazos, decidimos combinar la automatización de pruebas con las pruebas manuales. Tal asignación de recursos nos permitió automatizar alrededor del 90 % de los escenarios de prueba relacionados con los puntos finales y los activadores de bases de datos más esenciales.
El probador manual, por otro lado, escribe escenarios de prueba positivos y negativos, que luego son revisados
Otro aspecto que sienta las bases para una estrategia exitosa de automatización de pruebas es la elección correcta de los marcos de prueba. Para las pruebas manuales, confiamos en Postman, ya que esta herramienta está diseñada específicamente para las pruebas de API y facilita la prueba de aplicaciones sin interfaz, precisamente con lo que estábamos tratando. Los scripts de automatización de pruebas se escribieron con Cypress, lo que es adecuado para proyectos de automatización de pruebas en constante crecimiento como Union54.
Probamos los puntos finales de la API a medida que se construían, por lo que nuestro plan de prueba incluía probar nuevas funciones, integración y pruebas de regresión.
Automatización de pruebas
La estabilidad de la automatización de pruebas es el principal desafío para cualquier ingeniero de automatización de control de calidad. ¿Por qué es tan importante? Validar qué pruebas fallaron debido a errores o cambios en el código y qué pruebas son el resultado de un entorno inestable es la práctica diaria de un ingeniero de automatización de control de calidad. Si las pruebas automatizadas son inestables, el número de falsos positivos seguirá aumentando a medida que el proyecto crezca. Como resultado, se pierde una enorme cantidad de tiempo en filtrar los falsos positivos de las pruebas realmente fallidas.
Antes de que empezáramos a trabajar en el proyecto, el equipo de Union54 ya había escrito un par de pruebas con el marco Mocha, así que decidimos intentarlo. A medida que los nuevos escenarios de prueba se volvían más elaborados y las series de prueba aumentaban de tamaño, notamos problemas de estabilidad significativos y comunicamos nuestras preocupaciones a nuestro cliente. Para resolver este problema, cambiamos a un marco diferente, reescribimos todas las pruebas existentes en Cypress y las colocamos en un repositorio separado.
Acordamos en eligir Cypress debido a los numerosos beneficios que ofrece. Cypress le permite reintentar automáticamente las pruebas fallidas y establecer un número personalizado de reintentos, ya sea para todas las pruebas o solo para una específica. Esta característica es muy útil para reducir la inestabilidad de las pruebas y las fallas de compilación de CI causadas por la falta de disponibilidad temporal de servicios de terceros o por errores de red aleatorios. Otras ventajas de Cypress son los patrones lógicos y directos, la alta legibilidad de los escenarios de prueba y el código escalable; los patrones ya escritos se pueden reutilizar en futuras pruebas. Cypress también es una buena opción para ejecutar escenarios de prueba complejos y de varios pasos.
La CI para las pruebas automatizadas se implementa con la ayuda de Bitbucket Pipeline. Todas las noches, a las 2 de la madrugada, los últimos commits (protocolos en dos fases) de la rama de desarrollo se introducen en el pipeline de CI. Por lo tanto, nuestras pruebas cubren todos los cambios en el código base, incluso si los desarrolladores trabajan hasta altas horas de la noche. Gracias a la integración de Bitbucket con Slack, recibimos notificaciones instantáneas de todos los commits, pull requests y estados de los pipelines, tanto exitosos como fallidos.
Una ejecución de prueba completa que incluye 1500 escenarios de prueba en el pipeline de CI toma alrededor de 1.5 horas, lo cual es bastante decente, considerando la complejidad y el número del escenario de prueba. Una vez conseguida la estabilidad de las pruebas automatizadas, vemos una imagen clara todas las mañanas, dedicando un tiempo mínimo a la resolución de problemas.
A medida que se añaden nuevas capacidades al sitio web de Union54, también cubrimos la parte del front-end con pruebas funcionales automatizadas.
Errores encontrados
Todos los errores críticos que encontramos nunca llegaron al entorno de producción gracias a una completa serie de automatización de pruebas respaldada por pruebas manuales. La mayoría de los problemas que encontramos se referían a excepciones no tratadas o tratadas incorrectamente, autorización incorrecta de varios tipos de usuarios, contenidos incorrectos del objeto de respuesta y ausencia de algunos atributos en la base de datos.
Resultado real: Datos en respuesta: “balance”: 0, “status”: “issued”, Actual data in DB: “balance”: 100, “status”: “stopped”, (ya que se ha modificado el saldo y el estado de la tarjeta)
Resultado esperado: Los datos de la respuesta son iguales a los reales (ya que funciona si sólo se proporciona el parámetro de consulta “tarjeta”).
Resultado real: Código de respuesta 1 Aprobado, se escribe una nueva TRANSACTION_CARD en la tabla de DB con un monto flotante de 15.577777.
Resultado esperado: Código de respuesta -19 (monto no válido), no se escribió ninguna entrada nueva de TRANSACTION_CARD en la tabla de DB.
Resultado real: Respuesta 400 Error de validación, mensaje “message”: “la tarjeta se ha detenido” NOTA: Me di cuenta de que si elimina manualmente la propiedad “stopReason” del registro de la tarjeta de DB, la respuesta devuelve 200 realizado exitosamente (como se esperaba).
Resultado esperado: Respuesta 200 OK, el estado de la tarjeta cambió a ’emitida’.
Resultado
Con nuestro apoyo continuo desde el desarrollo inicial, el equipo de Union54 probó y pulió a fondo su producto antes del día de demostración que cambió la vida. En aproximadamente dos meses, ayudamos a Union54 a descubrir errores críticos y desarrollamos un conjunto sólido de regresión automatizada para detectar problemas similares antes de que lleguen a producción. El resultado de nuestra fructífera cooperación es espectacular: Union54 recibió $3 millones de financiación inicial poco después de graduarse de Y Combinator.
La API de Union54 es explorada actualmente por más de 50 empresas de tecnología financiera africanas y sigue despertando el interés de los inversores de todo el mundo. Nuestro equipo de QAwerk continuará trabajando con el mismo entusiasmo y compromiso para presenciar cómo Union54 logra los próximos hitos y gana terreno en África y en el extranjero.
En prensa
¿Busca acelerar el desarrollo con la automatización de pruebas?
Hable con los expertosHerramienta
Comentario del equipo de QAwerk
Aliaksei
Ingeniero de automatización del control de calidad
El proyecto Union54 me ha supuesto un reto en varios aspectos. Necesitaba dominar una nueva stack tecnológica para escribir pruebas automáticas, primero con Typescript + Mocha y luego con Cypress, y también obtuve una experiencia invaluable con una variedad de herramientas de AWS.
Para comprender mejor la arquitectura del producto, me dediqué a realizar algunas tareas manuales de control de calidad. Me ayudó a familiarizarme con el producto y, a pesar de su complejidad, disfruté mucho explorando su estructura.
A pesar de que el equipo del proyecto está distribuido en diferentes países y continentes, la comunicación ha estado en un nivel excelente, gracias a la alta profesionalidad de todos los compañeros de equipo y su actitud centrada en los resultados.
Valentyn
Ingeniera de control de calidad
Principalmente, la alta complejidad del sistema y toda la arquitectura en sí hacen de Union54 uno de los proyectos más interesantes para participar dentro de los ciclos de desarrollo y prueba. Su API permite emitir tarjetas virtuales/físicas vinculadas a las cuentas de los clientes, dándoles acceso a sus fondos en cualquier cajero automático o pasarela de pago en línea.
¿Impresionado?
ContáctenosOtros casos prácticos
Evolv
Aumentó la velocidad de las pruebas de regresión de esta plataforma de crecimiento digital en un 50% y garantizó que la plataforma funcionara de forma óptima las 24 horas del día, los 7 días de la semana
Keystone
Ayudó al portal de estudios nº 1 de Noruega a mejorar 8 sitios web con mucho contenido utilizados por 110 millones de estudiantes al año
Zazu
Ayudó a la aplicación de gestión financiera número 1 en África a eliminar los errores y a convertirse en miembro principal de Mastercard