Kenya ts'ebetsong, sekala: boiphihlelo ba ho sebelisa liteko tse ikemetseng ho VTB

Karolo ea rona e theha liphaephe tse ikemetseng ka botlalo bakeng sa ho qala mefuta e mecha ea lits'ebetso tikolohong ea tlhahiso. Ehlile, sena se hloka liteko tse ikemetseng tsa tšebetso. Ka tlase ho sehiloeng ke pale e mabapi le hore na, ho qala ka tlhahlobo ea khoele e le 'ngoe mochining oa lehae, re ile ra ea ho li-autotest tse nang le likhoele tse ngata tse sebetsang ho Selenoid ka phaepheng ea ho aha ka tlaleho ea Allure leqepheng la GitLab mme qetellong ra fumana sesebelisoa se pholileng sa othomathike seo. batho ba ka moso ba ka sebelisa lihlopha.

Kenya ts'ebetsong, sekala: boiphihlelo ba ho sebelisa liteko tse ikemetseng ho VTB

Re qalile hokae?

Ho kenya tšebetsong li-autotest le ho li kopanya ho qala, re ne re hloka moralo o ikemetseng o ka fetoloang habonolo hore o lumellane le litlhoko tsa rona. Ka nepo, ke ne ke batla ho fumana tekanyetso e le 'ngoe bakeng sa enjine ea autotesting, e lokiselitsoeng ho kenya li-autotes ka har'a liphaephe. Ho kenya ts'ebetsong, re khetha theknoloji e latelang:

  • Java,
  • Maven,
  • Selenium,
  • Likomkomere+JUNIT 4,
  • Khoeli,
  • GitLab.

Kenya ts'ebetsong, sekala: boiphihlelo ba ho sebelisa liteko tse ikemetseng ho VTB

Ke hobane'ng ha sete ee e khethehileng? Java ke e 'ngoe ea lipuo tse tsebahalang haholo bakeng sa liteko tse ikemetseng,' me litho tsohle tsa sehlopha li e bua. Selenium ke tharollo e hlakileng. Likomkomere, har'a lintho tse ling, li ne li lokela ho eketsa kholiseho ho liphello tsa liteko tse ikemetseng ka lehlakoreng la mafapha a amehang tlhahlobo ea matsoho.

Liteko tsa khoele e le 'ngoe

E le hore re se ke ra qapa lebili hape, re ile ra nka nts'etsopele ho tsoa libakeng tse fapaneng tsa polokelo ho GitHub e le motheo oa moralo mme ra ikamahanya le rona. Re thehile polokelo bakeng sa laeborari ea mantlha e nang le motheo oa moralo oa autotest le polokelo e nang le mohlala oa Khauta oa ho kenya tšebetsong li-autotest ho mantlha ea rona. Sehlopha se seng le se seng se ne se lokela ho nka setšoantšo sa Khauta le ho hlahisa liteko ho sona, ho se fetola ho ea ka morero oa bona. Re e romelletse bankeng ea GitLab-CI, eo re e lokiselitseng:

  • lits'ebetso tsa letsatsi le letsatsi tsa li-autotest tse ngotsoeng bakeng sa projeke ka 'ngoe;
  • e qala pompong ea ho aha.

Qalong ho ne ho e-na le liteko tse fokolang, 'me li ile tsa etsoa ka molapo o le mong. GitLab e nang le khoele e le 'ngoe e ne e re tšoanela hantle: liteko li ile tsa kenya benche ea liteko habobebe haholo 'me tsa sebelisa lisebelisoa tse batlang li se na letho.

Ha nako e ntse e ea, palo ea li-autotest e ile ea eketseha le ho feta, 'me re ile ra nahana ho li tsamaisa ka tsela e tšoanang, ha lebelo le feletseng le qala ho nka lihora tse ka bang tharo. Mathata a mang le 'ona a hlahile:

  • re ne re sitoa ho netefatsa hore liteko li tsitsitse;
  • liteko tse neng li tsamaisoa ka makhetlo a 'maloa ka tatellano mochining oa lehae ka linako tse ling li ne li oela CI.

Mohlala oa ho theha li-autotes:

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

 Kenya ts'ebetsong, sekala: boiphihlelo ba ho sebelisa liteko tse ikemetseng ho VTB
Mohlala oa tlaleho ea allure

 Kenya ts'ebetsong, sekala: boiphihlelo ba ho sebelisa liteko tse ikemetseng ho VTB
Mojaro oa semathi nakong ea liteko (8 cores, 8 GB RAM, 1 thread)
 
Melemo ea liteko tsa khoele e le 'ngoe:

  • ho bonolo ho e beha le ho sebetsa;
  • ho qala ho CI ha ho fapane le ho qalisoa ha lehae;
  • liteko ha li ame tse ling;
  • litlhoko tse fokolang tsa lisebelisoa tsa semathi.

Mathata a liteko tsa khoele e le 'ngoe:

  • ho qeta nako e telele haholo;
  • botsitso ba nako e telele ea liteko;
  • tšebeliso e mpe ea lisebelisoa tsa semathi, tšebeliso e tlase haholo.

Liteko ho lifereko tsa JVM

Kaha re ne re sa hlokomele khoutu e sireletsehileng ea khoele ha re kenya tšebetsong moralo oa motheo, tsela e hlakileng ka ho fetesisa ea ho tsamaisana e ne e le. likomkomere-jvm-parallel-plugin bakeng sa Maven. Ho bonolo ho hlophisa plugin, empa bakeng sa ts'ebetso e nepahetseng e ts'oanang, li-autotes li tlameha ho tsamaisoa ka li-browser tse fapaneng. Ha ho na letho leo nka le etsang, ke ile ka tlameha ho sebelisa Selenoid.

Seva ea Selenoid e ile ea qalisoa ka mochine o nang le li-cores tse 32 le 24 GB ea RAM. Moeli o ne o behiloe ho li-browser tse 48 - likhoele tse 1,5 ka konokono le hoo e ka bang 400 MB ea RAM. Ka lebaka leo, nako ea teko e fokotsehile ho tloha ho lihora tse tharo ho ea ho metsotso e 40. Ho potlakisa li-run ho thusitse ho rarolla bothata ba ho tsitsisa: joale re ka khona ho matha li-autotest tse ncha ka makhetlo a 20-30 ho fihlela re na le bonnete ba hore li matha ka ts'epo.
Tšimoloho ea pele ea tharollo e ne e le tšebeliso e phahameng ea lisebelisoa tsa semathi tse nang le palo e nyenyane ea likhoele tse tšoanang: ho li-cores tse 4 le 8 GB ea RAM, liteko li ile tsa sebetsa ka mokhoa o tsitsitseng ka likhoele tse fetang 6. Bothata ba bobeli: plugin e hlahisa lihlopha tsa semathi bakeng sa boemo bo bong le bo bong, ho sa tsotelehe hore na ke tse kae tsa tsona tse qalisoang.

Bohlokoa! Se ke oa fetisa phapang e nang le li-tag ho argLine, mohlala, joalo ka:

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

Haeba u fetisa tag ka tsela ena, plugin e tla hlahisa limathi bakeng sa liteko tsohle, ke hore, e tla leka ho etsa liteko tsohle, ho li tlōla hang ka mor'a ho qala le ho theha lifereko tse ngata tsa JVM.

Ho nepahetse ho lahlela phetoho e nang le tag ho tagged ho li-setting tsa plugin, bona mohlala o ka tlase. Mekhoa e meng eo re e lekileng e na le mathata a ho hokahanya plugin ea Allure.

Mohlala oa nako ea ho sebetsa bakeng sa liteko tse khutšoane tse 6 tse nang le litlhophiso tse fosahetseng:

[INFO] Total time: 03:17 min

Mohlala oa nako ea teko haeba o fetisetsa tag ka kotloloho ho mvn... -Dcucumber.dikgetho:

