La estabilidad de las pruebas automatizadas es un aspecto importante de un CI/CD confiable y de la confianza en la automatización.
Historia del tema
Al principio, las pruebas automatizadas se ejecutaban manualmente, y la inestabilidad no era un gran problema. Con el aumento del número de pruebas y la integración en los pipelines, la aparición de pruebas inestables (pruebas que a veces fallan sin razón aparente) se ha convertido en un gran problema.
Problema
Las pruebas inestables conducen a:
Solución
Lo que ayuda:
Ejemplo de uso de esperas:
WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "result")) )
Características clave:
¿Resolverá el problema de las pruebas inestables un reinicio masivo?
No, esto es solo un "parche" temporal. No aborda la causa: solo enmascara los problemas existentes.
¿Se pueden ejecutar pruebas automatizadas solo por la noche para evitar fallos debido a la carga?
Ejecutar por la noche no eliminará la inestabilidad, solo reducirá la probabilidad; el problema seguirá existiendo, hay que resolver sus causas.
¿Se deben eliminar todas las pruebas inestables de inmediato?
No. Es mejor intentar localizar la causa, corregirla — solo si no es posible estabilizarla o si es una prueba obsoleta e irrelevante — eliminarla.
El equipo recurría a reiniciar pruebas masivamente que fallaban constantemente. Como resultado, la lista de pruebas "verdes" aumentó, pero la calidad de las pruebas automatizadas no mejoró: errores fueron pasando desapercibidos.
Ventajas:
Desventajas:
El equipo encontró y describió causas sistemáticas de pruebas inestables: datos no limpiados, retrasos en la interfaz de usuario, fallos de red. Corregieron la arquitectura, añadieron esperas adecuadas, configuraron el entorno: la cantidad de pruebas inestables disminuyó drásticamente.
Ventajas:
Desventajas: