Ṣiṣe, iwọn: iriri ti lilo awọn idanwo adaṣe ni VTB

Pipin wa ṣẹda awọn opo gigun ti o ni kikun laifọwọyi fun ifilọlẹ awọn ẹya tuntun ti awọn ohun elo sinu agbegbe iṣelọpọ. Nitoribẹẹ, eyi nilo awọn idanwo iṣẹ adaṣe adaṣe. Ni isalẹ gige jẹ itan kan nipa bii, bẹrẹ pẹlu idanwo okun-ẹyọkan lori ẹrọ agbegbe kan, a de aaye ti adaṣe adaṣe olona-pupọ ti nṣiṣẹ lori Selenoid ninu opo gigun ti epo pẹlu ijabọ Allure lori awọn oju-iwe GitLab ati nikẹhin ni ohun elo adaṣe adaṣe tutu kan. pe awọn eniyan iwaju le lo awọn ẹgbẹ.

Ṣiṣe, iwọn: iriri ti lilo awọn idanwo adaṣe ni VTB

Nibo ni a bẹrẹ?

Lati ṣe awọn adaṣe adaṣe ati ṣepọ wọn sinu opo gigun ti epo, a nilo ilana adaṣe adaṣe ti o le yipada ni irọrun lati baamu awọn iwulo wa. Bi o ṣe yẹ, Mo fẹ lati gba boṣewa ẹyọkan fun ẹrọ idanwo adaṣe, ti a ṣe deede fun fifi awọn adaṣe adaṣe sinu opo gigun ti epo. Fun imuse a yan awọn imọ-ẹrọ wọnyi:

  • Java,
  • Maven,
  • Selenium,
  • Kukumba+JUNIT 4,
  • Ifarabalẹ,
  • GitLab.

Ṣiṣe, iwọn: iriri ti lilo awọn idanwo adaṣe ni VTB

Idi ti yi pato ṣeto? Java jẹ ọkan ninu awọn ede olokiki julọ fun awọn idanwo adaṣe, ati pe gbogbo awọn ọmọ ẹgbẹ ẹgbẹ sọ. Selenium jẹ ojutu ti o han gbangba. Kukumba, laarin awọn ohun miiran, o yẹ ki o mu igbẹkẹle pọ si awọn abajade ti awọn idanwo adaṣe ni apakan ti awọn apa ti o ni ipa ninu idanwo afọwọṣe.

Awọn idanwo alasopo ẹyọkan

Ni ibere ki o ma ṣe tun kẹkẹ naa pada, a mu awọn idagbasoke lati awọn ibi ipamọ pupọ lori GitHub gẹgẹbi ipilẹ fun ilana ati ki o ṣe atunṣe wọn fun ara wa. A ṣẹda ibi ipamọ kan fun ile-ikawe akọkọ pẹlu ipilẹ ti ilana adaṣe adaṣe ati ibi ipamọ kan pẹlu apẹẹrẹ goolu ti imuse awọn adaṣe adaṣe lori ipilẹ wa. Ẹgbẹ kọọkan ni lati mu aworan goolu ati idagbasoke awọn idanwo ninu rẹ, ni ibamu si iṣẹ akanṣe wọn. A gbe lọ si banki GitLab-CI, lori eyiti a tunto:

  • ojoojumọ gbalaye ti gbogbo kọ autotests fun kọọkan ise agbese;
  • awọn ifilọlẹ ninu awọn Kọ opo.

Ni akọkọ awọn idanwo diẹ wa, ati pe wọn ṣe ni ṣiṣan kan. Ṣiṣẹ-asapo ẹyọkan lori olusare Windows GitLab baamu wa daradara: awọn idanwo ti kojọpọ ibujoko idanwo ni irọrun pupọ ati lo fere ko si awọn orisun.

Ni akoko pupọ, nọmba awọn adaṣe ti di pupọ ati siwaju sii, ati pe a ronu nipa ṣiṣe wọn ni afiwe, nigbati ṣiṣe kikun bẹrẹ lati gba to wakati mẹta. Awọn iṣoro miiran tun han:

  • a ko le rii daju wipe awọn igbeyewo wà idurosinsin;
  • awọn idanwo ti o ṣiṣẹ ni igba pupọ ni ọna kan lori ẹrọ agbegbe nigbakan kọlu ni CI.