[INFO] Total time: 44.467 s

Mohlala oa ho theha li-autotes:

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

Kenya ts'ebetsong, sekala: boiphihlelo ba ho sebelisa liteko tse ikemetseng ho VTB
Mohlala oa tlaleho ea Allure (teko e sa tsitsang ka ho fetesisa, li-reruns tse 4)

Kenya ts'ebetsong, sekala: boiphihlelo ba ho sebelisa liteko tse ikemetseng ho VTBMojaro oa semathi nakong ea liteko (8 cores, 8 GB RAM, 12 threads)
 
Melemo:

  • ho seta habonolo - o hloka feela ho eketsa plugin;
  • bokhoni ba ho etsa liteko tse ngata ka nako e le 'ngoe;
  • ho potlakisa botsitso ba liteko ka lebaka la mohato oa 1. 

Chelete:

  • Ho hlokahala li-OS / lijana tse ngata;
  • tšebeliso e phahameng ea lisebelisoa bakeng sa fereko ka 'ngoe;
  • Plugin e siiloe ke nako 'me ha e sa sebetsa. 

Mokhoa oa ho hlola ho hloka botsitso 

Libenche tsa liteko ha li ntle, joalo ka li-autotest ka botsona. Ha ho makatse hore ebe re na le liteko tse ngata tse fokolang. O tlile ho pholosa maven surefire plugin, e ka ntle ho lebokose e tšehetsang ho qala liteko tse hlōlehileng hape. U hloka ho ntlafatsa mofuta oa plugin bonyane 2.21 'me u ngole mola o le mong ka palo ea ho qala bocha faeleng ea pom kapa u e fetisetse e le khang ho Maven.

Mohlala oa ho theha li-autotes:

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

Kapa qalong: mvn … -Dsurefire.rerunFailingTestsCount=2 …
E le khetho, beha likhetho tsa Maven bakeng sa mongolo oa PowerShell (PS1):

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

Melemo:

  • ha ho hlokahale ho senya nako ho hlahloba teko e sa tsitsang ha e senyeha;
  • mathata a botsitso ba benche ea liteko a ka fokotsoa.

Chelete:

  • likoli tse phaphametseng li ka fosoa;
  • nako ea ho matha ea eketseha.

Liteko tse tšoanang le laeborari ea Cucumber 4

Palo ea liteko e ile ea eketseha letsatsi le letsatsi. Re ile ra boela ra nahana ka ho potlakisa mabelo. Ho phaella moo, ke ne ke batla ho kopanya liteko tse ngata kamoo ho ka khonehang ho peipi ea kopano ea kopo. Taba ea bohlokoa e ne e le hore moloko oa limathi o ile oa nka nako e telele haholo ha o matha ka tsela e tšoanang o sebelisa plugin ea Maven.

Ka nako eo, Cucumber 4 e ne e se e lokollotsoe, kahoo re ile ra etsa qeto ea ho ngola kernel bakeng sa phetolelo ena. Lintlheng tsa tokollo re ne re tšepisitsoe ho qala ho ts'oana maemong a khoele. Ka khopolo, sena se ne se lokela ho ba:

  • ho potlakisa haholo ts'ebetso ea li-autotest ka ho eketsa palo ea likhoele;
  • felisa tahlehelo ea nako ho hlahisa limathi bakeng sa tlhahlobo e 'ngoe le e' ngoe ea autotest.

Ho ntlafatsa moralo oa li-autotest tse nang le likhoele tse ngata ha hoa ka ha e-ba thata hakaalo. Cucumber 4 e tsamaisa teko e 'ngoe le e' ngoe ka khoele e inehetseng ho tloha qalong ho fihlela qetellong, kahoo lintho tse ling tse tloaelehileng tse tsitsitseng li ile tsa fetoloa hore e be mefuta e fapaneng ea ThreadLocal. 
Ntho e ka sehloohong ha u fetola u sebelisa lisebelisoa tsa Idea refactoring ke ho hlahloba libaka tseo ho tsona ho neng ho bapisoa phapang (mohlala, ho hlahloba hore na ha ho na letho). Ntle le moo, o hloka ho kenyelletsa plugin ea Allure ho tlhaloso ea sehlopha sa Junit Runner.

