Whakatinana, tauine: wheako ki te whakamahi i nga whakamatautau aunoa i VTB

Ka waihangahia e ta maatau wehenga nga raina paipa aunoa mo te whakarewa i nga momo tono hou ki te taiao whakaputa. Ko te tikanga, ka hiahia tenei ki nga whakamatautau mahi aunoa. Kei raro i te tapahanga he korero mo te pehea, timata mai i te whakamatautau miro kotahi i runga i te miihini o te rohe, ka tae matou ki te waahi o te whakamatautau miihini-maha-miro e rere ana i runga i te Selenoid i roto i te paipa hanga me te ripoata Allure i runga i nga wharangi GitLab ka mutu ka whiwhi taputapu miihini hauhautanga. ka taea e nga tangata kei te heke mai te whakamahi i nga roopu.

Whakatinana, tauine: wheako ki te whakamahi i nga whakamatautau aunoa i VTB

I timata tatou i hea?

Hei whakatinana i nga whakamatautau aunoa me te whakauru ki roto i te paipa, i hiahia matou he anga mahi aunoa ka taea te whakarereke ngawari kia rite ki o maatau hiahia. Ko te mea pai, i hiahia ahau ki te tiki i tetahi paerewa mo te miihini whakamatautau aunoa, he mea whakarite mo te whakauru i nga whakamatautau aunoa ki te paipa. Mo te whakatinanatanga i whiriwhiria e matou nga hangarau e whai ake nei:

  • Java,
  • Maven,
  • Selenium,
  • Kukama+JUNIT 4,
  • Whakapaipai,
  • GitLab.

Whakatinana, tauine: wheako ki te whakamahi i nga whakamatautau aunoa i VTB

He aha tenei huinga motuhake? Ko Java tetahi o nga reo rongonui mo nga whakamatautau aunoa, ka korero nga mema katoa o te roopu. Ko te Selenium te otinga tino kitea. Ko te kukama, i roto i era atu mea, i whakaarohia kia nui ake te maia ki nga hua o nga whakamatautau aunoa i runga i te taha o nga tari e uru ana ki te whakamatautau a-ringa.

Nga whakamatautau miro kotahi

Kia kore ai e hanga ano i te wira, i tangohia e matou etahi whanaketanga mai i nga momo putunga i runga i a GitHub hei turanga mo te anga me te whakarereke ma matou ano. I hangaia e matou he putunga mo te whare pukapuka matua me te kaupapa o te anga whakamatautau aunoa me tetahi putunga me te tauira koura mo te whakatinana i nga whakamatautau aunoa i runga i to maatau matua. Me tango e ia kapa te ahua koura me te whakawhanake i nga whakamatautau ki roto, me te urutau ki ta raatau kaupapa. I tukuna e matou ki te putea GitLab-CI, i whirihorahia e matou:

  • te whakahaere o ia ra o nga whakamatautau aunoa mo ia kaupapa;
  • ka whakarewahia i roto i te paipa hanga.

I te tuatahi he iti noa nga whakamatautau, a ka mahia i roto i te awa kotahi. Ko te rere miro-kotahi i runga i te Windows runner GitLab i pai ki a matou: he tino ngawari te utaina o nga whakamatautau i te pae whakamatautau me te kore rawa i whakamahia he rauemi.

I te roanga o te wa, ka piki haere te maha o nga whakamatautau aunoa, a ka whakaaro matou ki te whakahaere whakarara, i te wa i timata te oma katoa ki te toru haora. I puta ano etahi atu raruraru:

  • kare i taea e matou te manatoko he pumau nga whakamatautau;
  • Ko nga whakamatautau i whakahaerehia he maha nga wa i te rarangi i runga i te miihini o te rohe i etahi wa ka pakaru i te CI.

He tauira mo te whakarite whakamatautau aunoa:

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

 Whakatinana, tauine: wheako ki te whakamahi i nga whakamatautau aunoa i VTB
Ko te tauira o te purongo whakapouri

 Whakatinana, tauine: wheako ki te whakamahi i nga whakamatautau aunoa i VTB
Ka utaina te kaiwhai i nga wa whakamatautau (8 cores, 8 GB RAM, 1 miro)
 
Nga painga o nga whakamatautau miro kotahi:

  • ngawari ki te whakarite me te whakahaere;
  • Ko nga whakarewanga i roto i te CI kaore i rereke mai i nga whakarewatanga o te rohe;
  • kaore nga whakamatautau e pa ki a ratau;
  • nga whakaritenga iti mo nga rauemi kaikawe.

Nga huakore o nga whakamatautau miro kotahi:

  • he roa te wa ki te whakaoti;
  • te whakapumautanga roa o nga whakamatautau;
  • te koretake o te whakamahi i nga rauemi a te kaihoroi, he iti rawa te whakamahi.