Apẹẹrẹ ti iṣeto awọn idanwo adaṣe:

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

 Ṣiṣe, iwọn: iriri ti lilo awọn idanwo adaṣe ni VTB
Allure Iroyin apẹẹrẹ

 Ṣiṣe, iwọn: iriri ti lilo awọn idanwo adaṣe ni VTB
Fifuye olusare lakoko awọn idanwo (awọn ohun kohun 8, Ramu 8 GB, okun 1)
 
Awọn anfani ti awọn idanwo asopo-ẹyọkan:

  • rọrun lati ṣeto ati ṣiṣe;
  • awọn ifilọlẹ ni CI ni iṣe ko yatọ si awọn ifilọlẹ agbegbe;
  • igbeyewo ko ni ipa kọọkan miiran;
  • kere awọn ibeere fun olusare.

Awọn aila-nfani ti awọn idanwo asapo kan:

  • gba akoko pupọ lati pari;
  • idaduro gigun ti awọn idanwo;
  • aisekokari lilo ti olusare, lalailopinpin kekere iṣamulo.

Idanwo lori JVM orita

Niwọn igba ti a ko tọju koodu o tẹle ara-ailewu nigba imuse ilana ipilẹ, ọna ti o han julọ lati ṣiṣẹ ni afiwe ni kukumba-jvm-parallel-itanna fun Maven. Ohun itanna jẹ rọrun lati tunto, ṣugbọn fun iṣẹ ṣiṣe deede, awọn adaṣe gbọdọ wa ni ṣiṣe ni awọn aṣawakiri lọtọ. Ko si nkankan lati ṣe, Mo ni lati lo Selenoid.

Olupin Selenoid ti ṣe ifilọlẹ lori ẹrọ kan pẹlu awọn ohun kohun 32 ati 24 GB ti Ramu. A ṣeto opin naa ni awọn aṣawakiri 48 - awọn okun 1,5 fun mojuto ati nipa 400 MB ti Ramu. Bi abajade, akoko idanwo naa dinku lati wakati mẹta si awọn iṣẹju 40. Iyara awọn ṣiṣe ṣe iranlọwọ lati yanju iṣoro imuduro: ni bayi a le yara awọn adaṣe adaṣe tuntun ni awọn akoko 20-30 titi ti a fi rii daju pe wọn sare ni igbẹkẹle.
Idaduro akọkọ ti ojutu ni lilo giga ti awọn orisun olusare pẹlu nọmba kekere ti awọn okun ti o jọra: lori awọn ohun kohun 4 ati 8 GB ti Ramu, awọn idanwo naa ṣiṣẹ ni iduroṣinṣin ni ko ju awọn okun 6 lọ. Alailanfani keji: ohun itanna n ṣe agbekalẹ awọn kilasi asare fun oju iṣẹlẹ kọọkan, laibikita bawo ni wọn ṣe ṣe ifilọlẹ.

Pataki! Ma ṣe kọja oniyipada pẹlu awọn afi si argLine, fun apẹẹrẹ, bi eleyi:

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

Ti o ba kọja aami naa ni ọna yii, ohun itanna yoo ṣe awọn asare fun gbogbo awọn idanwo, iyẹn ni, yoo gbiyanju lati ṣiṣe gbogbo awọn idanwo, fo wọn lẹsẹkẹsẹ lẹhin ifilọlẹ ati ṣiṣẹda ọpọlọpọ awọn orita JVM.

O tọ lati jabọ oniyipada pẹlu tag sinu afi ninu awọn eto itanna, wo apẹẹrẹ ni isalẹ. Awọn ọna miiran ti a ni idanwo ni awọn iṣoro sisopọ ohun itanna Allure.

Apẹẹrẹ ti akoko ṣiṣe fun awọn idanwo kukuru 6 pẹlu awọn eto ti ko tọ:

[INFO] Total time: 03:17 min

Apẹẹrẹ ti akoko ṣiṣe idanwo ti o ba gbe tag taara si mvn ... -Dcucumber.awọn aṣayan:

[INFO] Total time: 44.467 s

Apẹẹrẹ ti iṣeto awọn idanwo adaṣe:

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

Ṣiṣe, iwọn: iriri ti lilo awọn idanwo adaṣe ni VTB
Apeere ti ijabọ Allure (idanwo aiduroṣinṣin julọ, awọn atunṣe 4)

Ṣiṣe, iwọn: iriri ti lilo awọn idanwo adaṣe ni VTBFifuye olusare lakoko awọn idanwo (awọn ohun kohun 8, Ramu 8 GB, awọn okun 12)
 
Aleebu:

  • iṣeto irọrun - o kan nilo lati ṣafikun ohun itanna kan;
  • agbara lati ṣe nọmba nla ti awọn idanwo nigbakanna;
  • isare ti imuduro idanwo ọpẹ si igbesẹ 1. 

Konsi:

  • Ọpọ OS / awọn apoti ti a beere;
  • agbara awọn oluşewadi giga fun orita kọọkan;
  • Ohun itanna naa ti pẹ ko si ni atilẹyin mọ. 

Bawo ni lati bori aisedeede 

Awọn ijoko idanwo ko dara, gẹgẹ bi awọn adaṣe adaṣe funrararẹ. Kii ṣe iyalẹnu pe a ni nọmba awọn idanwo alakikan. Wa si igbala maven surefire itanna, eyiti lati inu apoti ṣe atilẹyin tun bẹrẹ awọn idanwo ti o kuna. O nilo lati ṣe imudojuiwọn ẹya afikun si o kere ju 2.21 ki o kọ laini kan pẹlu nọmba awọn atunbere ninu faili pom tabi ṣe bi ariyanjiyan si Maven.

Apẹẹrẹ ti iṣeto awọn idanwo adaṣe:

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

Tabi ni ibẹrẹ: mvn … -Dsurefire.rerunFailingTestsCount=2 …
Gẹgẹbi aṣayan, ṣeto awọn aṣayan Maven fun iwe afọwọkọ PowerShell (PS1):

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

Aleebu:

  • ko si ye lati padanu akoko lati ṣe itupalẹ idanwo ti ko duro nigbati o ba ṣubu;
  • idanwo awọn iṣoro iduroṣinṣin ibujoko le dinku.

Konsi:

  • awọn abawọn lilefoofo le padanu;
  • ṣiṣe akoko posi.

Awọn idanwo ti o jọra pẹlu ile-ikawe kukumba 4

Nọmba awọn idanwo dagba ni gbogbo ọjọ. A tun ronu nipa iyara awọn ṣiṣe. Ni afikun, Mo fẹ lati ṣepọ bi ọpọlọpọ awọn idanwo bi o ti ṣee ṣe sinu opo gigun ti apejọ ohun elo. Idi pataki ni pe iran ti awọn aṣaju gba gun ju nigbati o nṣiṣẹ ni afiwe nipa lilo ohun itanna Maven.

Ni akoko yẹn, Kukumba 4 ti tu silẹ tẹlẹ, nitorinaa a pinnu lati tun ekuro kọ fun ẹya yii. Ninu awọn akọsilẹ itusilẹ a ṣe ileri ifilọlẹ ni afiwe ni ipele okun. Ni imọran eyi yẹ ki o jẹ:

  • ni pataki iyara ṣiṣe awọn adaṣe adaṣe nipasẹ jijẹ nọmba awọn okun;
  • imukuro awọn isonu ti akoko lori ti o npese asare fun kọọkan autotest.

Ṣiṣapeye ilana fun awọn adaṣe adaṣe olona-asapo yipada lati ko nira pupọ. Kukumba 4 n ṣe idanwo kọọkan kọọkan lori okun iyasọtọ lati ibẹrẹ si ipari, nitorinaa diẹ ninu awọn ohun aimi ti o wọpọ ni a yipada nirọrun si awọn oniyipada ThreadLocal. 
Ohun akọkọ nigbati o ba yipada ni lilo awọn irinṣẹ atunṣe imọran ni lati ṣayẹwo awọn aaye nibiti a ti ṣe afiwe oniyipada (fun apẹẹrẹ, ṣayẹwo fun asan). Ni afikun, o nilo lati ṣafikun ohun itanna Allure si asọye kilasi Junit Runner.

