Formación escrita en DevOps
¿Por qué necesita automatizar las pruebas en su organización DevOps?
Si su departamento de entrega de software aún no cuenta con una buena automatización de pruebas, debe de haber una desconexión clara entre desarrollo y pruebas. Los desarrolladores reciben información tardía sobre la calidad de su trabajo cuando ya están ocupados con otras tareas. Suelen perder de vista la relación entre el código que escribieron o dejaron de escribir y los defectos. El esfuerzo de cambiar de contexto para volver al momento en que introdujeron los fallos reduce la productividad. Cuando los comentarios llegan tarde, la relación entre sistemas y defectos es compleja y confusa, por lo que es poco realista esperar correcciones de calidad que no sean provisionales.
Sin automatización de pruebas, su organización DevOps necesita más tiempo y dinero para entregar productos y servicios de calidad. Este modelo de negocio ya no es escalable para ninguna organización tecnológica del siglo XXI, sea cual sea su actividad.
Puede automatizar las pruebas,
pero no la creación de calidad
Su equipo de DevOps debe automatizar tantos casos de prueba como sea posible. Puede automatizar las pruebas, pero la capacidad del equipo para pensar y crear con calidad depende de las personas. Por eso, no desperdicie el talento del equipo en tareas repetitivas que puede hacer el software.
Principios de DevOps para una buena automatización de pruebas
- La automatización de pruebas debe ofrecer información rápida y temprana sobre la calidad del trabajo.
- Las pruebas deben generar resultados coherentes, deterministas y repetibles si se ejecutan varias veces en las mismas condiciones.
- Las pruebas no deben generar falsos positivos.
- Un número reducido de casos de prueba automatizados y fiables es mejor que muchos casos manuales poco fiables, que pueden dar resultados incoherentes incluso si se repiten en las mismas condiciones.
- La automatización debe centrarse primero en validar las funcionalidades y ventajas clave que los sistemas ofrecen a clientes internos y externos. Incluso ese nivel de automatización es mucho mejor que carecer de ella.
- Después, automatice tantos casos de prueba como sea posible para aprovechar al máximo el talento de los equipos de DevOps.
- Evite que las pruebas automatizadas generen información lenta y periódica. Necesita recibirla de inmediato cada vez que usted o un desarrollador intente registrar código en el tronco.
- Si las pruebas automatizadas no son suficientemente rápidas, busque formas de acelerar las pruebas, el software o ambos. Es fundamental tanto para una plataforma de entrega continua y una canalización de despliegue fiables como para ofrecer un servicio de gran calidad. Para ganar aún más velocidad, ejecute las pruebas automatizadas en paralelo.
- Considere el desarrollo guiado por pruebas. Escriba primero las pruebas automatizadas y construya después el software.
La automatización de pruebas es fundamental para la entrega continua y la canalización de despliegue
Como vimos antes, DevOps permite a los desarrolladores desplegar su código en producción. Sin embargo, las observaciones de los primeros equipos de DevOps en las organizaciones mostraron que, aunque registraban código y cerraban tareas y solicitudes rápidamente, dudaban en pulsar el botón para publicarlo en producción. Temían estropear algo y cargar con la culpa.
Los desarrolladores solo superaron ese miedo cuando los equipos de DevOps consiguieron una cobertura amplia y fiable con pruebas automatizadas.
Por ejemplo, en Google, cuando alguien registra código en el tronco, se realizan comprobaciones iniciales, como análisis estático de código, análisis de duplicados y análisis de cobertura. Después se valida el código con casi un millón de casos de prueba automatizados. Si supera todas las comprobaciones y pruebas, se genera la compilación desde el tronco, se pone en producción y se replica a los demás servidores de producción. Así mantienen la productividad 5,000 equipos pequeños e independientes de Google y hacen decenas de miles de despliegues diarios en producción. Sin automatizar las pruebas, no sería viable.
La única forma de proteger la integridad de la canalización de despliegue y hacerla segura es recibir información rápida y fiable. Si la canalización falla por un caso de prueba automatizado, el equipo de DevOps corrige el código y la configuración erróneos antes de registrar más trabajo en el tronco. Además, cada vez que encuentre un error que un caso de prueba automatizado podría haber detectado y evitado, cree también ese caso y añádalo al repositorio de pruebas automatizadas.
Tipos de pruebas que puede automatizar
- Pruebas unitarias: Validan funciones, clases o módulos individuales de las aplicaciones.
- Pruebas de aceptación: Validan las funcionalidades y ventajas que las aplicaciones ofrecen a sus clientes.
- Pruebas de integración (servicios): Validan la interacción entre aplicaciones y sus flujos de servicio de principio a fin.
- Pruebas de rendimiento y de estrés: Validan cómo escalan los servicios, o si no escalan, ante cargas de clientes previstas e imprevistas. Resulta especialmente importante para los servicios más utilizados.
- Pruebas no funcionales: Validan la seguridad, disponibilidad, capacidad y escalabilidad.
Si a su equipo y a usted les cuesta automatizar las pruebas unitarias y de aceptación y dependen mucho de las pruebas de integración automatizadas, es probable que la arquitectura esté fuertemente acoplada. Busque formas de desacoplar sus componentes.
CONCLUSIÓN
En este capítulo hemos explicado la importancia de la automatización de pruebas en DevOps. Es fundamental para entregar de forma rápida y segura.
Adopte o no DevOps, sin pruebas automatizadas no puede tener una organización de TI de primer nivel, exitosa, productiva y rentable, capaz de atender bien a sus clientes internos y externos.
