Hirgelinta, cabbirka: waayo-aragnimada isticmaalka tijaabooyinka iswada ee VTB

Qaybtayadu waxay abuurtaa dhuumo toos ah si ay u bilaabaan noocyo cusub oo codsiyada deegaanka wax soo saarka. Dabcan, tani waxay u baahan tahay tijaabooyin shaqo oo toos ah. Hoosta gooyntu waa sheeko ku saabsan sida, laga bilaabo tijaabinta hal-thread ee mishiinka maxalliga ah, waxaan gaadhnay heerka autotest multi-threaded ee ku socda Selenoid ee dhuumaha dhismaha iyada oo la raacayo warbixinta Allure ee bogagga GitLab oo ugu dambeyntii helnay qalab otomaatig ah oo qabow. in dadka mustaqbalka ay isticmaali karaan kooxo.

Hirgelinta, cabbirka: waayo-aragnimada isticmaalka tijaabooyinka iswada ee VTB

Xagee ka bilownay?

Si loo hirgeliyo tijaabinta iswada oo aan ku dhex galno dhuumaha, waxaan u baahnay qaab-dhismeedka otomaatiga ah oo si dabacsan loo beddeli karo si loo waafajiyo baahideena. Fikrad ahaan, waxaan rabay in aan helo hal halbeeg oo loogu talagalay mishiinka tijaabinta, oo loo habeeyey ku dhejinta autotests ee dhuumaha. Hirgelinta waxaan dooranay tignoolajiyada soo socda:

  • Java,
  • Maven,
  • Selenium,
  • Qajaar+JUNIT 4,
  • Dareen,
  • GitLab.

Hirgelinta, cabbirka: waayo-aragnimada isticmaalka tijaabooyinka iswada ee VTB

Waa maxay sababta setkan gaarka ah? Java waa mid ka mid ah luqadaha ugu caansan ee imtixaanada otomaatiga ah, dhammaan xubnaha kooxdana way ku hadlaan. Selenium waa xal cad. Qajaarka, iyo waxyaabo kale, ayaa loo malaynayay inay kordhiso kalsoonida natiijooyinka imtixaanada otomaatiga ah ee qayb ka mid ah waaxaha ku lug leh baaritaanka gacanta.

Tijaabooyin dunta kaliya ah

Si aan dib loogu soo celin giraangiraha, waxaan ka soo qaadnay horumarino meelo kala duwan oo GitHub ah oo saldhig u ah qaab-dhismeedka waxaanan u habeynay nafteena. Waxaan u abuurnay kayd maktabadda ugu weyn oo leh udub dhexaadka qaabka autotest iyo meel kayd ah oo leh tusaale Dahab ah oo ku saabsan hirgelinta autotests ee xuduntayada. Koox kastaa waxay ahayd inay qaataan sawirka Dahabka ah oo ay ku horumariyaan tijaabooyinka dhexdiisa, iyaga oo la qabsanaya mashruucooda. Waxaan geynay bangiga GitLab-CI, kaas oo aan ku habeynay:

  • socodka maalinlaha ah ee dhammaan autotests qoran ee mashruuc kasta;
  • bilaabaya dhuumaha dhismaha.

Markii hore waxaa jiray tijaabooyin yar, waxaana lagu sameeyay hal ilbidhiqsi. Hal-threaded oo ku ordaya orodyahanka Windows GitLab aad buu noogu habboonaa: imtixaanadu waxay si fudud ugu shubeen keydka tijaabada oo aan loo isticmaalin wax agab ah.

Muddo ka dib, tirada autotes-yada ayaa aad u batay, waxaanan ku fekernay inaan ku soconno si isku mid ah, markii ay si buuxda u bilawday inay qaadato ilaa saddex saacadood. Dhibaatooyin kale ayaa sidoo kale soo muuqday:

  • ma xaqiijin karno in imtixaanadu ahaayeen kuwo deggan;
  • Tijaabooyin dhowr jeer oo xiriir ah lagu sameeyay mashiinka deegaanka ayaa mararka qaarkood ku burburay CI.

Tusaalaha dejinta autotests:

<plugins>
	
<plugin>
    	
<groupId>org.apache.maven.plugins</groupId>
    	
<artifactId>maven-surefire-plugin</artifactId>
    	
<version>2.20</version>
    	
<configuration>
        	
<skipTests>${skipTests}</skipTests>
        	
<testFailureIgnore>false</testFailureIgnore>
        	
<argLine>
            	
-javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
            	
-Dcucumber.options="--tags ${TAGS} --plugin io.qameta.allure.cucumber2jvm.AllureCucumber2Jvm --plugin pretty"
        	
</argLine>
    	
</configuration>
	
    <dependencies>
        	
<dependency>
            	
<groupId>org.aspectj</groupId>
            	
<artifactId>aspectjweaver</artifactId>
            	
<version>${aspectj.version}</version>
        	
</dependency>
    	
</dependencies>
	
</plugin>
	
<plugin>
    	
<groupId>io.qameta.allure</groupId>
    	
<artifactId>allure-maven</artifactId>
    	
<version>2.9</version>
	
</plugin>
</plugins>

 Hirgelinta, cabbirka: waayo-aragnimada isticmaalka tijaabooyinka iswada ee VTB
Tusaalaha warbixinta Allure

 Hirgelinta, cabbirka: waayo-aragnimada isticmaalka tijaabooyinka iswada ee VTB
Culayska orodka inta lagu jiro imtixaanada (8 koor, 8 GB RAM, 1 dun)
 
Faa'iidooyinka imtixaannada-threaded:

  • fududahay in la dejiyo oo la ordo;
  • bilaabista CI dhab ahaantii kama duwana soo saarista maxaliga ah;
  • imtixaanadu isma saameeyaan;
  • shuruudaha ugu yar ee ilaha orodka.

Faa'iido darrada imtixaannada hal-string-ka ah:

  • waqti aad u dheer ku qaado si aad u dhamaystirto;
  • xasilinta dheer ee imtixaanada;
  • Isticmaalka aan fiicnayn ee ilaha orodyahanada, isticmaalka aad u hooseeya.

Tijaabooyinka fargeetoyada JVM

Maadaama aynaan daryeelin koodhka badqabka ah ee dunta leh marka la fulinayo qaabka aasaasiga ah, habka ugu cad ee loo ordi karo barbar socda ayaa ahaa. qajaar-jvm-barbar-plugin ee Maven. Plugin-ku waa ay fududahay in la habeeyo, laakiin hawlgalka saxda ah ee barbar socda, autotests waa in lagu socodsiiyaa daalacashada kala duwan. Ma jiraan wax la sameeyo, waa inaan isticmaalo Selenoid.

Selenoid server-ka waxa lagu bilaabay mishiin leh 32 cores iyo 24 GB oo RAM ah. Xadka waxaa lagu dejiyay 48 browsers - 1,5 threads halkii xudunta iyo ilaa 400 MB RAM ah. Natiijo ahaan, wakhtiga tijaabada ayaa laga dhigay saddex saacadood ilaa 40 daqiiqo. Dadajinta orodyadu waxay gacan ka gaysatay xalinta dhibaatada xasilinta: hadda waxaan si dhakhso ah u socodsiin karnaa autotests cusub 20-30 jeer ilaa aan ka hubinay inay si kalsooni leh u ordeen.
Dhibaatada ugu horreysa ee xalku waxay ahayd isticmaalka sare ee kheyraadka orodyahanka oo leh tiro yar oo xadhig ah oo isku mid ah: 4 cores iyo 8 GB ee RAM, imtixaanadu waxay ku socdeen wax aan ka badnayn 6 dun. Khasaaraha labaad: plugin-ku wuxuu soo saaraa fasallada orodyahanka ee xaalad kasta, iyada oo aan loo eegin inta iyaga ka mid ah ayaa la bilaabay.

Muhiim! Ha u gudbin doorsoome leh calaamado argLine, tusaale ahaan, sidan:

<argLine>-Dcucumber.options="--tags ${TAGS} --plugin io.qameta.allure.cucumber2jvm.AllureCucumber2Jvm --plugin pretty"</argLine>
…
Mvn –DTAGS="@smoke"

Haddii aad ku gudubto sumadda habkan, plugin-ku wuxuu dhalin doonaa orodyahanno dhammaan imtixaannada, taas oo ah, waxay isku dayi doontaa inay socodsiiso dhammaan imtixaannada, isla markiiba ka boodo ka dib marka la furo oo abuurto fargeeto badan oo JVM ah.

Waa sax in lagu tuuro doorsoome leh sumad tags goobaha plugin, eeg tusaalaha hoose. Hababka kale ee aan tijaabinay waxay leeyihiin dhibaatooyin isku xidhka Allure plugin.

Tusaale ahaan wakhtiga socda ee 6 imtixaano gaagaaban oo leh goobo khaldan:

[INFO] Total time: 03:17 min

Tusaalaha wakhtiga tijaabada tijaabada ah haddii aad si toos ah ugu wareejiso summada mvn... -Dcucumber.options:

[INFO] Total time: 44.467 s

Tusaalaha dejinta autotests:

<profiles>
	
<profile>
    	
<id>parallel</id>
    	
<build>
        	
<plugins>
            	
<plugin>
                	
<groupId>com.github.temyers</groupId>
                	
<artifactId>cucumber-jvm-parallel-plugin</artifactId>
                	
<version>5.0.0</version>
                	
<executions>
                    	
<execution>
                        	
<id>generateRunners</id>
                        	
<phase>generate-test-sources</phase>
                        	
<goals>
                            	
<goal>generateRunners</goal>
                        	
</goals>
                        	
<configuration>
                	
            <tags>
                            	
<tag>${TAGS}</tag>
                            	
</tags>
                            	
<glue>
                                	
<package>stepdefs</package>
                            	
</glue>
                        	
</configuration>
     	
               </execution>
                	
</executions>
    	
        </plugin>
            	
<plugin>
                	
<groupId>org.apache.maven.plugins</groupId>
                	
<artifactId>maven-surefire-plugin</artifactId>
        	
        <version>2.21.0</version>
                	
<configuration>
                    	
<forkCount>12</forkCount>
                    	
<reuseForks>false</reuseForks>
                    	