Mohlala oa ho theha li-autotes:

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

Kenya ts'ebetsong, sekala: boiphihlelo ba ho sebelisa liteko tse ikemetseng ho VTBMohlala oa tlaleho ea Allure (teko e sa tsitsang ka ho fetesisa, li-reruns tse 5)

Kenya ts'ebetsong, sekala: boiphihlelo ba ho sebelisa liteko tse ikemetseng ho VTBMojaro oa semathi nakong ea liteko (8 cores, 8 GB RAM, 24 threads)

Melemo:

  • tšebeliso e tlase ea lisebelisoa;
  • tšehetso ea matsoalloa ho tloha likomkomere - ha ho na lisebelisoa tse eketsehileng tse hlokahalang;
  • bokhoni ba ho tsamaisa likhoele tse fetang 6 ka har'a processor core.

Chelete:

  • o hloka ho netefatsa hore khoutu e ts'ehetsa ts'ebetso ea likhoele tse ngata;
  • moeli oa ho kena oa eketseha.

Litlaleho tse khahlang maqepheng a GitLab

Kamora ho kenya ts'ebetso ea likhoele tse ngata, re ile ra qala ho qeta nako e ngata re sekaseka litlaleho. Ka nako eo, re ne re tlameha ho kenya tlaleho e 'ngoe le e' ngoe e le ntho ea maiketsetso ho GitLab, ebe re e khoasolla le ho e lokolla. Ha e bonolo haholo ebile e nka nako e telele. Mme haeba motho e mong a batla ho iponela tlaleho, o tla hloka ho etsa ts'ebetso e tšoanang. Re ne re batla ho fumana maikutlo kapele, 'me re fumane tharollo - maqephe a GitLab. Ena ke karolo e hahelletsoeng kahare e fumanehang ka ntle ho lebokose liphetolelong tsohle tsa morao-rao tsa GitLab. E u lumella ho kenya libaka tse tsitsitseng ho seva sa hau le ho li fihlella ka sehokelo se otlolohileng.

Lits'oants'o tsohle tsa litlaleho tsa Allure li nkuoe maqepheng a GitLab. Script bakeng sa ho tsamaisa tlaleho maqepheng a GitLab - ho Windows PowerShell (pele ho sena o hloka ho etsa li-autotests):

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

Seo qetellong 

Kahoo, haeba u ne u ntse u nahana ka hore na u hloka Khoutu e bolokehileng ka har'a moralo oa Cucumber autotest, joale karabo e hlakile - ka Cucumber 4 ho bonolo ho e kenya ts'ebetsong, ka hona e eketsa haholo palo ea likhoele tse qalileng ka nako e le 'ngoe. Ka mokhoa ona oa ho etsa liteko, joale potso e ba mabapi le ts'ebetso ea mochine o nang le Selenoid le benche ea teko.

Boikoetliso bo bontšitse hore ho sebelisa li-autotest ho likhoele ho u lumella ho fokotsa tšebeliso ea lisebelisoa ho fihlela bonyane ka ts'ebetso e ntle ka ho fetisisa. Joalokaha ho ka bonoa lirapeng, likhoele tse habeli ha li lebise ho potlakiso e tšoanang litekong tsa ts'ebetso. Leha ho le joalo, re khonne ho eketsa liteko tse fetang 2 tsa boiketsetso molemong oa ts'ebeliso, oo leha ho na le li-reruns tse 200 tse mathang ka metsotso e ka bang 5. Sena se o nolofalletsa ho fumana maikutlo a potlakileng ho bona, 'me, ha ho hlokahala, etsa liphetoho ebe o pheta mokhoa oo hape.

Source: www.habr.com

Eketsa ka tlhaloso