QA Labs for Continuous Integration

Como parte de un buen ciclo de desarrollo, nosotros contamos con un equipo de QA dedicado a las pruebas y el aseguramiento de que todos nuestros productos estén libres de errores que puedan causarles problemas a nuestros clientes, para lograr esto tenemos laboratorios con máquinas de servidores de alta capacidad que nuestros ingenieros de calidad utilizan para la revisión de cada Pull Request que se hace durante la duración del proyecto.
Dichas máquinas están organizadas de la misma manera que el producto final que se le da al cliente:

Para la agilización de las pruebas y la liberación del producto, se automatiza el build del sistema por medio del uso de Jenkins y Docker.
Con cada build ejecutado, se corren, de manera estricta, los casos de prueba automatizados.

Cada una de las máquinas utiliza el sistema de Docker, el cual es un sistema de virtualización de contenedores de software que permite poseer una capa adicional de abstracción y virtualización de aplicaciones en múltiples sistemas operativos.

Mediante el uso de Jenkins, cada uno de los contendores del sistema se puede instalar solo en una máquina independiente para su constante uso y monitoreo, principalmente para monitorear el uso de la memoria en el mismo y de esta manera, asegurar que el sistema no este consumiendo mas recursos de los que debe.

Cada una de las máquinas está configurada de manera que con cada build, solo se instale los actores que sufrieron cambios, en lugar de reinstalar todos los contenedores, de esta manera se logra reducir significativamente el tiempo de instalación y por consiguiente, el tiempo de prueba de un PR.

Cada máquina está configurada para que trabaje tanto con bases de datos MySQL como SQL Server, las cuales se revisan constantemente para detectar posibles errores en las mismas, la validación de las pruebas realizadas, así como, de ser necesarios, la reproducción de errores para la corrección de estos.

Cada una de las máquinas funciona con contenedores para los diferentes actores del sistema, los cuales son los encargados del manejo, tanto de la lógica como de la UX que se le da al usuario.

Nuestros labs son muy flexibles. por ejemplo:

En una máquina podemos tener diferentes contenedores ejecutándose de un mismo build
Entre varias máquinas podemos tener diferentes contenedores que requieren muchos recursos y a la vez todas las máquinas son un mismo build.
Notificamos a nuestro equipo de QA de cada error que hay en cada prueba. Cada notificación tiene su stack para mayor detalle.

Aparte de lo mencionado anteriormente, cada una de las pruebas realizadas es individualmente redactada en un Test Case manual para posteriormente ser automatizada e incluida en repositorio del proyecto, haciendo que en pruebas posteriores, se pueda probar la funcionalidad de una manera mucho más ágil y eficaz, reduciendo significativamente las hora hombre invertidas en el mismo.
Cada PR es probado en diferentes dispositivos fisicos, tanto celulares con diferentes versiones de Android y iOS, como computadoras desktop y laptops.