Partilhar via


Acelere os testes usando a Análise de Impacto de Teste (TIA)

Serviços de DevOps do Azure | Azure DevOps Server | Azure DevOps Server 2022

A Integração Contínua (IC) é uma prática chave na indústria. As integrações são frequentes e verificadas com uma compilação automatizada que executa testes de regressão para detetar erros de integração o mais rápido possível. Mas, à medida que a base de código cresce e amadurece, seu conjunto de testes de regressão tende a crescer também - na medida em que a execução de um teste de regressão completa pode exigir horas. Esse teste diminui a frequência das integrações e, em última análise, derrota o propósito da integração contínua.

Para ter um pipeline de CI que seja concluído rapidamente, algumas equipes adiam a execução de seus testes de execução mais longa para um estágio separado no pipeline. Mas, esta ação só serve para derrotar ainda mais a integração contínua.

Em vez disso, habilite a análise de impacto de teste (TIA) ao usar a tarefa de teste do Visual Studio em um pipeline de compilação. O TIA realiza a validação incremental por seleção automática de testes. Ele seleciona automaticamente apenas o subconjunto de testes necessários para validar o código que está a ser confirmado. Para um determinado commit de código que entra no pipeline de CI/CD, a TIA seleciona e executa apenas os testes relevantes necessários para validar esse commit. Portanto, essa execução de teste é concluída mais rapidamente, se houver uma falha, você é alertado mais cedo e, como tudo tem escopo por relevância, a análise também é mais rápida.

Comparação dos tempos de teste ao usar AIT

A Análise de Impacto do Teste tem:

  • Um mecanismo robusto de seleção de testes. Inclui testes impactados existentes, testes que falharam anteriormente e testes recém-adicionados.
  • Retorno seguro. Para commits e cenários que o TIA não consegue entender, ele recorre a executar todos os testes. Atualmente, o TIA tem como escopo apenas código gerenciado e topologia de máquina única. Assim, por exemplo, se a confirmação de código contiver alterações em arquivos HTML ou CSS, ela não poderá raciocinar sobre elas e voltará a executar todos os testes.
  • Sobreposições configuráveis. Você pode executar todos os testes em uma periodicidade configurada.

No entanto, esteja ciente das seguintes advertências ao usar o TIA com o Visual Studio 2015:

  • Execução de testes em paralelo. Neste caso, os testes são executados em série.
  • Execução de testes com cobertura de código habilitada. Nesse caso, os dados de cobertura de código não são coletados.

Cenários suportados pela Análise de Impacto de Teste

A análise de impacto de teste (TIA) é suportada para os seguintes cenários:

  • TFS 2017 Atualização 1 em diante e Azure Pipelines
  • Versão 2.* da tarefa de teste do Visual Studio no pipeline de compilação
  • Construa o vNext, com várias tarefas de VSTest
  • VS2015 Atualização 3 em diante no agente de compilação
  • Agentes de compilação locais e hospedados
  • CI e fluxos de trabalho de PR
  • Git, GitHub, outros tipos de Git, repositórios TFVC (incluindo repositórios TFVC parcialmente mapeados com uma solução alternativa)
  • Interações do IIS (sobre REST, APIs SOAP), usando protocolos HTTP/HTTPS
  • Testes automatizados
  • Topologia de máquina única. Os testes e o aplicativo (SUT) devem estar em execução na mesma máquina.
  • Código gerenciado (qualquer aplicativo .NET Framework, qualquer serviço .NET)

Não há suporte para TIA nos seguintes cenários:

  • Topologia de várias máquinas (onde o teste está exercendo um aplicativo implantado em uma máquina diferente)
  • Testes orientados por dados
  • Execução de teste paralelo específico do adaptador de teste
  • Núcleo do .NET
  • UWP

Mais informações sobre o escopo e as aplicações da TIA

Habilite a análise de impacto do teste

O TIA é suportado através da versão 2.* da tarefa de teste do Visual Studio. Se o seu aplicativo for uma aplicação de camada única, tudo o que você precisa fazer é marcar Executar apenas os testes afetados na interface de utilizador da tarefa. O coletor de dados Test Impact é configurado automaticamente. Não são necessárias mais etapas.

Ativar a TIA na interface de utilizador da tarefa VS Test

