Trabajo en el equipo de gestión de versiones en una gran empresa de internet. Usamos esencialmente el proceso que describió anteriormente, y hemos elegido ese proceso a propósito. En nuestra metodología, la estadificación sirve como un mecanismo de ramificación para un nivel final de prueba en producción.
Obviamente, desea hacer todas las pruebas antes de comenzar la producción, pero en un entorno grande y complejo con muchos usuarios, ese es un objetivo muy difícil de alcanzar. En particular, es prácticamente imposible cargar adecuadamente el software de prueba en QA. Las pruebas funcionales son mucho más fáciles de automatizar que las pruebas de carga. Cuando tienes miles de usuarios golpeando tus servidores, las cosas fallan de formas extrañas y difíciles de predecir.
Entonces, esto es lo que hacemos:
- Desarrollo
- incluye integración continua y pruebas automatizadas
- prueba de lanzamiento
- mi grupo analiza el lanzamiento en sí
- revisando los registros de instalación
- prueba de reversión
- QA
- Pruebas de aceptación del usuario
Ese es el punto en el que nos ramificamos entre la puesta en escena y la producción. Utilizamos un modelo de tren para lanzamientos, con un nuevo tren que comienza cada pocas semanas. Incluso los trenes numerados van a los servidores de ensayo (que están en producción). Los trenes con números impares no.
Entre los trenes pares, los desarrolladores tienen la capacidad de enviar cambios individuales a los servidores de ensayo ( después de que QA haya probado esos cambios, por supuesto). Esto les permite validar que su software funciona como se espera en un entorno de producción real. Esto generalmente está reservado para los componentes que se consideran de mayor riesgo, no empujamos cada pequeña pieza a la puesta en escena.
Entonces, todos entienden que cuando comience el próximo tren uniforme, eliminará lo que hay en los servidores de preparación y los volverá a establecer en la línea de base del tren. Los desarrolladores se aseguran de que sus cambios entren en el tren o deciden que todavía no están listos para el uso general, en cuyo caso esos cambios simplemente se borran en los servidores de preparación.
En resumen, la respuesta breve (al menos para nosotros) es que es imposible probar completamente sistemas complejos en QA. La estadificación proporciona una forma segura de realizar pruebas de producción limitadas.
En una nota relacionada, aquí están mis diapositivas de una presentación que acabo de dar sobre cómo funciona nuestro proceso de lanzamiento.