Detección temprana de defectos
Este producto no es compatible con el
sitio Datadog seleccionado. (
).
La detección temprana de defectos es la solución para tests defectuosos de Datadog que mejora la calidad del código gracias a la identificación de tests defectuosos al principio del ciclo de desarrollo. Para obtener más información sobre los tests defectuosos, consulta Gestión de tests defectuosos.
Al ejecutar varias veces los tests recién añadidos, Datadog puede detectar defectos antes de que estos tests se incorporen a la rama predeterminada. Un estudio muestra que este método permite identificar hasta el 75 % de los tests defectuosos.
- Tests conocidos
- el backend de Datadog almacena tests únicos para un servicio de tests determinado. Antes de que se ejecute una sesión de tests, la biblioteca de Datadog recupera la lista de estos tests conocidos.
- Detección de tests nuevos
- si un test no se encuentra en lista de tests conocidos, se considera nuevo y se reintenta automáticamente hasta diez veces.
- Identificación de defectos
- ejecutar un test varias veces ayuda a descubrir problemas como las condiciones de secuencia, que pueden hacer que el test resulte exitoso y falle de forma intermitente. Si alguno de los intentos del test falla, el test se etiqueta automáticamente como defectuoso.
Ejecutar un test varias veces aumenta la probabilidad de exponer condiciones aleatorias que causan defectos. La detección temprana de defectos ayuda a garantizar que solo se integren en la rama predeterminada los tests estables y fiables:
Puedes elegir bloquear la fusión de la rama de funciones con una PR Gate. Para obtener más información, consulta la documentación de PR Gates.
Configurar
Antes de implementar la Detección temprana de defectos, debes configurar Test Optimización (optimización de tests) para tu entorno de desarrollo. Si estás reportando datos a través del Datadog Agent, utiliza v6.40 o 7.40 y posteriores.
Configuración
Una vez que hayas configurado tu biblioteca de Datadog para Test Optimization (optimización de tests), puedes configurar la detección temprana de defectos desde la page (página) de parámetros de Test Optimization (optimización de tests).
- Ve a Software Delivery (Envío de software) > Test Optimization (Optimización de tests) > Settings (Parámetros).
- Haz clic en Configure (Configurar) en la columna Early Flake Detection (Detección temprana de defectos) para elegir un servicio de tests.
- Haz clic en el conmutador para activar la Detección Temprana de Defectos.
Compatibilidad
Se necesitan las siguientes versiones del framework de tests y de dd-trace:
dd-trace-js:
>=5.23.0 para la versión 5.x.>=4.47.0 para la versión 4.x.
La compatibilidad del framework de test es la misma que la Compatibilidad de Test Optimization (optimización de tests), con la excepción de playwright, que solo es compatible a partir de >=1.38.0.
dd-trace-py >= 3.0.0 (pytest >= 7.2.0)
orchestrion >= 0.9.4 + dd-trace-go >= 1.69.1
dd-sdk-swift-testing>=2.5.2
Explorar los resultados en el Test Optimization Explorer
Puedes utilizar las siguientes facetas para consultar las sesiones que ejecutan la Detección temprana de defectos y los nuevos tests en el Test Optimization Explorer.
- Sesión de tests: las sesiones de tests que ejecutan Detección temprana de defectos tienen la etiqueta (tag)
@test.early_flake.enabled establecida en true. - Tests nuevos: los tests nuevos tienen la etiqueta
@test.is_new establecida en true, y los reintentos para estos tests tienen la etiqueta @test.is_retry establecida entrue.
Solucionar problemas
Si sospechas que hay problemas con la Detección temprana de defectos, ve a la página Configuración de Test optimization, busca tu repositorio y haz clic en Configure (Configurar). Desactiva la Detección temprana de defectos haciendo clic en el conmutador.
No se reintenta un test nuevo
Esto puede deberse a un par de motivos:
- Este test ya se ha realizado anteriormente.
- Este test demora más de cinco minutos. Existe un mecanismo para no ejecutar Detección temprana de defectos en tests que son demasiado lentos, ya que hacerlo puede provocar retrasos significativos en los pipelines de CI.
Se ha reintentado un test que no es nuevo
Si la biblioteca de Datadog no puede obtener la lista completa de tests conocidos, es posible que la biblioteca de Datadog reintente tests que no son nuevos. Existe un mecanismo para evitar que este error ralentice el pipeline de CI, pero si ocurre, ponte en contacto con Datadog Support.
Referencias adicionales
Más enlaces, artículos y documentación útiles: