Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Esse recurso requer o pacote NuGet Microsoft.Testing.Extensions.OpenTelemetry .
Essa extensão integra OpenTelemetry com Microsoft. Testing.Platform (MTP), permitindo execuções de teste para emitir rastreamentos e métricas por meio do SDK do OpenTelemetry padrão.
Observação
Essa extensão está disponível no MTP a partir da versão 2.1.0.
Importante
A partir da versão 2.4.0 do MTP, a extensão OpenTelemetry passa a seguir a versão de lançamento do MTP, e seus pontos de entrada públicos deixam de ser experimentais.
Escolher a propriedade do provedor
Escolha se o MTP ou seu aplicativo possui os provedores OpenTelemetry.
Use provedores de propriedade da MTP
Desative o ponto de entrada gerado automaticamente (<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>) e chame AddOpenTelemetryProvider em seu método Main:
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();
Para configurar a instrumentação, os atributos de recurso e um exportador OTLP a partir de variáveis de ambiente padrão OTEL_*, chame:
builder.AddOpenTelemetryProviderFromEnvironment();
O método adiciona instrumentação somente quando você configura um exportador ou passa um callback de configuração, de modo que você pode manter o registro no aplicativo mesmo quando alguns ambientes não exportam telemetria.
Use provedores pertencentes ao aplicativo
A partir da versão prévia do MTP 2.5, chame AddTestingPlatformDiagnostics quando seu aplicativo já configurar o OpenTelemetry por meio de Aspire ServiceDefaults, Microsoft.Extensions.Hosting ou outra raiz de composição. Esse método ativa a Microsoft.Testing.Platform fonte de atividade e o medidor sem criar, esvaziar ou descartar um TracerProvider ou MeterProvider.
Inscreva o provedor de propriedade do aplicativo com AddTestingPlatformInstrumentation em seus construtores de rastreamento e métricas. O aplicativo mantém o controle sobre seus provedores, exportadores, a identidade do recurso e sua liberação.
Para um ponto de entrada hospedado gerado pelo MSBuild, referencie Microsoft.Testing.Extensions.Hosting, defina TestingPlatformHostFactory como o método de fábrica do host e defina:
<TestingPlatformOpenTelemetryMode>HostOwned</TestingPlatformOpenTelemetryMode>
HostOwned apenas chama AddTestingPlatformDiagnostics; não cria provedores nem substitui a identidade do recurso do host. Para requisitos do ciclo de vida e de fábrica do host, consulte integração de host.
API
AddTestingPlatformDiagnostics
Ativa a fonte de atividade e o medidor de métricas do MTP para ouvintes pertencentes ao aplicativo ou provedores do OpenTelemetry, sem transferir a propriedade do provedor ao MTP.
AddOpenTelemetryProvider
Registra o provedor OpenTelemetry em ITestApplicationBuilder. Aceita dois retornos de chamada opcionais:
-
withTracing: configura oTracerProviderBuilderpara rastreamento distribuído. -
withMetrics: configura aMeterProviderBuilderpara a coleta de métricas.
AddTestingPlatformInstrumentation
Use TracerProviderBuilder ou MeterProviderBuilderpara assinar a origem de atividades e o medidor integrados Microsoft.Testing.Platform.
AddTestingPlatformResource
Use ResourceBuilder para adicionar atributos do assembly de teste, do host, do sistema operacional e do tempo de execução. O detector também identifica informações sobre o provedor de CI, o pipeline, a branch e o commit para GitHub Actions, Azure Pipelines, GitLab CI e Jenkins.
Auxiliares de recursos focados
Para um provedor pertencente ao aplicativo, chame AddTestingPlatformTestResource para adicionar identidade específica para teste e AddTestingPlatformCIResource para adicionar proveniência do CI e do controle de código-fonte. Esses auxiliares específicos não substituem os atributos process.*, service.*, host.* ou os.* pertencentes ao aplicativo.
AddOpenTelemetryProviderFromEnvironment
Registra rastreamento, métricas, detecção de recursos e um exportador OTLP com base nas variáveis de ambiente padrão do OpenTelemetry.
OTEL_SDK_DISABLED=true desabilita a integração. Configure OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER ou OTEL_EXPORTER_OTLP_ENDPOINT para ativar a exportação.
Origem e métricas de atividade
A extensão emite telemetria em:
- Origem da atividade:
Microsoft.Testing.Platform - Medidor:
Microsoft.Testing.Platform
Convenções semânticas
O MTP emite atributos padrão de teste e código do OpenTelemetry para os quais existe uma convenção, incluindo test.case.name, test.case.result.status, test.suite.name, code.function.name, code.file.path, code.line.number, code.stacktrace e error.type. Testes com falha definem o status do intervalo como Error e adicionam um evento exception.
O MTP estende as convenções com estados de resultado adicionais (skipped, error, , timeoute cancelled) e unknownatributos de teste para conceitos que o OpenTelemetry não define. Para preservar os painéis existentes, os atributos legados e os nomes de instrumentos permanecem habilitados por padrão.
Quando o processo de inicialização fornece TRACEPARENT e TRACESTATEo MTP coloca a execução de teste sob esse rastreamento em vez de iniciar um rastreamento raiz não relacionado.
Intervalos de execução do MSTest
A partir das versões prévias do MSTest 4.5 e do MTP 2.5, as execuções nativas do MSTest usam uma única atividade canônica controlada pelo MTP para cada execução de teste. O MSTest torna a atividade atual enquanto executa o construtor de teste, a inicialização, o método de teste, a limpeza e o código personalizado TestMethodAttribute. As atividades instrumentadas automaticamente HttpClient, SQL, Entity Framework, WCF e personalizadas tornam-se, portanto, filhas da atividade de teste.
O MTP adiciona o resultado final, o tempo, a saída e os artefatos à mesma atividade e o interrompe na hora de término da execução registrada pelo MSTest. Esse comportamento evita estrutura duplicada e intervalos de resultados e impede que o processamento de resultado assíncrono infla a duração do teste.
As estruturas de teste que não usam a API de execução canônica mantêm a topologia de compatibilidade: a atividade de execução da estrutura e a atividade de resultado do MTP permanecem irmãs, e a atividade de resultado se vincula à atividade que estava ativa quando a estrutura publicou a atualização em andamento.
Métricas emitidas
| Instrumento | Tipo | Unidade | Descrição |
|---|---|---|---|
test.case.duration |
Histograma | s |
Duração do teste, agrupada por status de resultado e pacote. |
test.case.result.count |
Contador | {test} |
Testes concluídos, agrupados por status de resultado e pacote. |
test.case.active |
UpDownCounter | {test} |
Testes que estão em execução no momento. |
test.run.duration |
Histograma | s |
Duração da execução, agrupada por status de resultado e código de saída. |
test.case.retry.count |
Contador | {test} |
Testes agendados para uma nova tentativa pela extensão de nova tentativa. |
Configuração do ambiente
| Variável de ambiente | Default | Descrição |
|---|---|---|
TRACEPARENT, TRACESTATE |
Desconfigurado | Contexto de rastreamento W3C para a execução principal. |
TESTINGPLATFORM_OTEL_CAPTURE_TEST_OUTPUT |
1 |
Anexa a saída padrão capturada e o erro aos intervalos de teste. Defina como 0 quando a saída puder conter segredos. |
TESTINGPLATFORM_OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT |
8192 |
Define o máximo de caracteres retidos para um atributo de cadeia de caracteres. |
TESTINGPLATFORM_OTEL_EMIT_LEGACY_ATTRIBUTES |
1 |
Emite nomes de atributos e instrumentos herdados junto com nomes da convenção semântica. |
OTEL_SDK_DISABLED |
Desconfigurado | Defina como true para desabilitar o SDK do OpenTelemetry. |
OTEL_SERVICE_NAME |
Desconfigurado | Substitui o nome do serviço. |
OTEL_EXPORTER_OTLP_ENDPOINT |
Desconfigurado | Define o ponto de extremidade OTLP. |
OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER |
Desconfigurado | Seleciona exportadores de rastros e métricas. |