Nga whakamatautau mo nga marau JVM

I te mea kaore matou i tiaki i te waehere haumaru miro i te wa e whakatinana ana i te anga turanga, ko te huarahi tino kitea ki te rere whakarara ko kukama-jvm-parallel-plugin mo Maven. He ngawari te whirihora i te mono, engari mo te mahi whakarara tika, me whakahaere nga whakamatautau aunoa ki nga kaitirotiro motuhake. Kaore he mea hei mahi, me whakamahi ahau i a Selenoid.

I whakarewahia te tūmau Selenoid i runga i te miihini me te 32 cores me te 24 GB o te RAM. I whakatauhia te rohe ki nga kaitirotiro 48 - 1,5 miro mo ia matua me te 400 MB RAM. Ko te mutunga mai, ka whakahekehia te wa whakamatautau mai i te toru haora ki te 40 meneti. Ko te tere o nga oma i awhina i te whakaoti rapanga whakapumautanga: inaianei ka taea e matou te whakahaere i nga whakamatautau aunoa hou 20-30 nga wa kia mohio ra ano matou ka oma pono.
Ko te whakahokinga tuatahi o te otinga ko te whakamahi nui o nga rauemi kaikawe me te iti o nga miro whakarara: i runga i te 4 matua me te 8 GB o te RAM, he pai te mahi o nga whakamatautau me te kore e neke atu i te 6 miro. Ko te ngoikoretanga tuarua: ko te mono ka whakaputa i nga karaehe kaikawe mo ia ahuatanga, ahakoa te maha o enei ka whakarewahia.

Mea nui! Kaua e tukuna he taurangi me nga tohu ki argLine, hei tauira, penei:

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

Mena ka paahitia e koe te tohu i tenei huarahi, ka whakaputahia e te mono nga kaiwhai mo nga whakamatautau katoa, ara, ka ngana ki te whakahaere i nga whakamatautau katoa, ka pekehia i muri tonu i te whakarewatanga me te hanga i nga marau JVM maha.

He tika te maka i te taurangi me te tohu ki roto tūtohu i roto i nga tautuhinga mono, tirohia te tauira i raro nei. Ko etahi atu tikanga i whakamatauria e matou he raruraru ki te hono i te mono Allure.

He tauira mo te wa whakahaere mo nga whakamatautau poto e 6 me nga tautuhinga hē:

[INFO] Total time: 03:17 min

He tauira o te wa whakamatautau mena ka whakawhiti tika koe i te tohu ki mvn... –Dcucumber.options:

[INFO] Total time: 44.467 s

He tauira mo te whakarite whakamatautau aunoa:

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

Whakatinana, tauine: wheako ki te whakamahi i nga whakamatautau aunoa i VTB
He tauira o te purongo Allure (ko te whakamatautau tino koretake, e 4 nga mahi tuarua)

Whakatinana, tauine: wheako ki te whakamahi i nga whakamatautau aunoa i VTBKa utaina te kaiwhai i nga wa o nga whakamatautau (8 cores, 8 GB RAM, 12 miro)
 
Kaupapa:

  • tatūnga ngawari - me taapiri noa he mono;
  • te kaha ki te mahi i te maha o nga whakamatautau i te wa kotahi;
  • te whakaterenga o te whakapumautanga o te whakamatautau na te taahiraa 1. 

Cons:

  • He maha nga OS / ipu e hiahiatia ana;
  • te nui o te whakamahi rauemi mo ia marau;
  • Kua tawhito te mono, kua kore e tautokona. 

Me pehea te hinga i te koretake 

Ko nga papa whakamatautau kaore i te pai, pera i nga whakamatautau aunoa. Ehara i te mea miharo he maha o taatau whakamatautau. I haere mai ki te whakaora maven surefire mono, kei waho o te pouaka e tautoko ana i te whakaara ano i nga whakamatautau i rahua. Me whakahou e koe te putanga mono ki te 2.21 iti rawa me te tuhi i tetahi rarangi me te maha o nga tiimata i roto i te konae pom, ka tukuna ranei hei tautohetohe ki a Maven.

He tauira mo te whakarite whakamatautau aunoa:

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

I te timatanga ranei: mvn … -Dsurefire.rerunFailingTestsCount=2 …
Hei whiringa, whakaritea nga whiringa Maven mo te tuhinga PowerShell (PS1):

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

Kaupapa:

  • kaua e moumou taima ki te tātari i te whakamatautau kore i te wa e tukinga ana;
  • Ka taea te whakaiti i nga raru pumau o te pae whakamatautau.

Cons:

  • ka ngaro nga hapa o te rewa;
  • ka piki ake te wa omaoma.

Ko nga whakamatautau whakarara me te whare pukapuka Kukamo 4

