Test Optimization en Datadog

Este producto no es compatible con el sitio Datadog seleccionado. ().
learning center
Intenta comenzar con Test Optimization en el Centro de Aprendizaje

Aprende cómo acelerar tus pipelines de CI configurando el monitoreo de pruebas, identificando pruebas inestables y utilizando el Análisis de Impacto de Pruebas para ejecutar solo las pruebas que importan.

INSCRÍBETE AHORA

Resumen

Test Optimization proporciona una vista de prueba primero sobre la salud de tu CI al mostrar métricas importantes y resultados de tus pruebas. Puede ayudarte a investigar problemas de rendimiento y fallos de pruebas que son más relevantes para tu trabajo, enfocándose en el código del que eres responsable, en lugar de los pipelines que ejecutan tus pruebas.

Configuración

Selecciona una opción para configurar Test Optimization en Datadog:

.net
java
javascript
python
ruby
swift
go
subir pruebas junit a datadog

Además de las pruebas, Test Optimization proporciona visibilidad sobre toda la fase de pruebas de tu proyecto.

Características soportadas

.NETJava/JVM‑basadoJavascriptPythonRubySwiftGoJUnit Xml
Resultados precisos de tiempo/duraciones

Resolución en microsegundos en el tiempo de inicio de la prueba y duración.

Trazas distribuidas en pruebas de integración

Las pruebas que realizan llamadas a servicios externos instrumentados con Datadog muestran la traza distribuida completa en los detalles de su prueba.

Informes basados en agentes

Capacidad para informar información de pruebas a través del Agente de Datadog.

Informes sin agente

Capacidad para informar información de pruebas sin el Agente de Datadog.

Visibilidad a nivel de conjunto de pruebas

Visibilidad sobre todo el proceso de prueba, incluyendo sesión, módulo, conjuntos de pruebas y pruebas.

API manual

Capacidad para crear eventos de CI Visibility programáticamente para frameworks de prueba que no son compatibles con la instrumentación automática de Datadog.

Propietario de código por prueba

Detección automática del propietario de un archivo de prueba basado en el archivo CODEOWNERS.

(parcialmente)
Inicio/final del código fuente

Informe automático de las líneas de inicio y final de una prueba.

(solo inicio) (solo inicio)
Información de CI y git

Colección automática de metadatos del entorno de git y CI, como proveedor de CI, SHA de commit de git o URL de pipeline.

Carga de metadatos de git

Carga automática de información del árbol de git utilizada para Test Impact Analysis.

Test Impact Analysis *

Capacidad para habilitar Test Impact Analysis, que omite inteligentemente pruebas basadas en la cobertura de código y metadatos de git.

Soporte de cobertura de código

Capacidad para reportar métricas de cobertura total de código.

(manual)
Soporte para pruebas de referencia

Detección automática de estadísticas de rendimiento para pruebas de referencia.

Pruebas parametrizadas

Detección automática de pruebas parametrizadas.

Detección temprana de fallos *

Automáticamente reintentar nuevas pruebas para detectar inestabilidad.

Reintentos automáticos de pruebas *

Automáticamente reintentar pruebas fallidas hasta N veces para evitar que la construcción falle debido a inestabilidad en las pruebas.

Reproducción de pruebas fallidas *

Acceder a información de variables locales en pruebas fallidas reintentadas.

Integración de Selenium RUM

Automáticamente vincula sesiones del navegador a casos de prueba al probar aplicaciones instrumentadas con RUM.

* La función es opcional y debe habilitarse en la página de Test Optimization Settings.

Configuraciones predeterminadas

Las pruebas evalúan el comportamiento del código para un conjunto de condiciones dadas. Algunas de esas condiciones están relacionadas con el entorno donde se ejecutan las pruebas, como el sistema operativo o el sistema de ejecución utilizado. El mismo código ejecutado bajo diferentes conjuntos de condiciones puede comportarse de manera diferente, por lo que los desarrolladores suelen configurar sus pruebas para ejecutarse en diferentes conjuntos de condiciones y validar que el comportamiento sea el esperado en todos ellos. Este conjunto específico de condiciones se llama configuración.

En Test Optimization, una prueba con múltiples configuraciones se trata como múltiples pruebas, con una prueba separada para cada configuración. En el caso de que una de las configuraciones falle pero las otras pasen, solo esa combinación específica de prueba y configuración se marca como fallida.

Por ejemplo, supongamos que estás probando un solo commit y tienes una prueba en Python que se ejecuta contra tres versiones diferentes de Python. Si la prueba falla para una de esas versiones, esa prueba específica se marca como fallida, mientras que las otras versiones se marcan como pasadas. Si vuelves a intentar las pruebas contra el mismo commit y ahora la prueba para las tres versiones de Python pasa, la prueba con la versión que falló anteriormente se marca ahora como pasada e inestable, mientras que las otras dos versiones permanecen pasadas, sin detectar inestabilidad.

Atributos de configuración de prueba

