No quiero presumir, pero tengo uno de los trabajos más geniales del mundo. Soy ingeniero de QA aquí en DreamHost, pero ¿qué significa eso? Todavía recibo preguntas sobre ello de vez en cuando, y es fácil olvidar que no todo el mundo sabe todo sobre el desarrollo de software y los roles que desempeñan los diferentes grupos, así que voy a retroceder un poco y explicar un poco cómo funcionan las cosas aquí.
¿Exactamente qué dirías que haces aquí?
QA significa “Aseguramiento de la Calidad”. Puede significar muchas cosas diferentes, pero la forma en que me gusta pensar en ello es “romper cosas antes que nuestros clientes”. Una manera más suave de verlo: probar cambios en nuestro software antes de implementarlos en las máquinas de producción, para tratar de detectar cosas que podrían salir mal. Y hay MUCHAS cosas que pueden salir mal. ¡Permíteme guiarte a través de una visión general rápida!
Cambios
DreamHost cuenta con un equipo de desarrolladores que trabajan en productos como DreamObjects y DreamCompute y todo tipo de otros proyectos de los que podrías estar al tanto, como la integración con servicios externos como CloudFlare.
Nuestros desarrolladores utilizan git para gestionar el código fuente de los proyectos en los que trabajan. La mayoría de los repositorios para proyectos de código abierto a los que contribuimos (o creamos) están disponibles en GitHub, pero también contamos con un servidor interno que ejecuta Gerrit para la revisión de código. Siempre que se realizan cambios en GitHub o Gerrit, Jenkins ejecuta pruebas automáticas escritas por los desarrolladores y QA contra el nuevo código. Jenkins se integra con Gerrit a través de un par de útiles plugins, y vota automáticamente en contra de los cambios que rompen las pruebas.
¿Felices para siempre?
El único problema con este enfoque es que solo funciona cuando hay pruebas automatizadas que Jenkins pueda ejecutar. A veces, el código que se está modificando no tiene pruebas automatizadas. Antes de que estos cambios se pongan en marcha, necesitan ser revisados por alguien que no sea los desarrolladores. Como ingeniero de QA, necesito saber algunas cosas, como:
¿Cómo funcionaba esto antes? ¿Cómo debería funcionar ahora? ¿Hay alguna instrucción especial de configuración? ¿Dónde puedo conseguir un buen burrito por aquí?
(Los burritos son esenciales para el proceso de QA.)
Armado con este conocimiento, intento utilizar la nueva funcionalidad tanto como puedo. Por ejemplo, uno de los cambios que hemos realizado en el panel desde que empecé aquí es el alojamiento DNS automático (¡gratis!) cuando se añade un dominio a una cuenta. Probar esto implicó registrar nuevos dominios, así como transferir dominios desde un registrador externo, y asegurarme de que el alojamiento DNS se habilitara automáticamente en el nuevo dominio. Usualmente, las cosas no son perfectas en el primer intento, por lo que presento errores contra los desarrolladores responsables del nuevo código y trabajo con ellos para asegurarnos de que estamos de acuerdo en lo que está sucediendo, lo que debería estar sucediendo, y lo que hice para que se rompiera.
Y luego…
Eso no es exactamente toda la historia, pero la ingeniería de lanzamiento merece una publicación completa por sí sola. Esperamos que esta publicación haya proporcionado una visión general útil de la QA en DreamHost, y en futuras entradas podré entrar en más detalles sobre qué tipos de herramientas utilizamos para las pruebas automatizadas.