Se seu aplicativo interage com um serviço no contexto do IIS, você também deve configurar o coletor de dados Test Impact para ser executado no contexto do IIS usando um arquivo .runsettings . O exemplo a seguir cria essa configuração:

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <DataCollectionRunSettings>
    <DataCollectors>
      <!-- This is the TestImpact data collector.-->
      <DataCollector uri="datacollector://microsoft/TestImpact/1.0" assemblyQualifiedName="Microsoft.VisualStudio.TraceCollector.TestImpactDataCollector, Microsoft.VisualStudio.TraceCollector, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" friendlyName="Test Impact">
        <Configuration>
          <!-- enable IIS data collection-->
          <InstrumentIIS>True</InstrumentIIS>
          <!-- file level data collection -->
          <ImpactLevel>file</ImpactLevel>
          <!-- any job agent related executable or any other service that the test is using needs to be profiled. -->
          <ServicesToInstrument>
            <Name>TeamFoundationSshService</Name>
          </ServicesToInstrument>
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
</RunSettings>

Ver o resultado da Análise de Impacto do Teste

O TIA é integrado aos relatórios de teste existentes nos níveis de resumo e detalhes, incluindo e-mails de notificação.

O resumo dos relatórios inclui a integração TIA

A página Relatórios de testes inclui integração com o TIA

Mais informações sobre a integração TIA e Azure Pipelines

Gerenciar o comportamento da Análise de Impacto do Teste

Você pode influenciar a maneira como os testes são incluídos ou ignorados durante uma execução de teste:

  • Através da interface do usuário da tarefa VSTest. O TIA pode ser condicionado a executar todos os testes em uma periodicidade configurada. Recomenda-se definir essa opção e é o meio de regular a seleção do teste.
  • Definindo uma variável de compilação. Mesmo depois que o TIA estiver habilitado na tarefa VSTest, você poderá desativá-lo para uma compilação específica definindo a variável DisableTestImpactAnalysis como true. Essa sobrescrição força o TIA a executar todos os testes para essa compilação. Em compilações subsequentes, o TIA volta para a seleção de teste otimizada.

Quando o TIA abre uma confirmação e vê um tipo de arquivo desconhecido, ele volta a executar todos os testes. Embora essa ação seja boa do ponto de vista da segurança, ajustar esse comportamento pode ser útil em alguns casos. Por exemplo:

  • Defina a variável TIA_IncludePathFilters para caminhos específicos para incluir apenas esses caminhos em um repositório ao qual você deseja que o TIA se aplique. Essa ação é útil quando as equipes usam um repositório compartilhado. A configuração dessa variável desabilita o TIA para todos os outros caminhos não incluídos na configuração.
  • Defina a variável TIA_IncludePathFilters para especificar tipos de arquivo que não influenciam o resultado dos testes e para os quais as alterações devem ser ignoradas. Por exemplo, para ignorar alterações em arquivos .csproj, defina a variável como o valor: !\*\*\\\*.csproj.

Use o padrão de minicorrespondência ao definir variáveis e separe vários itens com ponto-e-vírgula.

Para avaliar se o TIA está selecionando os testes apropriados:

  • Valide manualmente a seleção. Um desenvolvedor que sabe como o SUT e os testes são arquitetados pode validar manualmente a seleção do teste usando os recursos de relatório TIA.
  • Execute os testes selecionados do TIA e, em seguida, todos os testes em sequência. Em um pipeline de compilação, use duas tarefas de teste - uma que executa apenas testes impactados (T1) e outra que executa todos os testes (T2). Se T1 passar, verifique se T2 passa também. Se houve um teste de falha em T1, verifique se T2 relata o mesmo conjunto de falhas.

Mais informações sobre a configuração avançada TIA

Fornecer mapeamentos de dependência personalizados

A TIA usa mapas de dependência da seguinte forma.

TestMethod1
  dependency1
  dependency2
TestMethod2
  dependency1
  dependency3

O TIA pode gerar um mapa de dependência para execução de código gerenciado. Onde essas dependências residem em .cs e .vb arquivos, o TIA pode observar automaticamente confirmações em tais arquivos e, em seguida, executar testes que tinham esses arquivos de origem em sua lista de dependências.

Você pode estender o escopo do TIA fornecendo explicitamente o mapa de dependências como um arquivo XML. Por exemplo, talvez você queira oferecer suporte a código em outras linguagens, como JavaScript ou C++, ou dar suporte ao cenário em que testes e código de produto estão sendo executados em máquinas diferentes. O mapeamento pode até ser aproximado, e o conjunto de testes que você deseja executar pode ser especificado em termos de um filtro de caso de teste, como você normalmente forneceria nos parâmetros da tarefa VSTest.

O arquivo XML deve ser verificado em seu repositório, normalmente no nível raiz. Em seguida, defina a variável de compilação TIA.UserMapFile para que aponte para esse ficheiro. Por exemplo, se o arquivo tiver o nome TIAmap.xml, defina a variável como $(System.DefaultWorkingDirectory)/TIAmap.xml.

Para obter um exemplo do formato de arquivo XML, consulte Mapeamento de dependência personalizado TIA.

Consulte Também

Ajuda e suporte