Apẹẹrẹ ti iṣeto awọn idanwo adaṣe:

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

Ṣiṣe, iwọn: iriri ti lilo awọn idanwo adaṣe ni VTBApeere ti ijabọ Allure (idanwo aiduroṣinṣin julọ, awọn atunṣe 5)

Ṣiṣe, iwọn: iriri ti lilo awọn idanwo adaṣe ni VTBFifuye olusare lakoko awọn idanwo (awọn ohun kohun 8, Ramu 8 GB, awọn okun 24)

Aleebu:

  • kekere awọn oluşewadi agbara;
  • atilẹyin abinibi lati Kukumba - ko si awọn irinṣẹ afikun ti a beere;
  • agbara lati ṣiṣẹ diẹ sii ju awọn okun 6 fun mojuto ero isise.

Konsi:

  • o nilo lati rii daju pe koodu naa ṣe atilẹyin ipaniyan ọpọlọpọ-asapo;
  • ẹnu-ọna titẹsi pọ si.

Awọn ijabọ Allure lori awọn oju-iwe GitLab

Lẹhin iṣafihan ipaniyan olona-asapo, a bẹrẹ lati lo akoko pupọ diẹ sii lati ṣe itupalẹ awọn ijabọ. Ni akoko yẹn, a ni lati gbejade ijabọ kọọkan bi ohun-ọṣọ si GitLab, lẹhinna ṣe igbasilẹ rẹ ki o tu silẹ. Ko rọrun pupọ ati pe o gba akoko pipẹ. Ati pe ti ẹnikan ba fẹ lati wo ijabọ fun ara wọn, lẹhinna wọn yoo nilo lati ṣe awọn iṣẹ kanna. A fẹ lati gba esi ni iyara, ati pe a rii ojutu kan - awọn oju-iwe GitLab. Eyi jẹ ẹya ti a ṣe sinu ti o wa lati inu apoti ni gbogbo awọn ẹya aipẹ ti GitLab. Gba ọ laaye lati ran awọn aaye aimi sori olupin rẹ ki o wọle si wọn nipasẹ ọna asopọ taara.

Gbogbo awọn sikirinisoti ti awọn ijabọ Allure ni a ya lori awọn oju-iwe GitLab. Iwe afọwọkọ fun jijade ijabọ naa si awọn oju-iwe GitLab - ni Windows PowerShell (ṣaaju eyi o nilo lati ṣiṣe awọn adaṣe adaṣe):

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

Kini ila isalẹ 

Nitorinaa, ti o ba n ronu boya o nilo koodu ailewu okun ni ilana adaṣe adaṣe kukumba, ni bayi idahun ti han - pẹlu Kukumba 4 o rọrun lati ṣe imuse rẹ, nitorinaa pọsi nọmba awọn okun ti a ṣe ifilọlẹ ni akoko kanna. Pẹlu ọna yii ti awọn idanwo ṣiṣe, ibeere naa di bayi nipa iṣẹ ẹrọ pẹlu Selenoid ati ibujoko idanwo.

Iṣeṣe ti fihan pe ṣiṣe awọn adaṣe adaṣe lori awọn okun gba ọ laaye lati dinku agbara awọn orisun si o kere ju pẹlu iṣẹ ṣiṣe to dara julọ. Gẹgẹbi a ti le rii lati awọn aworan, awọn okun ilọpo meji ko yorisi isare kanna ni awọn idanwo iṣẹ. Sibẹsibẹ, a ni anfani lati ṣafikun diẹ sii ju awọn idanwo adaṣe adaṣe 2 si kikọ ohun elo, eyiti paapaa pẹlu awọn atunṣe 200 ṣiṣẹ ni bii awọn iṣẹju 5. Eyi n gba ọ laaye lati gba esi ni iyara lati ọdọ wọn, ati, ti o ba jẹ dandan, ṣe awọn ayipada ati tun ilana naa tun.

orisun: www.habr.com

Fi ọrọìwòye kun