Sdílet prostřednictvím


Zrychlení testování pomocí analýzy dopadu testu (TIA)

Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019

Kontinuální integrace (CI) je klíčovou praxí v oboru. Integrace jsou časté a ověřují se pomocí automatizovaného sestavení, které spouští regresní testy, aby co nejdříve detekovali chyby integrace. Když ale základ kódu roste a zralý, sada regresních testů má tendenci také růst – v rozsahu, kdy spuštění úplného regresního testu může vyžadovat hodiny. Toto testování zpomalí frekvenci integrací a nakonec porazí účel kontinuální integrace.

Pokud chcete mít kanál CI, který se dokončí rychle, některé týmy odloží provádění delších testů na samostatnou fázi kanálu. Tato akce ale slouží pouze k další porážce kontinuální integrace.

Místo toho povolte analýzu dopadu testu (TIA) při použití úlohy Visual Studio Test v kanálu buildu. TIA provádí přírůstkové ověření automatickým výběrem testu. Automaticky vybere jenom podmnožinu testů potřebných k ověření potvrzeného kódu. U daného potvrzení kódu, které zadává kanál CI/CD, TIA vybere a spustí pouze relevantní testy potřebné k ověření potvrzení. Proto se testovací běh dokončí rychleji, pokud dojde k selhání, které se zobrazí dříve, a protože je vše vymezeno podle relevance, analýza je také rychlejší.

Porovnání testovacích časů při použití TIA

Analýza dopadu testu má:

  • Robustní testovací výběrový mechanismus. Zahrnuje existující ovlivněné testy, dříve neúspěšné testy a nově přidané testy.
  • Bezpečný náhradník. U potvrzení a scénářů, kterým TIA nerozumí, se vrátí ke spuštění všech testů. TIA je v současné době vymezen pouze na spravovaný kód a topologii jednoho počítače. Pokud například potvrzení kódu obsahuje změny v souborech HTML nebo CSS, nemůže je zdůvodnit a vrátit se ke spuštění všech testů.
  • Konfigurovatelné přepsání Všechny testy můžete spouštět v nakonfigurované periodicitě.

Při použití TIA se sadou Visual Studio 2015 však mějte na paměti následující upozornění:

  • Paralelní spouštění testů V tomto případě testy běží sériově.
  • Spouštění testů s povoleným pokrytím kódu V tomto případě se data pokrytí kódu neshromažďuje.

Podporované scénáře analýzy dopadu testu

Analýza dopadu testu (TIA) se podporuje v následujících scénářích:

  • TFS 2017 Update 1 a Azure Pipelines
  • Verze 2.* úlohy Visual Studio Test v kanálu buildu
  • Sestavení vNext s několika úlohami VSTest
  • VS2015 Update 3 a novější agent sestavení
  • Místní a hostovaní agenti sestavení
  • Ci a v pracovních postupech žádosti o přijetí změn
  • Úložiště Git, GitHub, Other Git, TFVC (včetně částečně namapovaných úložišť TFVC s alternativním řešením)
  • Interakce služby IIS (přes rozhraní REST, rozhraní SOAP API) s využitím protokolů HTTP/HTTPS
  • Automatizované testy
  • Topologie jednoho počítače. Testy a aplikace (SUT) musí běžet na stejném počítači.
  • Spravovaný kód (libovolná aplikace .NET Framework, libovolná služba .NET)

TiA se nepodporuje pro následující scénáře:

  • Topologie s více počítači (kde test provádí cvičení aplikace nasazené na jiný počítač)
  • Testy řízené daty
  • Paralelní spuštění testu specifického pro adaptér
  • .NET Core
  • UWP

Další informace o oboru a aplikacích TIA

Povolení analýzy dopadu testu

TIA je podporována prostřednictvím verze 2.* úlohy Visual Studio Test . Pokud je vaše aplikace jednovrstvé aplikace, stačí jen zkontrolovat spuštění ovlivněných testů v uživatelském rozhraní úloh. Kolektor dat dopadu testu se konfiguruje automaticky. Nejsou vyžadovány žádné další kroky.

Povolení TIA v uživatelském rozhraní testovací úlohy VS

Pokud vaše aplikace pracuje se službou v kontextu služby IIS, musíte také nakonfigurovat kolektor dat dopadu testu tak, aby běžel v kontextu služby IIS pomocí souboru .runsettings . Následující ukázka vytvoří tuto konfiguraci:

<?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>

Zobrazení výsledku analýzy dopadu testu

TIA je integrovaná do existujících sestav testů na úrovni souhrnu i podrobností, včetně e-mailů s oznámeními.

Souhrn sestav zahrnuje integraci TIA.

Stránka Testování sestav zahrnuje integraci TIA.

Další informace o integraci TIA a Azure Pipelines

Správa chování analýzy dopadu testu

Můžete ovlivnit způsob, jakým jsou testy zahrnuté nebo ignorovány během testovacího běhu:

  • Prostřednictvím uživatelského rozhraní úlohy VSTest. TiA může být podmíněna tak, aby se všechny testy spouštěly v nakonfigurované periodii. Toto nastavení se doporučuje a je to způsob, jak regulovat výběr testu.
  • Nastavením proměnné sestavení. I po povolení TIA v úloze VSTest ji můžete pro konkrétní sestavení zakázat nastavením proměnné DisableTestImpactAnalysis na hodnotu true. Toto přepsání vynutí, aby tiA spustila všechny testy pro dané sestavení. V dalších buildech se TIA vrátí k optimalizovaným výběrům testů.

Když TIA otevře potvrzení a zobrazí neznámý typ souboru, vrátí se zpět ke spuštění všech testů. I když je tato akce dobrá z hlediska bezpečnosti, ladění tohoto chování může být v některých případech užitečné. Příklad:

  • Nastavte proměnnou TI_IncludePathFilters na konkrétní cesty, aby zahrnovala pouze tyto cesty v úložišti, pro které chcete použít TIA. Tato akce je užitečná, když týmy používají sdílené úložiště. Nastavení této proměnné zakáže TIA pro všechny ostatní cesty, které nejsou součástí tohoto nastavení.
  • Nastavte proměnnou TIA_IncludePathFilters tak, aby určila typy souborů, které nemají vliv na výsledek testů a u kterých změn by se měly ignorovat. Pokud například chcete ignorovat změny souborů .csproj, nastavte proměnnou na hodnotu: !\*\*\\\*.csproj.

Při nastavování proměnných použijte vzor minimatch a oddělte více položek středníkem.

Vyhodnocení, jestli TIA vybírá příslušné testy:

  • Výběr ověřte ručně. Vývojář, který ví, jak jsou navrženy SUT a testy, může výběr testu ověřit ručně pomocí možností vytváření sestav TIA.
  • Spusťte vybrané testy TIA a pak všechny testy postupně. V kanálu buildu použijte dvě testovací úlohy – jednu, která spouští pouze ovlivněné testy (T1) a jednu, která spouští všechny testy (T2). Pokud T1 projde, zkontrolujte také, že T2 projde. Pokud v T1 došlo k selhání testu, zkontrolujte, jestli T2 hlásí stejnou sadu selhání.

Další informace o pokročilé konfiguraci TIA

Poskytnutí vlastních mapování závislostí

TIA používá mapy závislostí následujícího formuláře.

TestMethod1
  dependency1
  dependency2
TestMethod2
  dependency1
  dependency3

TIA může vygenerovat mapu závislostí pro spuštění spravovaného kódu. Pokud se tyto závislosti nacházejí v souborech a .vb v .cs souborech, tiA může automaticky sledovat potvrzení do takových souborů a pak spouštět testy, které měly tyto zdrojové soubory v seznamu závislostí.

Rozsah TIA můžete rozšířit explicitním zadáním mapování závislostí jako souboru XML. Můžete například chtít podporovat kód v jiných jazycích, jako je JavaScript nebo C++, nebo podporovat scénář, ve kterém běží testy a kód produktu na různých počítačích. Mapování může být i přibližné a sada testů, které chcete spustit, je možné zadat z hlediska filtru testovacího případu, jako byste obvykle zadali parametry úlohy VSTest.

Soubor XML by se měl vrátit do úložiště, obvykle na kořenové úrovni. Pak nastavte proměnnou sestavení TIA. UserMapFile , který na něj má odkazovat. Pokud je například soubor pojmenován TIAmap.xml, nastavte proměnnou na $(System.DefaultWorkingDirectory)/TIAmap.xml.

Příklad formátu souboru XML najdete v tématu Mapování vlastních závislostí TIA.

Viz také

Nápověda a podpora