Cuando ejecutas tus pruebas con Test Optimization, la biblioteca detecta e informa información sobre el entorno donde se ejecutan las pruebas como etiquetas de prueba. Por ejemplo, el nombre del sistema operativo, como Windows o Linux, y la arquitectura de la plataforma, como arm64 o x86_64, se añaden como etiquetas en cada prueba. Estos valores se muestran en el commit y en las páginas de resumen de ramas cuando una prueba falla o es inestable para una configuración específica pero no para otras.

Las siguientes etiquetas se recopilan automáticamente para identificar configuraciones de prueba, y algunas pueden aplicarse solo a plataformas específicas:

Nombre de la etiquetaDescripción
os.platformNombre del sistema operativo donde se ejecutan las pruebas.
os.familyFamilia del sistema operativo donde se ejecutan las pruebas.
os.versionVersión del sistema operativo donde se ejecutan las pruebas.
os.architectureArquitectura del sistema operativo donde se ejecutan las pruebas.
runtime.nameNombre del sistema de ejecución para las pruebas.
runtime.versionVersión del sistema de ejecución.
runtime.vendorProveedor que construyó la plataforma de ejecución donde se ejecutan las pruebas.
runtime.architectureArquitectura del sistema de ejecución para las pruebas.
device.modelEl modelo de dispositivo que ejecuta las pruebas.
device.nameNombre del dispositivo.
ui.appearanceEstilo de interfaz de usuario.
ui.orientationOrientación en la que se ejecuta la interfaz de usuario.
ui.localizationIdioma de la aplicación.

Configuraciones de prueba parametrizadas

Cuando ejecutas pruebas parametrizadas, la biblioteca detecta e informa sobre los parámetros utilizados. Los parámetros son parte de la configuración de prueba, por lo que el mismo caso de prueba ejecutado con diferentes parámetros se considera como dos pruebas diferentes en Test Optimization.

Si un parámetro de prueba es no determinista y tiene un valor diferente cada vez que se ejecuta una prueba, cada ejecución de prueba se considera una nueva prueba en Test Optimization. Como consecuencia, algunas características del producto pueden no funcionar correctamente para tales pruebas: historial de ejecuciones, detección de inestabilidad, Test Impact Analysis, y otras.

Algunos ejemplos de parámetros de prueba no deterministas son:

  • fecha actual
  • un valor aleatorio
  • un valor que depende del entorno de ejecución de la prueba (como una ruta de archivo absoluta o el nombre de usuario actual)
  • un valor que no tiene una representación de cadena determinista (por ejemplo, una instancia de una clase de Java cuyo toString() método no está sobreescrito)

Evita usar parámetros de prueba no deterministas. En caso de que esto no sea posible, algunos marcos de prueba proporcionan una forma de especificar una representación de cadena determinista para un parámetro no determinista (como sobreescribir el nombre de visualización del parámetro).

Configuraciones personalizadas

Hay algunas configuraciones que no pueden ser identificadas y reportadas automáticamente porque pueden depender de variables de entorno, argumentos de ejecución de prueba u otros enfoques que los desarrolladores utilizan. Para esos casos, debe proporcionar los detalles de configuración a la biblioteca para que Test Optimization pueda identificarlos correctamente.

Defina estas etiquetas como parte de la DD_TAGS variable de entorno usando el prefijo test.configuration.

Por ejemplo, las siguientes etiquetas de configuración de prueba identifican una configuración de prueba donde el tiempo de respuesta del disco es lento y la memoria disponible es baja:

DD_TAGS=test.configuration.disk:slow,test.configuration.memory:low

Todas las etiquetas con el prefijo test.configuration se utilizan como etiquetas de configuración, además de las que se recopilan automáticamente.

Nota: Las etiquetas test.configuration anidadas, como test.configuration.cpu.memory, no son compatibles.

Para filtrar utilizando estas etiquetas de configuración, debe crear facetas para estas etiquetas.

Mejore su flujo de trabajo de desarrollador

Integre Test Optimization con herramientas para informar datos de Code Coverage, mejore las pruebas de navegador con RUM y acceda a información a través de plataformas al agilizar la identificación y resolución de problemas en su ciclo de desarrollo.


Utilice datos de pruebas de CI

When Test Visibility is enabled, the following data is collected from your project:

  • Test names and durations.
  • Predefined environment variables set by CI providers.
  • Git commit history including the hash, message, author information, and files changed (without file contents).
  • Information from the CODEOWNERS file.

Al crear un dashboard o un notebook, puede utilizar datos de pruebas de CI en su consulta de búsqueda, lo que actualiza las opciones del widget de visualización. Para más información, consulte Dashboards y la documentación de Notebooks.

Alerte sobre datos de pruebas

Cuando esté evaluando pruebas fallidas o inestables, o el rendimiento de una prueba de CI, puede exportar su consulta de búsqueda en el Test Optimization Explorer a un CI Test monitor haciendo clic en el botón Export.

 Lectura adicional