Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Esta funcionalidade requer o pacote Microsoft.Testing.Extensions.OpenTelemetry NuGet.
Esta extensão integra OpenTelemetry com Microsoft. Testing.Platform (MTP), permitindo que testes emitam traços e métricas através do SDK padrão OpenTelemetry.
Observação
Esta extensão está disponível em MTP a partir da versão 2.1.0.
Importante
A partir do MTP 2.4.0, a extensão OpenTelemetry segue a versão de lançamento do MTP e os seus pontos de entrada públicos deixaram de ser experimentais.
Escolha a propriedade do fornecedor
Escolha se o MTP ou a sua aplicação são os proprietários dos fornecedores OpenTelemetry.
Utilize fornecedores detidos pelo MTP
Desative o ponto de entrada gerado automaticamente (<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>) e chame AddOpenTelemetryProvider no 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 recursos e um exportador OTLP a partir de variáveis de ambiente padrão OTEL_*, chame:
builder.AddOpenTelemetryProviderFromEnvironment();
O método só adiciona instrumentação quando configuras um exportador ou passes um callback de configuração, por isso podes deixar o registo na aplicação quando alguns ambientes não exportam telemetria.
Utilize fornecedores próprios da aplicação
A partir da pré-visualização do MTP 2.5, chame AddTestingPlatformDiagnostics quando a sua aplicação já configurar o OpenTelemetry através de Aspire ServiceDefaults, Microsoft.Extensions.Hosting, ou outro ponto de composição. Este método ativa a origem de atividade e o medidor Microsoft.Testing.Platform sem criar, esvaziar nem eliminar um TracerProvider ou MeterProvider.
Subscreva o fornecedor pertencente à aplicação com AddTestingPlatformInstrumentation nos seus construtores de rastreio e métricas. A aplicação mantém a propriedade dos seus fornecedores, exportadores, identidade de recursos e eliminação.
Para um ponto de entrada alojado gerado pelo MSBuild, consulte Microsoft.Testing.Extensions.Hosting, defina TestingPlatformHostFactory como o método de fábrica do anfitrião e defina:
<TestingPlatformOpenTelemetryMode>HostOwned</TestingPlatformOpenTelemetryMode>
HostOwned chama apenas AddTestingPlatformDiagnostics; não cria provedores nem substitui a identidade do recurso do anfitrião. Para o ciclo de vida do host e requisitos de fábrica, veja Integração do host.
API
AddTestingPlatformDiagnostics
Ativa a fonte de atividade e o medidor do MTP para ouvintes detidos pela aplicação ou provedores OpenTelemetry, sem transferir a propriedade do provedor para o MTP.
AddOpenTelemetryProvider
Regista o fornecedor OpenTelemetry em ITestApplicationBuilder. Aceita dois callbacks opcionais:
-
withTracing: configura oTracerProviderBuilderpara rastreamento distribuído. -
withMetrics: configura aMeterProviderBuilderpara a recolha de métricas.
AddTestingPlatformInstrumentation
Chame TracerProviderBuilder ou MeterProviderBuilder para subscrever à fonte de atividade e ao contador incorporados Microsoft.Testing.Platform.
AddTestingPlatformResource
Chame ResourceBuilder para adicionar atributos de assembly de teste, host, sistema operativo e ambiente de execução. O detetor também identifica informações sobre o fornecedor de CI, pipeline, branch e commit para GitHub Actions, Azure Pipelines, GitLab CI e Jenkins.
Assistentes de recursos especializados
Para um fornecedor detido pela aplicação, chame AddTestingPlatformTestResource para adicionar uma identidade específica para testes e AddTestingPlatformCIResource para adicionar a proveniência de CI e do controlo de origem. Estes assistentes específicos não substituem os atributos service.*, process.*, host.* ou os.* da aplicação.
AddOpenTelemetryProviderFromEnvironment
Regista o rastreio, as métricas, a deteção de recursos e um exportador OTLP a partir das variáveis de ambiente padrão do OpenTelemetry.
OTEL_SDK_DISABLED=true Desativa a integração. Configurar OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER, ou OTEL_EXPORTER_OTLP_ENDPOINT para ativar a exportação.
Fonte de atividade e medidor
A extensão emite telemetria embaixo:
- Fonte da atividade:
Microsoft.Testing.Platform - Medidor:
Microsoft.Testing.Platform
Convenções semânticas
O MTP emite atributos padrão de teste OpenTelemetry e código onde 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 falhados definem o estado do span para Error e adicionam um exception evento.
O MTP estende as convenções com estados de resultado adicionais (skipped, error, timeout, cancelled, e unknown) e atributos de teste para conceitos que o OpenTelemetry não define. Para preservar os painéis existentes, os nomes antigos de atributos e instrumentos continuam ativados por predefinição.
Quando o processo de arranque fornece TRACEPARENT e TRACESTATE, o MTP associa a execução de teste a esse rastreio, em vez de iniciar um rastreio raiz não relacionado.
Spans de execução do MSTest
A partir do MSTest 4.5 e da pré-visualização do MTP 2.5, as execuções nativas do MSTest utilizam uma atividade canónica detida pelo MTP para cada execução de teste. O MSTest define a atividade como atual enquanto executa o construtor de teste, a inicialização, o método de teste, a limpeza e o código personalizado TestMethodAttribute. Atividades instrumentadas HttpClientautomaticamente, SQL, Entity Framework, WCF e personalizadas tornam-se assim filhos da atividade de teste.
O MTP adiciona o resultado final, a informação temporal, a saída e os artefactos à mesma atividade e pára-a à hora de fim da execução registada pelo MSTest. Este comportamento evita a duplicação de estruturas e intervalos de resultados e impede que o processamento assíncrono de resultados aumente a duração do teste.
Os frameworks de teste que não utilizam a API de execução canónica mantêm a topologia de compatibilidade: a atividade de execução do framework e a atividade de resultado MTP mantêm-se irmãs, e a atividade de resultado liga-se à atividade que estava em andamento quando o framework publicou a atualização em andamento.
Métricas emitidas
| Instrumento | Tipo | Unidade | Description |
|---|---|---|---|
test.case.duration |
Histogram | s |
Duração do teste, agrupada por estado do resultado e conjunto. |
test.case.result.count |
Counter | {test} |
Testes concluídos, agrupados por estado dos resultados e conjunto de testes. |
test.case.active |
UpDownCounter | {test} |
Testes que estão a decorrer atualmente. |
test.run.duration |
Histogram | s |
Duração da corrida, agrupada por estado do resultado e código de saída. |
test.case.retry.count |
Counter | {test} |
Testes agendados para uma nova tentativa pela extensão de nova tentativa. |
Configuração do ambiente
| Variável de ambiente | Predefinição | Description |
|---|---|---|
TRACEPARENT, TRACESTATE |
Não definido | Contexto de rastreio 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. Definido para 0 quando a saída pode conter segredos. |
TESTINGPLATFORM_OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT |
8192 |
Define o número máximo de caracteres retidos para um atributo de string. |
TESTINGPLATFORM_OTEL_EMIT_LEGACY_ATTRIBUTES |
1 |
Emite nomes antigos de atributos e de instrumentos juntamente com nomes de convenções semânticas. |
OTEL_SDK_DISABLED |
Não definido | Defina como true para desativar o SDK do OpenTelemetry. |
OTEL_SERVICE_NAME |
Não definido | Substitui o nome do serviço. |
OTEL_EXPORTER_OTLP_ENDPOINT |
Não definido | Define o endpoint OTLP. |
OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER |
Não definido | Seleciona exportadores de rastreio e de métricas. |