<includes>**/*IT.class</includes>
                   	
 <testFailureIgnore>false</testFailureIgnore>
                    	
<!--suppress UnresolvedMavenProperty -->
                    	
<argLine>
  	
 -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar" -Dcucumber.options="--plugin io.qameta.allure.cucumber2jvm.AllureCucumber2Jvm TagPFAllureReporter --plugin pretty"
                    	
</argLine>
                	
</configuration>
                	
<dependencies>
                    	
<dependency>
                        	
<groupId>org.aspectj</groupId>
                        	
<artifactId>aspectjweaver</artifactId>
                        	
<version>${aspectj.version}</version>
                 	
   </dependency>
                	
</dependencies>
         	
   </plugin>
        	
</plugins>
    	
</build>
	
</profile>

Hirgelinta, cabbirka: waayo-aragnimada isticmaalka tijaabooyinka iswada ee VTB
Tusaalaha warbixinta Allure (imtixaanka ugu xasiloon, 4 dib loo bilaabay)

Hirgelinta, cabbirka: waayo-aragnimada isticmaalka tijaabooyinka iswada ee VTBCulayska orodka inta lagu jiro imtixaanada (8 koor, 8 GB RAM, 12 threads)
 
Faa'iido:

  • dejinta fudud - kaliya waxaad u baahan tahay inaad ku darto plugin;
  • awoodda isku mar la sameeyo tiro badan oo imtixaanno ah;
  • dardargelinta xasilinta imtixaanka iyada oo ay ugu wacan tahay tallaabada 1. 

Ogolaansho:

  • OS/koonteenaro badan ayaa loo baahan yahay;
  • isticmaalka kheyraadka sare ee fargeeto kasta;
  • Plugin-ku waa duugoobay oo hadda lama taageero. 

Sida looga gudbo xasilooni darada 

Kuraasta imtixaanku maaha kuwo ku haboon, sida kuwa iskood u tijaabiya. Ma aha wax la yaab leh in aan samayno dhowr imtixaan oo qallafsan. U soo gurmaday maven surefire plugin, kaas oo ka baxsan sanduuqa taageeraya dib u bilaabista imtixaanadii guuldarraystay. Waxaad u baahan tahay inaad cusboonaysiiso nooca plugin ugu yaraan 2.21 oo aad ku qor hal xariiq oo leh tirada dib u bilaabashada faylka pom ama u gudbi dood ahaan Maven.

Tusaalaha dejinta autotests:

   	
<plugin>
        	
<groupId>org.apache.maven.plugins</groupId>
  	
      <artifactId>maven-surefire-plugin</artifactId>
        	
<version>2.21.0</version>
        	
<configuration>
           	
….
            	
<rerunFailingTestsCount>2</rerunFailingTestsCount>
            	
….
            	
</configuration>
</plugin>

Ama bilowga: mvn … -Dsurefire.rerunFailingTestsCount=2 …
Ikhtiyaar ahaan, u deji ikhtiyaarka Maven ee qoraalka PowerShell (PS1):

  
Set-Item Env:MAVEN_OPTS "-Dfile.encoding=UTF-8 -Dsurefire.rerunFailingTestsCount=2"

Faa'iido:

  • looma baahna in wakhti lagu lumiyo falanqaynta imtixaan aan degganayn marka uu shil galo;
  • tijaabi dhibaatooyinka xasiloonida kursiga waa la yarayn karaa.

Ogolaansho:

  • cilladaha sabbaynaya waa la waayi karaa;
  • wakhtiga orodku wuu kordhaa.

Imtixaanada barbar socda maktabadda Cucumber 4

Tirada imtixaanadu way korodhay maalin kasta. Waxaan mar kale ka fikirnay dardargelinta orodka. Intaa waxaa dheer, waxaan rabay in aan ku dhex daro tijaabooyinka ugu badan ee suurtogalka ah ee dhuumaha codsiga. Arrinka muhiimka ah ayaa ahaa in jiilka orodyahanadu ay qaateen waqti aad u dheer marka ay si isbarbar socdaan isticmaalayaan Maven plugin.

Waqtigaas, Cucumber 4 mar hore ayaa la sii daayay, markaa waxaan go'aansanay inaan dib u qorno kernel-ka noocaan. Qoraalada siideynta waxaa naloo ballanqaaday bilaabista barbar socota heerka dunta. Aragti ahaan tani waxay ahayd:

  • si weyn u dedejiya socodsiinta autotests iyadoo la kordhinayo tirada dunta;
  • meesha ka saar luminta wakhtiga ku saabsan soo saarista orodyahanada ee autotest kasta.

Hagaajinta qaab-dhismeedka tijaabinta isku-xidhka badan ee otomaatiga ah waxay noqotay mid aan sidaa u sii adkayn. Cucumber 4 wuxuu tijaabiyaa mid kasta oo shakhsi ah oo ku salaysan dun gaar ah laga bilaabo bilaw ilaa dhamaad, markaa qaar ka mid ah waxyaabaha caadiga ah ee caadiga ah ayaa si fudud loogu beddelay doorsoomayaasha ThreadLocal. 
Waxa ugu muhiimsan marka la beddelayo iyadoo la adeegsanayo aaladaha dib-u-soo-celinta fikradda waa in la hubiyo meelaha la barbardhigay doorsoomiyaha (tusaale, hubinta wax aan jirin). Intaa waxaa dheer, waxaad u baahan tahay inaad ku darto plugin Allure sharraxaadda fasalka Junit Runner.

Tusaalaha dejinta autotests:

 
<profile>
	
<id>parallel</id>
	
<build>
    	
<plugins>
        	
<plugin>
            	
<groupId>org.apache.maven.plugins</groupId>
 	
           <artifactId>maven-surefire-plugin</artifactId>
            	
<version>3.0.0-M3</version>
   	
         <configuration>
                	
<useFile>false</useFile>
                	
<testFailureIgnore>false</testFailureIgnore>
        	
        <parallel>methods</parallel>
                	
<threadCount>6</threadCount>
                	
<perCoreThreadCount>true</perCoreThreadCount>
                	
<argLine>
                    	
-javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
                	
</argLine>
            	
</configuration>
            	
<dependencies>
                	
<dependency>
                    	
<groupId>org.aspectj</groupId>
   	
                 <artifactId>aspectjweaver</artifactId>
                    	
<version>${aspectj.version}</version>
                	
</dependency>
            	
</dependencies>
        	
</plugin>
    	
</plugins>
	
</build>
</profile>

Hirgelinta, cabbirka: waayo-aragnimada isticmaalka tijaabooyinka iswada ee VTBTusaalaha warbixinta Allure (imtixaanka ugu xasiloon, 5 dib loo bilaabay)

Hirgelinta, cabbirka: waayo-aragnimada isticmaalka tijaabooyinka iswada ee VTBCulayska orodka inta lagu jiro imtixaanada (8 koor, 8 GB RAM, 24 threads)

Faa'iido:

  • isticmaalka kheyraadka hooseeya;
  • taageerada hooyo ee qajaarka - looma baahna qalab dheeraad ah;
  • awood u leh in ay ku ordo in ka badan 6 threads per xudunta u ah processor.

Ogolaansho:

  • waxaad u baahan tahay inaad hubiso in koodhka uu taageerayo fulinta xadhig badan;
  • heerka gelitaanka ayaa kordha.

Allure warbixinnada bogga GitLab

Ka dib markii aan soo bandhignay dil toogasho ah oo badan, waxaan bilownay inaan waqti badan ku bixino falanqaynta warbixinnada. Waqtigaas, waxay ahayd inaan u soo rarno warbixin kasta oo farshaxan ahaan ah GitLab, ka dibna soo dejiso oo aan ka soo saarno. Aad uma habboona waxayna qaadataa waqti dheer. Oo haddii qof kale doonayo inuu naftiisa u eego warbixinta, markaas waxay u baahan doonaan inay sameeyaan hawlgallo isku mid ah. Waxaan rabnay inaan helno jawaab celin degdeg ah, waxaanan helnay xal - bogagga GitLab. Kani waa sifo ku dhex dhisan oo laga heli karo meel ka baxsan sanduuqa dhammaan noocyadii u dambeeyay ee GitLab. Waxay kuu ogolaanaysaa inaad geliso boggag taagan seerfarkaaga oo aad ka gasho xiriir toos ah.

Dhammaan sawirada sawirada Allure ayaa lagu qaaday boggaga GitLab. Qoraalka warbixinta loogu dirayo bogagga GitLab - gudaha Windows PowerShell (intaan ka hor waxaad u baahan tahay inaad tijaabiso autotes):

New-Item -ItemType directory -Path $testresulthistory | Out-Null

try {Invoke-WebRequest -Uri $hst -OutFile $outputhst}
Catch{echo "fail copy history"}
try {Invoke-WebRequest -Uri $hsttrend -OutFile $outputhsttrnd}
Catch{echo "fail copy history trend"}

mvn allure:report
#mvn assembly:single -PzipAllureReport
xcopy $buildlocationtargetsiteallure-maven-plugin* $buildlocationpublic /s /i /Y

Maxaa dhacaya dhamaadka 

Marka, haddii aad ka fekereyso inaad u baahan tahay koodka aaminka ah ee qaabka Cucumber autotest, hadda jawaabtu waa iska caddahay - iyadoo la adeegsanayo Cucumber 4 way fududahay in la fuliyo, taas oo si weyn u kordhinaysa tirada dunta isku mar la bilaabay. Habkan imtixaannada socda, su'aashu hadda waxay noqotaa waxqabadka mashiinka Selenoid iyo kursiga imtixaanka.

Ku celcelinta ayaa muujisay in tijaabinta otomaatiga ah ee dunta ay kuu oggolaaneyso inaad yareyso isticmaalka kheyraadka ugu yaraan iyadoo leh waxqabadka ugu fiican. Sida laga arki karo garaafyada, xadhkaha labanlaabmay ma keenayaan dardargelinta la midka ah ee imtixaannada waxqabadka. Si kastaba ha ahaatee, waxa aanu awoodnay in aanu ku darno in ka badan 2 oo tijaabo oo iswada ah dhismaha arjiga, kuwaas oo xataa 200 dib u socod ay ku socdaan 5 daqiiqo gudahood. Tani waxay kuu ogolaaneysaa inaad ka hesho jawaab celin degdeg ah iyaga, iyo, haddii loo baahdo, isbedelo oo ku celi nidaamka mar kale.

Source: www.habr.com

Add a comment