Implement, scale: experientia utendi automated probat in VTB

Nostra divisio fistulae latae plene creat ad novas versiones applicationum in ambitum productionem deducendi. Donec cursus eget est eget volutpat. Infra incisam narratur quomodo, cum uno-filo probationis localis machinae incipiens, ad punctum multi- liciatorum autotestinorum currentium in Selenoide in aedificatione pipeline cum allicere relationem de GitLab paginas pervenimus et tandem instrumentum frigidum automationis obtinuit. ut futuri homines teams uti possunt.

Implement, scale: experientia utendi automated probat in VTB

Ubi incipimus?

Ad autotestationes efficiendas et in pipelinendum eas integrandas, compage automationis indigemus quae mollius ad nostras necessitates aptandas mutari potuit. Specimen, volui unum vexillum obtinere pro machina autotestantia, apta ad autotests emmittendi in pipelines. Ad exsequendum technologias sequentes delegimus:

  • Java
  • Maven,
  • Selenium,
  • Cucumis+JUNIT 4,
  • Allice,
  • GitLab.

Implement, scale: experientia utendi automated probat in VTB

Quorsum hic potissimum profectus est? Java una e popularibus linguis pro probat automated et omnia membra iunctos loquuntur. Selenium patet solutio. Cucumis, praeter alia, credebatur fiduciam augere in eventibus automated probationum ex parte Dicasteriorum quod in manu temptationis manualibus implicatur.

Unius staminea probat

Ut rotam refricare non posset, explicationes e variis repositoriis in GitHub pro fundamento compagis cepimus et eas nobis aptavimus. Repositorium ad bibliothecam principalem cum nucleo fabricae autoteststae et repositorium creavimus cum Aurum exemplo ad exsequendam autotestorum in nucleo nostro. Singulae turmae ad imaginem Aurum accipiendam et ad probationes in ea explicandas accommodantes ad consilium suum. eam explicavimus ad ripam GitLab-CI, in qua figuravimus;

  • cotidie currit omnium scriptorum autotestorum in singula consilia;
  • launches in aedificare pipeline.

Primo erant paucae probationes, et in uno rivo exercebantur. Singulus staminum cursus in cursorem Fenestrarum GitLab nobis satis bene aptus est: probationes testudinis levissime oneratas et paene nullas facultates adhibent.

Subinde numerus autotestorum magis ac numerosior factus est et in parallelis de currendo cogitabamus, cum plenus cursus circiter tres horas capere coepit. Aliae quoque difficultates apparuerunt;

  • non potuimus cognoscere probationes stabiles;
  • probationes quae pluries in ordine decurrunt in machina locali interdum in CI.

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

 Implement, scale: experientia utendi automated probat in VTB
Exemplum allicere fama

 Implement, scale: experientia utendi automated probat in VTB
Cursor onus inter probationes (8 coros, 8 GB RAM, 1 filum)
 
Pros unius fila probat:

  • facile est statuere et currere;
  • immissae in CI nullae fere diversae sunt a launchibus localibus;
  • probat se non afficiunt;
  • minimum requisitis pro cursor opibus.

Incommoda simplicia probat:

  • diutissime absolvere;
  • longam stabilitatem probat;
  • inhabilis usus facultatum currentium, utendo maxime humilis.

Probat in JVM tridentes

Cum codicem tutum filorum non curaremus cum compagem basim exsequerentur, manifestissima via ad currendum in parallelis erat. cucumerarium ad Maven. Plugin facile est configurare, sed ad rectam parallelam operationem, autotests currendi sunt in navigatoribus separatis. Nihil agere, uti Selenoid.

Servus Selenoid in machinam cum 32 nucleis et 24 GB RAM emissa est. Terminus positus est ad navigatores 48 - 1,5 stamina per nucleum et circa 400 MB ipsius RAM. Quam ob rem tempus experimentum a tribus horis ad 40 minutas redactum est. Celerare currit adiutus problema stabilizationis solvendae: nunc novas autotestas 20-30 temporibus celeriter currere potuimus donec certo certius currebamus.
Primum solutionis incommodum fuit alta adhibitio facultatum cursorum cum parvulo staminum parallelorum numero: in 4 coros et 8 GB ipsius RAM, probationes nullo plus quam 6 stamina stabiliter currebant. Secundum incommodum: plugin generat cursorem classes pro qualibet missione, utcumque plures emittuntur.

Magni momenti! Non transiet variabilis cum tags to argLineverbi gratia, sic;

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

Si tag hoc modo transieris, plugin cursores generabit pro omnibus probationibus, id est, omnia tentamenta currere conabitur, eas statim post launch et multas JVM tridentes creans.

Rectum est iactare variabilem cum tag in tags in plugin uncinis vide infra exemplum. Aliae rationes probavimus habere problemata Allure plugin connectentes.

Exemplum currentis temporis pro 6 brevi probat cum occasus falsa:

[INFO] Total time: 03:17 min

Exemplum detegere temporis experimenti si directe transferas tag to mvn... -Dcucumber.options:

[INFO] Total time: 44.467 s

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

Implement, scale: experientia utendi automated probat in VTB
Exemplum allicere famae (teste levissimi, 4 reruns)

Implement, scale: experientia utendi automated probat in VTBCursor onus inter probationes (8 coros, 8 GB RAM, 12 stamina)
 
pros,

  • facile paro - vos iustus postulo plugin addere;
  • facultas simul faciendi magnum numerum probationum;
  • accelerationis test stabilizationis gradum gratiae 1 . 

cons:

  • Multiplex OS/ista requiritur;
  • summus enim quisque furcae ope- ram consumebat;
  • Plugin exstinguitur nec diutius sustinetur. 

Quam vincere instabilitatem 

Scamna examinis non sunt ideales, sicut autotests ipsae. Mirum non est quod nos in multis probat. Ad liberandum maven igneum pluginquae ex archa subsidia restarting incassum probat. Opus est ut plugin versionem saltem 2.21 renovare et unam lineam cum numero restarts in fasciculi pom plicare vel eam ut argumentum Maven transmittere.

Exemplum constituendi autotests:

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

Aut startup: mvn ... -Dsurefire.rerunFailingTestsCount=2 ...
Cum optio, pone optiones Maven pro scripto PowerShell (PS1).

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

pros,

  • non opus est tempus terere examinare instabilem experimentum, cum inruerit;
  • test, scamnum problemata stabilitate mitigari possunt.

cons:

  • fluitantia vitia omitti possunt;
  • currere tempus augetur.

Parallela probat cum bibliotheca Cucumeris 4

Numerus probationum in dies crevit. Nos iterum de velocitate fugit. Insuper quotquot probationes in schedula conventus pipeline integrare voluimus. Factor criticus fuit quod generatio cursorum nimis longum fuit cum currit in parallelis utens Maven plugin.

Illo tempore, Cucumer 4 iam dimissus est, ergo nucleum huius versionis rescribere decrevimus. In notis emissione nobis promissae sumus launches parallelae in gradu sequelae. Cogitatione debet habere;

  • Signanter accelerare cursum autotestium, augendo numerum staminum;
  • temporis dispendium tollere cursores generandi pro unoquoque autotest.

Optimizing compagem multi-filae autotests evenit ut non ita difficile sit. Cucumis 4 singulas singulas probationes in filo dedicato ab initio ad finem decurrit, ideo quaedam res statice communes simpliciter convertuntur ad variabiles ThreadLocal. 
Praecipuum est, cum convertens instrumenta ideae refactorem utentem ad reprimendam loca ubi variabilis comparata est (exempli gratia, reprimendo pro nullis). Praeterea allicere plugin ad Iunit Cursoris annotationem classis addere debes.

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

Implement, scale: experientia utendi automated probat in VTBExemplum allicere famae (teste levissimum, 5 reruns)

Implement, scale: experientia utendi automated probat in VTBCursor onus inter probationes (8 coros, 8 GB RAM, 24 stamina)

pros,

  • humilis resource consummatio;
  • subsidia indigena e Cucumere - instrumenta nulla addita requiruntur;
  • facultas currendi plus quam 6 stamina per processus core.

cons:

  • opus est ut in ipso codice multi- liciatorum executione adstipuletur;
  • vestibulum limen crescit.

Refert allicere in paginas GitLab

Postquam multi- liciatae exsecutionis inductae sunt, multo plus temporis analysin nuntiantes consumere coepimus. In illo tempore habuimus singulas relationes ut artificium ad GitLab uploadare, deinde illud extrahere et exsolvere. Praesent tempor neque ipsum commodo suscipit. Et si aliquis alius vult sibi videre famam, tunc oportebit easdem operationes facere. feedback citius accipere voluimus, et solutionem invenimus - paginas GitLab. Hoc est constructum-in pluma quae praesto est ex archa in omnibus recentibus versionibus GitLab. Permittit tibi ut in servo tuo loca stabilia disponas et ad eas per nexum directum accedas.

Omnes screenshots Alluree relationum in GitLab paginae desumptae sunt. Scriptor explicandi relationem ad paginas GitLab - in Windows PowerShell (antequam currere debes 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

Cum effectus est 

Quare, si cogitares num opus est Thread tutum codicem in compage cucumeris autotestivi, nunc patet responsio - cum Cucumere 4 facile est illud efficere, eoque signanter augere numerum sequelarum simul deductarum. Cum hac ratione currendi probat, quaestio nunc de executione machinae cum Selenoide et scamno probatio fit.

Practice ostendit quod autocineta in filis currentes permittunt te reducere consumptionem subsidiorum ad minimum cum optima operatione. Ut ex graphis videri potest, fila duplicantia non ad similem accelerationem in executione probat. Tamen plus quam 2 probationes automated addere potuimus ad schedulam fabricandam, quae etiam cum 200 reruns circiter 5 minuta currunt. Hoc tibi permittit ut cito ab eis opiniones recipias, et, si opus est, mutationes fac et iter iterum repetas.

Source: www.habr.com