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


Tesztek párhuzamos futtatása a Visual Studio tesztelési feladatával

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

A kódmódosítások ellenőrzésére vonatkozó tesztek futtatása kulcsfontosságú a minőség fenntartásához. Ahhoz, hogy a folyamatos integrációs gyakorlat sikeres legyen, mindenképpen rendelkeznie kell egy jó tesztcsomaggal, amely minden buildtel fut. A kódbázis növekedésével azonban a regressziós tesztcsomag is növekszik, és a teljes regressziós teszt futtatása hosszú időt vehet igénybe. Előfordulhat, hogy maguk a tesztek hosszú ideig futnak – ez általában akkor fordul elő, ha végpontok közötti teszteket ír. Ez csökkenti az ügyfélértékek kézbesítésének sebességét, mivel a folyamatok nem tudják elég gyorsan feldolgozni a buildeket.

A tesztek párhuzamos futtatása nagyszerű módszer a CI/CD-folyamatok hatékonyságának javítására. Ez egyszerűen elvégezhető a felhő által kínált további kapacitás alkalmazásával. Ez a cikk azt ismerteti, hogyan konfigurálhatja a Visual Studio tesztelési feladatát a tesztek párhuzamos futtatására több ügynök használatával.

Előfeltétel

Ismerkedjen meg az ügynökök és a feladatok fogalmaival. Több feladat párhuzamos futtatásához több ügynököt kell konfigurálni. Elegendő párhuzamos feladatra is szüksége van.

Szeletelés tesztelése

A Visual Studio tesztfeladat (2. verzió) úgy lett kialakítva, hogy zökkenőmentesen működjön a párhuzamos feladatok beállításaival. Ha a Visual Studio-tesztfeladatot tartalmazó folyamatfeladat (az egyszerűség kedvéért a VSTest-feladat) több ügynök egyidejű futtatására van konfigurálva, automatikusan észleli, hogy több ügynök is érintett, és olyan tesztszeleteket hoz létre, amelyek párhuzamosan futtathatók ezen ügynökök között.

A feladat úgy konfigurálható, hogy különböző követelményeknek megfelelő tesztszeleteket hozzon létre, például a tesztek és ügynökök száma, az előző teszt futási ideje vagy a tesztek helye alapján a szerelvényekben.

Kötegelési beállítások

Ezeket a lehetőségeket a következő szakaszok ismertetik.

Egyszerű szeletelés a tesztek és ügynökök száma alapján

Ez a beállítás egy egyszerű szeletelő algoritmus használatával osztja el a "T" tesztek számát az "N" ügynökök között, így minden ügynök T/N-teszteket futtat. Ha például a tesztcsomag 1000 tesztet tartalmaz, és két ügynököt használ párhuzamos feladatokhoz, mindegyik ügynök 500 tesztet futtat. Vagy csökkentheti a tesztek futtatásához szükséges időt nyolc ügynök használatával, amely esetben minden ügynök 125 tesztet futtat párhuzamosan.

Ezt a beállítást általában akkor használják, ha minden tesztnek hasonló futási ideje van. Ha a teszt futásideje nem hasonló, előfordulhat, hogy az ügynökök nem lesznek hatékonyan kihasználva, mert egyes ügynökök több hosszú ideig futó teszttel rendelkező szeleteket kapnak, míg más ügynökök rövid ideig futó tesztekkel rendelkező szeleteket kaphatnak, és sokkal korábban fejeződhetnek be, mint a többi ügynök.

Szeletelés a tesztek korábbi futási ideje alapján

Ez a beállítás figyelembe veszi a korábbi futási időket, hogy tesztszeleteket hozzon létre, hogy az egyes szeletek futási ideje körülbelül azonos legyen. A rövid ideig futó tesztek kötegelve lesznek, míg a hosszú ideig futó tesztek külön szeletekhez lesznek lefoglalva.

Ezt a lehetőséget akkor érdemes használni, ha a szerelvényen belüli tesztek nem rendelkeznek függőségekkel, és nem kell ugyanazon az ügynökön futniuk. Ez a lehetőség az ügynökök leghatékonyabb kihasználtságát eredményezi, mivel minden ügynök ugyanolyan mennyiségű "munkát" kap, és mindegyik körülbelül ugyanabban az időben fejeződik be.

Szeletelés tesztszerelvények alapján

Ez a beállítás egy egyszerű szeletelő algoritmust használ, amely felosztja az "A" tesztszerelvények (vagy fájlok) számát az "N" ügynökök között, így minden ügynök A/N-szerelvényekből futtat teszteket. A rendszer nem veszi figyelembe a szerelvényen belüli tesztek számát a beállítás használatakor. Ha például a tesztcsomag tíz tesztszerelvényt tartalmaz, és két ügynököt használ párhuzamos feladatokhoz, minden ügynök öt tesztszerelvényt kap a futtatáshoz. Öt ügynök használatával még tovább csökkentheti a tesztek futtatásához szükséges időt, ebben az esetben minden ügynök két tesztszerelvényt kap a futtatáshoz.

