Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 leTracerProviderBuilderpour le traçage distribué. -
withMetrics: configureMeterProviderBuilderpour 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. |