OpenTelemetry

Cette fonctionnalité nécessite le package NuGet Microsoft.Testing.Extensions.OpenTelemetry .

Cette extension intègre OpenTelemetry avec Microsoft. Testing.Platform (MTP), permettant aux exécutions de test d’émettre des traces et des métriques via le Kit de développement logiciel (SDK) OpenTelemetry standard.

Note

Cette extension est disponible dans MTP à partir de la version 2.1.0.

Important

À compter de MTP 2.4.0, l’extension OpenTelemetry suit la version de publication MTP et ses points d’entrée publics ne sont plus expérimentaux.

Choisir la propriété du fournisseur

Choisissez si MTP ou votre application possède les fournisseurs OpenTelemetry.

Utiliser des fournisseurs appartenant à MTP

Désactivez le point d’entrée généré automatiquement (<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>) et appelez AddOpenTelemetryProvider dans votre Main méthode :

var builder = await TestApplication.CreateBuilderAsync(args);

builder.AddOpenTelemetryProvider(
    withTracing: tracing => tracing
        .AddTestingPlatformInstrumentation()
        .AddConsoleExporter(),
    withMetrics: metrics => metrics
        .AddTestingPlatformInstrumentation()
        .AddConsoleExporter()
);

using var app = await builder.BuildAsync();
return await app.RunAsync();

Pour configurer l’instrumentation, les attributs de ressource et un exportateur OTLP à partir de variables d’environnement standard OTEL_* , appelez :

builder.AddOpenTelemetryProviderFromEnvironment();

La méthode ajoute l’instrumentation uniquement lorsque vous configurez un exportateur ou passez un rappel de configuration. Vous pouvez donc laisser l’inscription dans l’application lorsque certains environnements n’exportent pas de données de télémétrie.

Utiliser des fournisseurs appartenant à l’application

À compter de la préversion de MTP 2.5, appelez AddTestingPlatformDiagnostics quand votre application configure déjà OpenTelemetry via Aspire ServiceDefaults, Microsoft.Extensions.Hostingou une autre racine de composition. Cette méthode active la source d’activité et le compteur Microsoft.Testing.Platform sans créer, vider ou supprimer un TracerProvider ou MeterProvider.

Abonnez-vous au fournisseur appartenant à l’application avec AddTestingPlatformInstrumentation sur ses générateurs de suivi et de métriques. L’application conserve la propriété de ses fournisseurs, exportateurs, identité des ressources et élimination.

Pour un point d’entrée hébergé généré par MSBuild, référencez Microsoft.Testing.Extensions.Hosting, définissez TestingPlatformHostFactory la méthode d’usine hôte et définissez :

<TestingPlatformOpenTelemetryMode>HostOwned</TestingPlatformOpenTelemetryMode>

HostOwned appelle uniquement AddTestingPlatformDiagnostics; il ne crée pas de fournisseurs ni ne remplace l’identité de ressource de l’hôte. Pour connaître le cycle de vie de l’hôte et les exigences d’usine, consultez Intégration de l’hôte.

API

AddTestingPlatformDiagnostics

Active la source d’activité et le compteur de MTP pour les abonnés appartenant à l’application ou les fournisseurs OpenTelemetry, sans en transférer la propriété à MTP.

AddOpenTelemetryProvider

Inscrit le fournisseur OpenTelemetry sur ITestApplicationBuilder. Accepte deux fonctions de rappel facultatives :

  • withTracing: configurez le TracerProviderBuilder pour le traçage distribué.
  • withMetrics : configure MeterProviderBuilder pour la collecte des métriques.

AddTestingPlatformInstrumentation

Appelez TracerProviderBuilder ou MeterProviderBuilder pour vous abonner à la source d’activité et au compteur intégrés Microsoft.Testing.Platform.

AddTestingPlatformResource

Appelez ResourceBuilder pour ajouter des attributs de l’assemblage de test, de l’hôte, du système d’exploitation et de l’environnement d’exécution. Le détecteur identifie également le fournisseur CI, le pipeline, la branche et les informations de validation pour GitHub Actions, Azure Pipelines, GitLab CI et Jenkins.

Assistants de ressources ciblés