Ezt a lehetőséget akkor érdemes használni, ha egy szerelvényen belüli tesztek függőségekkel rendelkeznek, vagy a tesztkód állapotának kezelésére és – vagy ClassInitialize metódusok – használatára és ClassCleanup kezelésére szolgálnakAssemblyInitialize.AssemblyCleanup

Tesztek párhuzamos futtatása klasszikus buildelési folyamatokban

Ha nagy tesztcsomagot vagy hosszú ideig futó integrációs tesztcsomagot használ a klasszikus buildelési folyamatban való futtatáshoz, kövesse az alábbi lépéseket.

Feljegyzés

Ha a többügynökös képességet helyszíni TFS-kiszolgálóval rendelkező buildfolyamatokban szeretné használni, a TFS 2018 Update 2 vagy újabb verzióját kell használnia.

  1. Feladat létrehozása egyetlen ügynökkel. Visual Studio-projektek létrehozása és buildösszetevők közzététele az alábbi képen látható feladatok használatával. Ez az alapértelmezett feladatbeállításokat használja (egyetlen ügynök, nincs párhuzamos feladat).

    buildJobSingleAgent

  2. Tesztek párhuzamos futtatása több ügynökkel:

    • Ügynökfeladat hozzáadása

      AddAgentJobBuild

    • Konfigurálja a feladatot több ügynök egyidejű használatára. Az alábbi példa három ügynököt használ.

      ParallelTestJobBuild

      Tipp.

      A nagymértékben párhuzamos teszteléshez akár 99 ügynököt is megadhat.

    • Adjon hozzá egy buildösszetevő-letöltési feladatot a feladathoz. Ez a lépés a buildelési feladat és a tesztfeladat közötti kapcsolat, és annak biztosításához szükséges, hogy a buildelési feladatban létrehozott bináris fájlok elérhetők legyenek a tesztfeladat által a tesztek futtatásához használt ügynökökön. Győződjön meg arról, hogy a tevékenység úgy van beállítva, hogy letöltse az "Aktuális build" által előállított összetevőket, és az összetevő neve megegyezik a buildelési feladat Buildösszetevők közzététele tevékenységében használt összetevő nevével.

      DownloadBuildArtifacts

    • Adja hozzá a Visual Studio Test feladatot, és konfigurálja a szükséges szeletelési stratégia használatára.

Feladatok beállítása párhuzamos teszteléshez YAML-folyamatokban

Adja meg a parallel stratégiát a job mezőben, és adja meg, hogy hány feladatot kell elküldeni. A nagyméretű tesztcsomagok tesztelésének skálázásához legfeljebb 99 ügynök adható meg.

jobs:
- job: ParallelTesting
  strategy:
    parallel: 2

További információ: YAML-séma – Feladat.

Tesztek párhuzamos futtatása klasszikus kiadási folyamatokban

Ha nagy tesztcsomagot vagy hosszú ideig futó funkcionális tesztcsomagot használ az alkalmazás üzembe helyezése után, kövesse az alábbi lépéseket. Előfordulhat például, hogy egy webalkalmazást szeretne üzembe helyezni, és szelénteszteket futtatni egy böngészőben az alkalmazás működésének ellenőrzéséhez.

Feljegyzés

Ha a többügynökös képességet helyszíni TFS-kiszolgálóval rendelkező kiadási folyamatokban szeretné használni, a TFS 2017 Update 1 vagy újabb verzióját kell használnia.

  1. Alkalmazás üzembe helyezése egyetlen ügynökkel. Az Azure Deployment: Erőforráscsoport létrehozása vagy frissítése vagy a Azure-alkalmazás szolgáltatás üzembe helyezése feladat használatával webalkalmazást helyezhet üzembe Azure-alkalmazás szolgáltatásokban. Ez az alapértelmezett feladatbeállításokat használja (egyetlen ügynök, nincs párhuzamos feladat).

    DeployApp1Agent

  2. Tesztek párhuzamos futtatása több ügynökkel:

    • Ügynökfeladat hozzáadása

      AddAgentJobRM

    • Konfigurálja a feladatot több ügynök egyidejű használatára. Az alábbi példa három ügynököt használ.

      ParallelTestJobRM

      Tipp.

      A nagymértékben párhuzamos teszteléshez akár 99 ügynököt is megadhat.

    • Adjon hozzá minden további feladatot , amelyet a Visual Studio tesztelési feladatának futtatása előtt futtatnia kell. Futtasson például egy PowerShell-szkriptet a tesztekhez szükséges adatok beállításához.

      Tipp.

      A kiadási folyamatok feladatai alapértelmezés szerint letöltik a kiadási folyamathoz társított összes összetevőt. Időt takaríthat meg, ha úgy konfigurálja a feladatot, hogy csak a feladat által igényelt tesztösszetevőket töltse le. Például a webalkalmazás bináris fájljai nem szükségesek a szeléntesztek futtatásához, és ezek letöltése kihagyható, ha az alkalmazást és a tesztösszetevőket a buildelési folyamat külön teszi közzé.

    • Adja hozzá a Visual Studio Test feladatot, és konfigurálja a szükséges szeletelési stratégia használatára.

      Tipp.

      Ha a tesztgépeken nincs telepítve a Visual Studio, a Visual Studio tesztplatform-telepítő feladatával beszerezheti a tesztplatform szükséges verzióját.

