Megosztás a következőn keresztül:


A tesztelés felgyorsítja a tesztelést a Test Impact Analysis (TIA) használatával

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

A folyamatos integráció (CI) kulcsfontosságú gyakorlat az iparágban. Az integrációk gyakoriak, és egy olyan automatizált buildtel vannak ellenőrizve, amely regressziós teszteket futtat az integrációs hibák lehető leghamarabbi észleléséhez. A kódbázis növekedésével és kifejlettségével azonban a regressziós tesztcsomagja is növekedni fog – olyan mértékben, hogy a teljes regressziós teszt futtatása órákat igényelhet. Ez a tesztelés lelassítja az integráció gyakoriságát, és végső soron legyőzi a folyamatos integráció célját.

Ahhoz, hogy egy CI-folyamat gyorsan befejeződjön, egyes csapatok elhalasztják a hosszabb ideig futó tesztek végrehajtását a folyamat egy külön szakaszára. Ez a művelet azonban csak a folyamatos integráció további legyőzésére szolgál.

Ehelyett engedélyezze a Test Impact Analysis (TIA) szolgáltatást a Visual Studio tesztfeladatának buildelési folyamatban való használatakor. A TIA automatikus tesztkijelöléssel hajtja végre a növekményes ellenőrzést. Automatikusan csak a véglegesítéshez szükséges tesztek részhalmazát választja ki. A CI/CD-folyamatba belépő adott kód véglegesítés esetén a TIA csak a véglegesítés ellenőrzéséhez szükséges teszteket választja ki és futtatja. Ezért a tesztfuttatás gyorsabban befejeződik, ha egy hiba esetén hamarabb kap riasztást, és mivel az egész hatóköre a relevancia, az elemzés is gyorsabb.

A tesztelési idők összehasonlítása a TIA használatakor

A tesztelési hatáselemzés a következő:

  • Robusztus tesztkiválasztási mechanizmus. Ez magában foglalja a meglévő érintett teszteket, a korábban sikertelen teszteket és az újonnan hozzáadott teszteket.
  • Biztonságos tartalék. Az olyan véglegesítések és forgatókönyvek esetében, amelyeket a TIA nem tud értelmezni, az összes teszt futtatására visszaesik. A TIA jelenleg csak felügyelt kódra és egygépes topológiára terjed ki. Így például ha a kód véglegesítése HTML- vagy CSS-fájlok módosításait tartalmazza, az nem tudja őket indokolni, és visszaesik az összes teszt futtatására.
  • Konfigurálható felülbírálások. Az összes tesztet konfigurált időközönként futtathatja.

A TIA Visual Studio 2015-kel való használatakor azonban vegye figyelembe a következő kifogásokat:

  • Tesztek párhuzamos futtatása. Ebben az esetben a tesztek sorozatosan futnak.
  • Teszteket futtat, amelyeken engedélyezve van a kódlefedettség. Ebben az esetben a kódlefedettségi adatok nem lesznek összegyűjtve.

A hatáselemzés által támogatott forgatókönyvek tesztelése

A tesztelési hatáselemzés (TIA) a következő forgatókönyvekben támogatott:

  • A TFS 2017 1. frissítése és az Azure Pipelines
  • A Visual Studio Tesztelési feladatának 2.* verziója a buildelési folyamatban
  • VNext buildelése több VSTest-feladattal
  • A VS2015 3. frissítése a buildügynökön
  • Helyi és üzemeltetett buildügynökök
  • CI és pr munkafolyamatokban
  • Git, GitHub, Egyéb Git, TFVC-adattárak (beleértve a részben leképezett TFVC-adattárakat egy megkerülő megoldással)
  • IIS-interakciók (REST, SOAP API-k) HTTP/HTTPS protokollok használatával
  • Automatizált tesztek
  • Egygépes topológia. A teszteknek és az alkalmazásoknak (SUT) ugyanazon a gépen kell futniuk.
  • Felügyelt kód (bármely .NET-keretrendszer alkalmazás, .NET-szolgáltatás)

A TIA nem támogatott a következő esetekben:

  • Többgépes topológia (ahol a teszt egy másik gépen üzembe helyezett alkalmazást gyakorol)
  • Adatvezérelt tesztek
  • Tesztadapter-specifikus párhuzamos teszt végrehajtása
  • .NET Core
  • UWP

További információ a TIA hatóköréről és alkalmazásairól

Hatáselemzés tesztelésének engedélyezése

A TIA a Visual Studio Test feladat 2.* verziójával támogatott. Ha az alkalmazás egyrétegű alkalmazás, mindössze annyit kell tennie, hogy ellenőrzi , hogy csak az érintett tesztek futtatása szerepel-e a feladat felhasználói felületén. A Test Impact adatgyűjtő automatikusan konfigurálva van. Nincs szükség további lépésekre.

TIA engedélyezése a VS tesztfeladat felhasználói felületén