Pour un fournisseur appartenant à l’application, appelez AddTestingPlatformTestResource pour ajouter une identité spécifique aux tests et AddTestingPlatformCIResource pour ajouter la provenance de l’intégration continue (CI) et du contrôle de code source. Ces assistants ciblés ne remplacent pas les attributs os.*, host.*, process.* ou service.* appartenant à l’application.

AddOpenTelemetryProviderFromEnvironment

Configure le traçage, les métriques, la détection des ressources et un exportateur OTLP à partir des variables d’environnement OpenTelemetry standard. OTEL_SDK_DISABLED=true désactive l’intégration. Configurez OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTERou OTEL_EXPORTER_OTLP_ENDPOINT activez l’exportation.

Source d’activité et compteur

L'extension émet des données de télémétrie via :

  • Source d’activité : Microsoft.Testing.Platform
  • Compteur: Microsoft.Testing.Platform

Conventions sémantiques

MTP émet des attributs standard OpenTelemetry de test et de code lorsqu’une convention existe, y compris test.case.name, test.suite.name, test.case.result.status, code.function.name, code.file.path, code.line.number, code.stacktrace et error.type. Les tests en échec définissent le statut du span sur Error et ajoutent un événement exception.

MTP étend les conventions avec des états de résultat supplémentaires (skipped, , error, timeoutcancelledet unknown) et des attributs de test pour les concepts que OpenTelemetry ne définit pas. Pour conserver les tableaux de bord existants, les noms d’attribut et d’instrument hérités restent activés par défaut.

Lorsque le processus de lancement fournit TRACEPARENT et TRACESTATE, MTP place l’exécution de test sous cette trace au lieu de démarrer une trace racine sans lien.

Spans d’exécution MSTest

À compter de la préversion MSTest 4.5 et MTP 2.5, les exécutions MSTest natives utilisent une activité MTP canonique pour chaque exécution de test. MSTest rend l’activité active pendant qu’elle exécute le constructeur de test, l’initialisation, la méthode de test, le nettoyage et le code personnalisé TestMethodAttribute . Les activités instrumentées automatiquement HttpClient, SQL, Entity Framework, WCF et les activités personnalisées deviennent donc des activités enfants de l’activité de test.

MTP ajoute le résultat final, le minutage, la sortie et les artefacts à la même activité et l’arrête au moment de la fin de l’exécution enregistrée par MSTest. Ce comportement évite l’infrastructure en double et les étendues de résultats et empêche le traitement asynchrone des résultats d’infler la durée de test.

Les frameworks de test qui n’utilisent pas l’API d’exécution canonique conservent la topologie de compatibilité : l’activité d’exécution du framework et l’activité de résultat MTP restent au même niveau, et l’activité de résultat est liée à l’activité qui était en cours lorsque le framework a publié la mise à jour en cours.

Métriques émises

Instrument Type Unité Description
test.case.duration Histogramme s Durée de test, regroupée par état et suite des résultats.
test.case.result.count Compteur {test} Tests terminés, regroupés par état de résultat et suite.
test.case.active UpDownCounter {test} Tests en cours d’exécution.
test.run.duration Histogramme s Durée d’exécution, regroupée par état de résultat et code de sortie.
test.case.retry.count Compteur {test} Tests programmés pour une nouvelle tentative par l’extension de réessai.

Configuration de l’environnement

Variable d'environnement Default Description
TRACEPARENT, TRACESTATE Annuler Contexte de trace W3C pour l’exécution parente.
TESTINGPLATFORM_OTEL_CAPTURE_TEST_OUTPUT 1 Attache la sortie standard et l’erreur capturées pour tester les étendues. Défini sur 0 quand la sortie peut contenir des secrets.
TESTINGPLATFORM_OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT 8192 Définit les caractères maximum conservés pour un attribut de chaîne.
TESTINGPLATFORM_OTEL_EMIT_LEGACY_ATTRIBUTES 1 Émet des noms d’attribut et d’instrument hérités en même temps que des noms de convention sémantique.
OTEL_SDK_DISABLED Annuler Définissez sur true pour désactiver le SDK OpenTelemetry.
OTEL_SERVICE_NAME Annuler Remplace le nom du service.
OTEL_EXPORTER_OTLP_ENDPOINT Annuler Définit le point de terminaison OTLP.
OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER Annuler Sélectionne les modules d’exportation de traces et de métriques.