No es: TDD
No es: añadir pruebas a lo loco
No es: un seminario de Jenkins, Travis, Bamboo...
No es: demo completa
Pufff...
No, si tengo que hacerlas...
Es que... señooo... no he hecho la tarea...
El día que me ponga...
#fail
(Fuente: Centro de Estudios Borjanos, blog.heraldo.es)
#EpicFail
Guardamos todos los tests y los lanzamos
Haz tu vida más fácil:
Diseña tu sistema para que sea testable
Pruebas del sistema completo
Deben pasar por todos los puntos del sistema:
Petición → Servidor web →Base de datos
Entorno de pruebas (maqueta, preproducción, staging)
Ortogonales con pruebas de sistema
Lanzamos peticiones sintéticas contra un servidor
Medimos la respuesta (tiempo total, latencia...)
Condiciones lo más realistas posibles
Resultado: peticiones por segundo, latencia
¡También podemos lanzar pruebas de integración!
¡Y de carga!
Siguen aplicando las tres condiciones:
¿Listos para el siguiente paso?
Puesta en producción de código nuevo
Nuevas funcionalidades o cambios
Acumulación de fallos
¡Una pesadilla!
Conclusión: cuantos menos despliegues, mejor
(Fuente: comicvine?)
(Fuente: Super Pirulo Txou)
(Fuente: arte.about.com?)
#EpicFail
¿Qué tal si desplegamos más a menudo?
Mejor muchos cambios pequeños que uno grande
¿Una pesadilla continua?
Pruebas unitarias
↓Pruebas de integración
↓
Pruebas de carga
↓
Despliegue de código
¡Todo automatizable y automatizado!
es un despliegue bien hecho
Pruebas unitarias
↓
Pruebas de integración
↓
Pruebas de carga
↓
Despliegue de código
↓
Monitorización
Usa lo que proporciona el entorno: git pull, npm install, npm test
Usa base de datos de producción; configuración en fichero
No reinicia el servicio: supervisor, forever, Upstart, systemd
Despliegue en una única máquina
Notificación
El despliegue continuo está preparado para tu organización
¿Está tu organización preparada para el despliegue continuo?
Se requiere un "integrador" boss
Los problemas de build tienen máxima prioridad:
Nadie se va a casa con el build roto
Pruebas asíncronas:
http://www.godtic.com/blog/2013/07/11/pruebas-asincronas-en-node-js/
Pruebas de carga:
http://www.godtic.com/blog/2013/08/27/pruebas-de-carga/