Ha az alkalmazás az IIS kontextusában kommunikál egy szolgáltatással, a Test Impact adatgyűjtőt is konfigurálnia kell úgy, hogy az IIS kontextusában fusson egy .runsettings-fájl használatával. A következő minta létrehozza ezt a konfigurációt:

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

A teszt hatáselemzési eredményeinek megtekintése

A TIA integrálva van a meglévő tesztjelentésekbe mind az összefoglaló, mind a részletek szintjén, beleértve az értesítési e-maileket is.

A jelentéskészítési összegzés tartalmazza a TIA-integrációt

A Jelentéskészítési tesztek lap TIA-integrációt tartalmaz

További információ a TIA és az Azure Pipelines integrációjáról

A tesztelési hatáselemzés viselkedésének kezelése

Befolyásolhatja, hogy a tesztek hogyan legyenek belefoglalva vagy figyelmen kívül hagyva a tesztfuttatás során:

  • A VSTest tevékenység felhasználói felületén keresztül. A TIA konfigurálható úgy, hogy az összes tesztet konfigurált időközönként futtassa. Ezt a beállítást ajánlott beállítani, és ez az eszköz a teszt kiválasztásának szabályozására.
  • Buildváltozó beállításával. A TIA engedélyezése után is letilthatja egy adott build esetében a DisableTestImpactAnalysis változó igaz értékre állításával. Ez a felülbírálás arra kényszeríti a TIA-t, hogy az adott buildhez tartozó összes tesztet futtassa. A későbbi buildekben a TIA visszatér az optimalizált tesztkiválasztáshoz.

Amikor a TIA megnyitja a véglegesítést, és ismeretlen fájltípust lát, az visszaesik az összes teszt futtatásához. Bár ez a művelet biztonsági szempontból jó, a viselkedés finomhangolása bizonyos esetekben hasznos lehet. Példa:

  • Állítsa be a TI_IncludePathFilters változót meghatározott elérési utakra, hogy csak azokat az elérési utakat tartalmazza egy adattárban, amelyre alkalmazni szeretné a TIA-t. Ez a művelet akkor hasznos, ha a csapatok megosztott adattárat használnak. A változó beállítása letiltja a TIA-t a beállításban nem szereplő összes többi elérési út esetében.
  • Állítsa be a TIA_IncludePathFilters változót olyan fájltípusok megadására, amelyek nem befolyásolják a tesztek eredményét, és amelyek módosításait figyelmen kívül kell hagyni. Ha például figyelmen kívül szeretné hagyni a.csproj fájlok módosításait, állítsa a változót a következő értékre: !\*\*\\\*.csproj.

A változók beállításakor használja a minimatch mintát , és több elemet különítse el pontosvesszővel.

Annak kiértékelése, hogy a TIA kiválasztja-e a megfelelő teszteket:

  • A kijelölés manuális ellenőrzése. Egy fejlesztő, aki ismeri a SUT és a tesztek létrehozásának módját, manuálisan ellenőrizheti a tesztkijelölést a TIA jelentéskészítési képességeivel.
  • Futtassa a kiválasztott TIA-teszteket, majd az összes tesztet egymás után. Egy buildelési folyamatban használjon két tesztfeladatot – az egyiket, amely csak az érintett teszteket futtatja (T1), a másikat, amely az összes tesztet futtatja (T2). Ha A T1 áthalad, ellenőrizze, hogy a T2 is áthalad-e. Ha hibateszt történt a T1-ben, ellenőrizze, hogy a T2 ugyanazokat a hibákat jelenti-e.

További információ a TIA speciális konfigurációjáról

Egyéni függőségleképezések biztosítása

A TIA az alábbi űrlap függőségi térképét használja.

TestMethod1
  dependency1
  dependency2
TestMethod2
  dependency1
  dependency3

A TIA létrehozhat egy függőségi térképet a felügyelt kódvégrehajtáshoz. Ha ilyen függőségek találhatók .cs és .vb fájlok, a TIA automatikusan figyelheti az ilyen fájlokban való véglegesítéseket, majd futtathat teszteket, amelyekben ezek a forrásfájlok szerepelnek a függőségek listájában.

A TIA hatókörét úgy terjesztheti ki, hogy a függőségi megfeleltetés kifejezetten XML-fájlként van megadva. Előfordulhat például, hogy más nyelveken, például JavaScripten vagy C++-on szeretné támogatni a kódot, vagy támogatni szeretné azt a forgatókönyvet, amelyben a tesztek és a termékkódok különböző gépeken futnak. A leképezés akár hozzávetőleges is lehet, és a futtatni kívánt tesztek egy teszteset-szűrőben is megadhatók, például a VSTest tevékenységparaméterekben általában.

Az XML-fájlt be kell venni az adattárba, általában a gyökérszinten. Ezután állítsa be a TIA buildváltozót . UserMapFile , hogy mutasson rá. Ha például a fájl neve TIAmap.xml, állítsa a változót $(System.DefaultWorkingDirectory)/TIAmap.xml értékre.

Példa az XML-fájlformátumra: TIA custom dependency mapping.

Kapcsolódó információk

Súgó és támogatás