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 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.
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.
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
- A TIA áttekintése és a VSTS-integráció
- TIA-hatókör és alkalmazások
- TIA speciális konfigurációja
- TIA egyéni függőségek leképezése
Súgó és támogatás
- Tekintse meg a hibaelhárítási oldalt
- Kérjen tanácsot a Stack Overflow-ról, és kérjen támogatást a fejlesztői közösségen keresztül