Nagymértékben párhuzamos tesztelés párhuzamos folyamatfeladatok párhuzamos tesztvégrehajtással való kombinálásával

Ha párhuzamos feladatokat használ egy folyamatban, több gépet (ügynököt) használ az egyes feladatok párhuzamos futtatásához. A tesztelési keretrendszerek és futók emellett lehetővé teszik a tesztek párhuzamos futtatását egyetlen gépen, jellemzően több párhuzamosan futó folyamat vagy szál létrehozásával. A párhuzamossági funkciók rétegzett módon kombinálhatók a nagymértékben párhuzamos tesztelés érdekében. A Visual Studio Test feladat kontextusában a párhuzamosság a következő módokon kombinálható:

  1. A tesztelési keretrendszerek által kínált párhuzamosság. Minden modern tesztelési keretrendszer, például az MSTest v2, az NUnit, az xUnit és mások lehetővé teszik a tesztek párhuzamos futtatását. Egy szerelvény tesztjei általában párhuzamosan futnak. Ezek a tesztelési keretrendszerek egy tesztadapterrel és a tesztelési keretrendszerrel, valamint a megfelelő adapterrel kapcsolódnak a Visual Studio Tesztplatformhoz, és egy tesztgazdafolyamaton belül működnek, amelyet a Visual Studio Tesztplatform hoz létre a tesztek futtatásakor. Ezért ezen a rétegen a párhuzamosítás az összes keretrendszer és adapter folyamatán belül van.

  2. A Visual Studio Test Platform (vstest.console.exe) által kínált párhuzamosság. A Visual Studio Test Platform párhuzamosan futtathat tesztszerelvényeket. A vstest.console.exe felhasználói ezt /párhuzamos kapcsolóként fogják felismerni. Ezt úgy teszi, hogy elindít egy tesztgazdafolyamatot az egyes elérhető magokon, és átadja a teszteket egy szerelvényben a végrehajtáshoz. Ez minden olyan keretrendszer esetében működik, amely rendelkezik tesztadapterrel a Visual Studio tesztplatformhoz, mivel a párhuzamosítás egy tesztszerelvény vagy tesztfájl. Ez a tesztelési keretrendszerek által kínált (fent ismertetett) párhuzamossággal kombinálva biztosítja a párhuzamosság maximális fokát, amikor a tesztek egyetlen ügynökön futnak a folyamatban.

  3. A Visual Studio Test (VSTest) feladat által kínált párhuzamosság. A VSTest-feladat támogatja a tesztek párhuzamos futtatását több ügynök (vagy gép) között. A rendszer tesztszeleteket hoz létre, és minden ügynök egyszerre egy szeletet hajt végre. A három különböző szeletelési stratégia a tesztplatform és a tesztelési keretrendszer által kínált párhuzamossággal kombinálva (a fent leírtak szerint) a következőket eredményezi:

    • Szeletelés a tesztek és ügynökök száma alapján. Egyszerű szeletelés, ahol a tesztek egyenlő méretű szeletekbe vannak csoportosítva. A szeletek egy vagy több szerelvény tesztjeit tartalmazzák. A tesztvégrehajtás az ügynökön ezután megfelel a fenti 1. és 2. szakaszban leírt párhuzamosságnak.

    • Szeletelés a korábbi futási idő alapján. A tesztek futtatásának korábbi időzítései és a rendelkezésre álló ügynökök száma alapján a tesztek szeletekbe vannak csoportosítva, így az egyes szeletek körülbelül egyenlő végrehajtási időt igényelnek. A szeletek egy vagy több szerelvény tesztjeit tartalmazzák. A tesztvégrehajtás az ügynökön ezután megfelel a fenti 1. és 2. szakaszban leírt párhuzamosságnak.

    • Szeletelés szerelvények alapján. A szeletek tesztszerelvények, így olyan teszteket tartalmaznak, amelyek mindegyike ugyanahhoz a szerelvényhez tartozik. Az ügynökön végzett végrehajtás ezután megfelel a fenti 1. és 2. szakaszban leírt párhuzamosságnak. Előfordulhat azonban, hogy nem történik meg 2, ha egy ügynök csak egy futtatandó szerelvényt kap.

Súgó és támogatás