I piki ake te maha o nga whakamatautau ia ra. I whakaaro ano matou kia tere ake nga oma. I tua atu, i hiahia ahau ki te whakauru i nga whakamatautau maha ka taea ki roto i te pipeline huihuinga tono. Ko te mea nui he roa rawa te whakatipuranga o nga kaiwhaiwhai i te wa e rere whakarara ana ma te whakamahi i te mono Maven.

I taua wa, kua tukuna kētia te Kukama 4, no reira ka whakaaro matou ki te tuhi ano i te kakano mo tenei putanga. I roto i nga korero tuku i oatihia kia whakarewahia whakarara ki te taumata miro. Ko te tikanga me penei:

  • tino tere ake te rere o nga whakamatautau aunoa ma te whakanui i te maha o nga miro;
  • whakakorehia te ngaronga o te wa ki te whakaputa i nga kaiwhaiwhai mo ia whakamatautau aunoa.

Ko te whakapai ake i te anga mo nga whakamatautau aunoa miro-maha karekau i tino uaua. Ko te Kukama 4 e whakahaere ana i ia whakamatautau takitahi i runga i te miro whakatapua mai i te timatanga ki te mutunga, no reira ka huri noa etahi mea pateko noa ki nga taurangi ThreadLocal. 
Ko te mea nui i te wa e huri ana ma te whakamahi i nga taputapu whakahou whakaaro ko te tirotiro i nga waahi i whakatauritehia te taurangi (hei tauira, te tirotiro mo te kore). I tua atu, me whakauru koe i te mono Allure ki te korero a te akomanga Junit Runner.

He tauira mo te whakarite whakamatautau aunoa:

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

Whakatinana, tauine: wheako ki te whakamahi i nga whakamatautau aunoa i VTBHe tauira o te purongo Allure (ko te whakamatautau tino koretake, e 5 nga mahi tuarua)

Whakatinana, tauine: wheako ki te whakamahi i nga whakamatautau aunoa i VTBKa utaina te kaiwhai i nga wa whakamatautau (8 cores, 8 GB RAM, 24 miro)

Kaupapa:

  • iti rawa te kai;
  • tautoko taketake mai i te Kukama - kaore he taputapu taapiri e hiahiatia ana;
  • te kaha ki te whakahaere neke atu i te 6 miro mo ia matua tukatuka.

Cons:

  • me whakarite koe kei te tautoko te waehere i nga mahi miro-maha;
  • ka piki ake te paepae urunga.

Ko nga korero a Allure i runga i nga wharangi GitLab

Whai muri i te whakaurunga o nga mahi miro-maha, i timata matou ki te whakapau i te wa roa ki te tarai i nga purongo. I taua wa, me tuku e matou ia purongo hei taonga toi ki a GitLab, katahi ka tango ka wetewete. Kaore i te tino watea, ka roa te waa. A, ki te hiahia tetahi atu ki te tiro i te ripoata ma ratou ano, me mahi ano nga mahi. I pirangi matou kia tere ake te whiwhi urupare, ka kitea he otinga - wharangi GitLab. He waahanga hanga-i roto tenei e waatea ana i waho o te pouaka i roto i nga putanga tata katoa o GitLab. Ka taea e koe te tuku i nga waahi tuuturu i runga i to tuumau ka uru atu ma te hono tika.

Ko nga whakaahua katoa o nga purongo Allure i tangohia ki nga wharangi GitLab. He tuhinga mo te tuku purongo ki nga wharangi GitLab - i roto i te Windows PowerShell (i mua i tenei me whakahaere nga whakamatautau aunoa):

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

He aha i te mutunga 

Na, mena kei te whakaaro koe mena kei te hiahia koe ki te Waahi Waehere haumaru i roto i te anga whakamatautau aunoa Kukamo, inaianei kua kitea te whakautu - me te Kukama 4 he ngawari ki te whakatinana, na reira ka piki ake te maha o nga miro i whakarewahia i te wa kotahi. Na tenei tikanga whakahaere whakamatautau, ka puta te patai mo te mahi a te miihini me te Selenoid me te papa whakamatautau.

Kua whakaatuhia e te parakatihi ko te whakahaere i nga whakamatautau aunoa i runga i nga miro ka taea e koe te whakaiti i te kohi rawa ki te iti me te pai o te mahi. Ka kitea mai i nga kauwhata, karekau nga miro rearua e arai ki te tere rite ki nga whakamatautau mahi. Heoi, i taea e matou te taapiri atu i te 2 nga whakamatautau aunoa ki te hanga tono, ahakoa e 200 nga rerenga ka rere i roto i te 5 meneti. Ma tenei ka taea e koe te whiwhi urupare tere mai i a raatau, a, ki te tika, whakarereke me te whakahoki ano i te tikanga.

Source: will.com

Tāpiri i te kōrero