เบ›เบฐเบ•เบดเบšเบฑเบ”, เบ‚เบฐเบซเบ™เบฒเบ”: เบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบขเบนเปˆ VTB

เบžเบฐเปเบ™เบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เบ—เปเปˆเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเปƒเบซเบกเปˆเบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบœเบฐเบฅเบดเบ”. เปเบ™เปˆเบ™เบญเบ™, เบ™เบตเป‰เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เบเบฒเบ™เบ•เบฑเบ”เปเบกเปˆเบ™เป€เบฅเบทเปˆเบญเบ‡เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™, เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบชเบฑเป‰เบ™เบ”เบฝเบงเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบกเบฒเบฎเบญเบ”เบˆเบธเบ”เบ‚เบญเบ‡ multi-threaded autotest เปเบฅเปˆเบ™เปƒเบ™ Selenoid เปƒเบ™เบ—เปเปˆเบเปเปˆเบชเป‰เบฒเบ‡เบ”เป‰เบงเบเบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Allure เปƒเบ™เบซเบ™เป‰เบฒ GitLab เปเบฅเบฐเปƒเบ™เบ—เบตเปˆเบชเบธเบ”เบเปเปˆเป„เบ”เป‰เบฎเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ—เบตเปˆเป€เบขเบฑเบ™. เบ—เบตเปˆเบ„เบปเบ™เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เบ—เบตเบกเป„เบ”เป‰.

เบ›เบฐเบ•เบดเบšเบฑเบ”, เบ‚เบฐเบซเบ™เบฒเบ”: เบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบขเบนเปˆ VTB

เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบšเปˆเบญเบ™เปƒเบ”?

เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ” autotests เปเบฅเบฐเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ—เปเปˆ, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰เบขเปˆเบฒเบ‡เบเบทเบ”เบซเบเบธเปˆเบ™เป€เบžเบทเปˆเบญเปƒเบซเป‰เป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบšเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เป‚เบ”เบเบซเบฅเบฑเบเบเบฒเบ™เปเบฅเป‰เบง, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ”เบฝเบงเบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ autotesting, เบ”เบฑเบ”เปเบ›เบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบฑเบ‡ autotests เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ—เปเปˆ. เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบทเบญเบเป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบขเบตเบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • Java,
  • Maven,
  • เป€เบŠเป€เบฅเบ™เบฝเบก,
  • เปเบฒเบเปเบ•เบ‡+เปเบฒเบเป€เบœเบฑเบ” 4,
  • เบ”เบถเบ‡เบ”เบนเบ”,
  • GitLab.

เบ›เบฐเบ•เบดเบšเบฑเบ”, เบ‚เบฐเบซเบ™เบฒเบ”: เบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบขเบนเปˆ VTB

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบŠเบธเบ”เบ™เบตเป‰เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ? Java เปเบกเปˆเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™เบžเบฒเบชเบฒเบ—เบตเปˆเบ™เบดเบเบปเบกเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เปเบฅเบฐเบชเบฐเบกเบฒเบŠเบดเบเบ—เบตเบกเบ‡เบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบงเบปเป‰เบฒเบกเบฑเบ™. Selenium เปเบกเปˆเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™. เปเบ•เบ‡, เปƒเบ™เบšเบฑเบ™เบ”เบฒเบชเบดเปˆเบ‡เบญเบทเปˆเบ™เป†, เบ„เบงเบ™เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เปƒเบˆเปƒเบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปƒเบ™เบžเบฒเบเบชเปˆเบงเบ™เบ‚เบญเบ‡เบžเบฐเปเบ™เบเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ„เบนเปˆเบกเบท.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบชเบฑเป‰เบ™เบ”เปˆเบฝเบง

เปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบˆเบฐเบšเปเปˆ reinvent เบฅเปเป‰, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบญเบปเบฒเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบˆเบฒเบ repositories เบ•เปˆเบฒเบ‡เป†เปƒเบ™ GitHub เป€เบ›เบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบญเบšเปเบฅเบฐเบ›เบฑเบšเปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเป€เบฎเบปเบฒเป€เบญเบ‡. เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเป‰เบฒเบ‡เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบชเปเบฒเบฅเบฑเบšเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบซเบผเบฑเบเบ—เบตเปˆเบกเบตเบซเบผเบฑเบเบ‚เบญเบ‡เบเบญเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปเบฅเบฐเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบ—เบตเปˆเบกเบตเบ•เบปเบงเบขเปˆเบฒเบ‡เบ„เปเบฒเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบขเบนเปˆเปƒเบ™เบซเบผเบฑเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เปเบ•เปˆเบฅเบฐเบ—เบตเบกเบ•เป‰เบญเบ‡เป„เบ”เป‰เป€เบญเบปเบฒเบฎเบนเบšเบžเบฒเบšเบ„เปเบฒเปเบฅเบฐเบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปƒเบ™เบกเบฑเบ™, เบ›เบฑเบšเบกเบฑเบ™เป€เบ‚เบปเป‰เบฒเบเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ. เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป„เบ”เป‰โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบกเบฑเบ™โ€‹เบเบฑเบšโ€‹เบ—เบฐโ€‹เบ™เบฒโ€‹เบ„เบฒเบ™ GitLab-CIโ€‹, เบ—เบตเปˆโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เบ„เปˆเบฒโ€‹:

  • เปเบฅเปˆเบ™เบ›เบฐเบˆเปเบฒเบงเบฑเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบฅเบฒเบเบฅเบฑเบเบญเบฑเบเบชเบญเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเป‚เบ„เบ‡เบเบฒเบ™;
  • เป€เบ›เบตเบ”เบ•เบปเบงเปƒเบ™เบ—เปเปˆเบเปเปˆเบชเป‰เบฒเบ‡.

เปƒเบ™เบ•เบญเบ™เบ—เปเบฒเบญเบดเบ”เบกเบตเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบšเปเปˆเบซเบผเบฒเบเบ›เบฒเบ™เปƒเบ”, เปเบฅเบฐเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ–เบทเบเบ”เปเบฒเป€เบ™เบตเบ™เบขเบนเปˆเปƒเบ™เบชเบฒเบเบ™เป‰เปเบฒเบซเบ™เบถเปˆเบ‡. เบเบฐเบ—เบนเป‰เบ”เบฝเบงเบ—เบตเปˆเปเบฅเปˆเบ™เบขเบนเปˆเปƒเบ™ GitLab Windows runner เป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบšเบžเบงเบเป€เบฎเบปเบฒเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบ”เบต: เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป„เบ”เป‰เป‚เบซเบผเบ” bench เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบšเบปเบฒเบซเบผเบฒเบเปเบฅเบฐเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป€เบเบทเบญเบšเบšเปเปˆเบกเบตเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™.

เป€เบกเบทเปˆเบญเป€เบงเบฅเบฒเบœเปˆเบฒเบ™เป„เบ›, เบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ™เบฑเบšเบกเบทเป‰เบ™เบฑเบšเบซเบผเบฒเบเบ‚เบทเป‰เบ™, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เปเบฅเปˆเบ™เบžเบงเบเบกเบฑเบ™เปเบšเบšเบ‚เบฐเบซเบ™เบฒเบ™, เป€เบกเบทเปˆเบญเบเบฒเบ™เปเบฅเปˆเบ™เป€เบ•เบฑเบกเป€เบงเบฅเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ›เบฐเบกเบฒเบ™เบชเบฒเบกเบŠเบปเปˆเบงเป‚เบกเบ‡. เบšเบฑเบ™เบซเบฒเบญเบทเปˆเบ™เป†เบเบฑเบ‡เบ›เบฒเบเบปเบ”:

  • เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบชเบฒเบกเบฒเบ”เบเบงเบ”เบชเบญเบšเป„เบ”เป‰เบงเปˆเบฒเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบกเบตเบ„เบงเบฒเบกเปเบฑเป‰เบ™เบ„เบปเบ‡;
  • เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เบตเปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบซเบผเบฒเบเบ„เบฑเป‰เบ‡เบ•เบดเบ”เบ•เปเปˆเบเบฑเบ™เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบšเบฒเบ‡เบ„เบฑเป‰เบ‡ crashed เปƒเบ™ CI.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ 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>

 เบ›เบฐเบ•เบดเบšเบฑเบ”, เบ‚เบฐเบซเบ™เบฒเบ”: เบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบขเบนเปˆ VTB
เบ•เบปเบงเบขเปˆเบฒเบ‡เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Allure

 เบ›เบฐเบ•เบดเบšเบฑเบ”, เบ‚เบฐเบซเบ™เบฒเบ”: เบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบขเบนเปˆ VTB
เบเบฒเบ™เป‚เบซเบผเบ”เบ•เบปเบงเปเบฅเปˆเบ™เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš (8 cores, 8 GB RAM, 1 thread)
 
เบ‚เปเป‰เบ”เบตเบ‚เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบชเบฑเป‰เบ™เบ”เปˆเบฝเบง:

  • เบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™;
  • เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเปƒเบ™ CI เปเบกเปˆเบ™เบšเปเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเปƒเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™;
  • เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบšเปเปˆเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเป€เบŠเบดเปˆเบ‡เบเบฑเบ™เปเบฅเบฐเบเบฑเบ™;
  • เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบฑเป‰เบ™เบ•เปˆเปเบฒเบชเปเบฒเบฅเบฑเบšเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ™เบฑเบเปเบฅเปˆเบ™.

เบ‚เปเป‰โ€‹เป€เบชเบโ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบปเบ”โ€‹เบชเบญเบšโ€‹เบเบฐโ€‹เบ—เบนเป‰โ€‹เบ”เบฝเบงโ€‹:

  • เปƒเบŠเป‰ เป€เบง เบฅเบฒ เบ”เบปเบ™ เบ™เบฒเบ™ เบ—เบตเปˆ เบˆเบฐ เบชเปเบฒ เป€เบฅเบฑเบ”;
  • เบชเบฐเบ–เบฝเบ™เบฅเบฐเบžเบฒเบšเบเบฒเบงเบ‚เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš;
  • เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบŠเบฑเบšโ€‹เบžเบฐโ€‹เบเบฒโ€‹เบเบญเบ™โ€‹เบ™เบฑเบโ€‹เปเบฅเปˆเบ™โ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบ›เบฐโ€‹เบชเบดเบ”โ€‹เบ—เบดโ€‹เบœเบปเบ™โ€‹, เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ•โ€‹เปˆโ€‹เปโ€‹เบฒโ€‹เบ—เบตเปˆโ€‹เบชเบธเบ”โ€‹.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเปˆเบฝเบงเบเบฑเบšเบชเป‰เบญเบก JVM

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เบ”เบนเปเบฅเบฅเบฐเบซเบฑเบ”เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบเบฐเบ—เบนเป‰เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบญเบšเบžเบทเป‰เบ™เบ–เบฒเบ™, เบงเบดเบ—เบตเบ—เบตเปˆเบˆเบฐเปเบˆเป‰เบ‡เบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ™เปเบกเปˆเบ™. cucumber-jvm-parallel-plugin เบชเปเบฒเบฅเบฑเบš Maven. เบ›เบฑเปŠเบเบญเบดเบ™เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเบ•เบฑเป‰เบ‡เบ„เปˆเบฒ, เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบฐเบซเบ™เบฒเบ™เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ•เป‰เบญเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบขเบนเปˆเปƒเบ™เบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบšเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ. เบšเปเปˆเบกเบตเบซเบเบฑเบ‡เป€เบฎเบฑเบ”, เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เปƒเบŠเป‰ Selenoid.

เป€เบŠเบตเบšเป€เบงเบต Selenoid เป„เบ”เป‰เบ–เบทเบเป€เบ›เบตเบ”เบ•เบปเบงเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบ—เบตเปˆเบกเบต 32 cores เปเบฅเบฐ 24 GB เบ‚เบญเบ‡ RAM. เบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เป„เบ”เป‰เบ–เบทเบเบเปเบฒเบ™เบปเบ”เบขเบนเปˆเบ—เบตเปˆ 48 เบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบš - 1,5 threads เบ•เปเปˆเบซเบผเบฑเบเปเบฅเบฐเบ›เบฐเบกเบฒเบ™ 400 MB เบ‚เบญเบ‡ RAM. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป€เบงเบฅเบฒเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป„เบ”เป‰เบ–เบทเบเบซเบผเบธเบ”เบฅเบปเบ‡เบˆเบฒเบเบชเบฒเบกเบŠเบปเปˆเบงเป‚เบกเบ‡เป€เบ›เบฑเบ™ 40 เบ™เบฒเบ—เบต. เบเบฒเบ™เป€เบฅเบฑเปˆเบ‡เบเบฒเบ™เปเบฅเปˆเบ™เป„เบ”เป‰เบŠเปˆเบงเบเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบชเบฐเบ–เบฝเบ™เบฅเบฐเบžเบฒเบš: เบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เปเบฅเปˆเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปƒเปเปˆเป„เบ”เป‰เป„เบง 20-30 เป€เบ—เบทเปˆเบญเบˆเบปเบ™เบเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบžเบงเบเบกเบฑเบ™เปเบฅเปˆเบ™เป„เบ”เป‰เบขเปˆเบฒเบ‡เปเบฑเป‰เบ™เปƒเบˆ.
เบ‚เปเป‰เบšเบปเบเบœเปˆเบญเบ‡เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบเบฒเบ™เปเบเป‰เป„เบ‚เปเบกเปˆเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ‚เบญเบ‡เบ™เบฑเบเปเบฅเปˆเบ™เบ—เบตเปˆเบกเบตเบˆเปเบฒเบ™เบงเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบ‚เบญเบ‡เบเบฐเบ—เบนเป‰เบ‚เบฐเบซเบ™เบฒเบ™: เปƒเบ™ 4 cores เปเบฅเบฐ 8 GB เบ‚เบญเบ‡ RAM, เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบฅเปˆเบ™เบขเปˆเบฒเบ‡เบซเบกเบฑเป‰เบ™เบ„เบปเบ‡เปƒเบ™เบšเปเปˆเป€เบเบตเบ™ 6 threads. เบ‚เปเป‰เป€เบชเบเบ—เบตเบชเบญเบ‡: plugin เบชเป‰เบฒเบ‡เบซเป‰เบญเบ‡เบฎเบฝเบ™เบ™เบฑเบเปเบฅเปˆเบ™เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™, เบšเปเปˆเบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบ–เบทเบเป€เบ›เบตเบ”เบ•เบปเบงเบซเบผเบฒเบเบ›เบฒเบ™เปƒเบ”.

เบชเปเบฒเบ„เบฑเบ™! เบšเปเปˆเบœเปˆเบฒเบ™เบ•เบปเบงเปเบ›เบ—เบตเปˆเบกเบต tags เบเบฑเบš argLineเบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰:

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

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบœเปˆเบฒเบ™เปเบ—เบฑเบเบ”เป‰เบงเบเบงเบดเบ—เบตเบ™เบตเป‰, plugin เบˆเบฐเบชเป‰เบฒเบ‡ runners เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบกเบฑเบ™เบˆเบฐเบžเบฐเบเบฒเบเบฒเบกเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”, เบ‚เป‰เบฒเบกเบžเบงเบเบกเบฑเบ™เบ—เบฑเบ™เบ—เบตเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเปเบฅเบฐเบชเป‰เบฒเบ‡ JVM fork เบซเบผเบฒเบ.

เบกเบฑเบ™เบ–เบทเบเบ•เป‰เบญเบ‡เบ—เบตเปˆเบˆเบฐเบ–เบดเป‰เบกเบ•เบปเบงเปเบ›เบ—เบตเปˆเบกเบตเปเบ—เบฑเบเปƒเบชเปˆ tags เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ plugin, เป€เบšเบดเปˆเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰. เบงเบดเบ—เบตเบเบฒเบ™เบญเบทเปˆเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ—เบปเบ”เบชเบญเบšเบกเบตเบšเบฑเบ™เบซเบฒเปƒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ plugin Allure.

เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบงเบฅเบฒเปเบฅเปˆเบ™เบชเปเบฒเบฅเบฑเบš 6 เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบชเบฑเป‰เบ™เบ—เบตเปˆเบกเบตเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡:

[INFO] Total time: 03:17 min

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เป€เบงเบฅเบฒเบ—เบปเบ”เบชเบญเบšเบ–เป‰เบฒเบ—เปˆเบฒเบ™เป‚เบญเบ™เปเบ—เบฑเบเป‚เบ”เบเบเบปเบ‡เป„เบ›เบซเบฒ mvn... โ€“Dcucumber.options:

[INFO] Total time: 44.467 s

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ 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>

เบ›เบฐเบ•เบดเบšเบฑเบ”, เบ‚เบฐเบซเบ™เบฒเบ”: เบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบขเบนเปˆ VTB
เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Allure (เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เบตเปˆเบšเปเปˆเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡เบ—เบตเปˆเบชเบธเบ”, 4 reruns)

เบ›เบฐเบ•เบดเบšเบฑเบ”, เบ‚เบฐเบซเบ™เบฒเบ”: เบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบขเบนเปˆ VTBเบเบฒเบ™เป‚เบซเบผเบ”เบ•เบปเบงเปเบฅเปˆเบ™เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš (8 cores, 8 GB RAM, 12 threads)
 
Pros:

  • เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ‡เปˆเบฒเบ - เบ—เปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบก plugin;
  • เบ„เบงเบฒเบกโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบžเป‰เบญเบกโ€‹เบเบฑเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบซเบผเบฒเบโ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบปเบ”โ€‹เบชเบญเบšโ€‹;
  • เบเบฒเบ™เป€เบฅเบฑเปˆเบ‡เบ„เบงเบฒเบกเบ„เบปเบ‡เบ•เบปเบงเบ‚เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ‚เปเบ‚เบญเบšเปƒเบˆเบเบฑเบšเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบต 1. 

Cons:

  • เบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบผเบฒเบ OS/containers;
  • เบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบชเบนเบ‡เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบชเป‰เบญเบก;
  • เบ›เบฑเปŠเบเบญเบดเบ™เปเบกเปˆเบ™เป€เบเบปเปˆเบฒเปเบฅเป‰เบงเปเบฅเบฐเบšเปเปˆเบฎเบญเบ‡เบฎเบฑเบšเบญเบตเบเบ•เปเปˆเป„เบ›. 

เบงเบดเบ—เบตเบเบฒเบ™เป€เบญเบปเบฒเบŠเบฐเบ™เบฐเบ„เบงเบฒเบกเบšเปเปˆเบชเบฐเบ–เบฝเบ™เบฅเบฐเบžเบฒเบš 

เบšเปˆเบญเบ™เบ™เบฑเปˆเบ‡เบ—เบปเบ”เบชเบญเบšเปเบกเปˆเบ™เบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก, เบ„เบทเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เบกเบฑเบ™เบšเปเปˆเปเบ›เบเปƒเบˆเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš flacky. เบกเบฒเบฎเบญเบ”เบเบนเป‰เป„เบž maven surefire plugin, เป€เบŠเบดเปˆเบ‡เบญเบญเบเบˆเบฒเบเบเปˆเบญเบ‡เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เบตเปˆเบฅเบปเป‰เบกเป€เบซเบฅเบงเบ„เบทเบ™เปƒเบซเบกเปˆ. เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ›เบฑเบšเบ›เบธเบ‡เบชเบฐเบšเบฑเบš plugin เป€เบ›เบฑเบ™เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบ 2.21 เปเบฅเบฐเบ‚เบฝเบ™เบซเบ™เบถเปˆเบ‡เปเบ–เบงเบ—เบตเปˆเบกเบตเบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบซเบกเปˆเปƒเบ™ pom file เบซเบผเบทเบœเปˆเบฒเบ™เบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบเบฑเบš Maven.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ autotests:

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

เบซเบผเบทเปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™: mvn โ€ฆ -Dsurefire.rerunFailingTestsCount=2 โ€ฆ
เปƒเบ™โ€‹เบ–เบฒโ€‹เบ™เบฐโ€‹เป€เบ›เบฑเบ™โ€‹เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹, เบ•เบฑเป‰เบ‡โ€‹เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบ Maven เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบชเบฐโ€‹เบ„เบดเบš PowerShell (PS1โ€‹)โ€‹:

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

Pros:

  • เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบชเบเป€เบงเบฅเบฒเปƒเบ™เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เบตเปˆเบšเปเปˆเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบกเบฑเบ™เบ‚เบฑเบ”เบ‚เป‰เบญเบ‡;
  • เบšเบฑเบ™เบซเบฒเบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡เบ‚เบญเบ‡ bench เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบซเบผเบธเบ”เบœเปˆเบญเบ™.

Cons:

  • เบ‚เปเป‰เบšเบปเบเบžเปˆเบญเบ‡เบฅเบญเบเบชเบฒเบกเบฒเบ”เบžเบฒเบ”เป„เบ”เป‰;
  • เป€เบงเบฅเบฒเปเบฅเปˆเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ‚เบฐเบซเบ™เบฒเบ™เบเบฑเบš Cucumber 4 เบซเปเบชเบฐเบซเบกเบธเบ”

เบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบ—เบธเบเป†เบกเบทเป‰. เบžเบงเบเป€เบฎเบปเบฒเบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบฅเบฑเปˆเบ‡เบเบฒเบ™เปเบฅเปˆเบ™เบญเบตเบเบ„เบฑเป‰เบ‡. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบซเบผเบฒเบเป€เบ—เบปเปˆเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ—เปเปˆเบเบฒเบ™เบ›เบฐเบเบญเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ. เบ›เบฑเบ”เปƒเบˆเบชเปเบฒเบ„เบฑเบ™เปเบกเปˆเบ™เบงเปˆเบฒเบเบฒเบ™เบœเบฐเบฅเบดเบ”เบ‚เบญเบ‡เบ™เบฑเบเปเบฅเปˆเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเบ”เบปเบ™เป€เบเบตเบ™เป„เบ›เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปเบฅเปˆเบ™เบ‚เบฐเบซเบ™เบฒเบ™เป‚เบ”เบเปƒเบŠเป‰ plugin Maven.

เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ™เบฑเป‰เบ™, Cucumber 4 เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบ›เปˆเบญเบโ€‹เบญเบญเบโ€‹เบกเบฒโ€‹เปเบฅเป‰เบง, เบชเบฐโ€‹เบ™เบฑเป‰เบ™โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป„เบ”เป‰โ€‹เบ•เบฑเบ”โ€‹เบชเบดเบ™โ€‹เปƒเบˆโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบ‚เบฝเบ™โ€‹เปƒเบซเบกเปˆ kernel เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบชเบฐโ€‹เบšเบฑเบšโ€‹เบ™เบตเป‰. เปƒเบ™เบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เบ›เปˆเบญเบเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ–เบทเบเบชเบฑเบ™เบเบฒเบงเปˆเบฒเป€เบ›เบตเบ”เบ•เบปเบงเบ‚เบฐเบซเบ™เบฒเบ™เบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบšเบเบฐเบ—เบนเป‰. เปƒเบ™เบ—เบฒเบ‡เบ—เบดเบ”เบชเบฐเบ”เบต, เบ™เบตเป‰เบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™:

  • เป€เบฅเบฑเปˆเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡ autotests เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเป‚เบ”เบเบเบฒเบ™เป€เบžเบตเปˆเบกเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบเบฐเบ—เบนเป‰;
  • เบฅเบปเบšเบฅเป‰เบฒเบ‡เบเบฒเบ™เบชเบนเบ™เป€เบชเบเป€เบงเบฅเบฒเปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบ™เบฑเบเปเบฅเปˆเบ™เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐ autotest.

เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบญเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบซเบผเบฒเบเบเบฐเบ—เบนเป‰เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เป€เบฅเบทเปˆเบญเบ‡เบ—เบตเปˆเบšเปเปˆเบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบ. Cucumber 4 เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบ•เปˆเบฅเบฐเบ„เบปเบ™เปƒเบ™เบซเบปเบงเบ‚เปเป‰เบ—เบตเปˆเบญเบธเบ—เบดเบ”เบ•เบปเบ™เบ•เบฑเป‰เบ‡เปเบ•เปˆเบ•เบปเป‰เบ™เบˆเบปเบ™เบˆเบปเบš, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบšเบฒเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบ„เบปเบ‡เบ—เบตเปˆเบ—เบปเปˆเบงเป„เบ›เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ› ThreadLocal. 
เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เปเบ›เบ‡เป‚เบ”เบเปƒเบŠเป‰ Idea refactoring tools เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบเบงเบ”เป€เบšเบดเปˆเบ‡เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ—เบตเปˆเบ•เบปเบงเปเบ›เป„เบ”เป‰เบ–เบทเบเบ›เบฝเบšเบ—เบฝเบš (เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบงเบ”เป€เบšเบดเปˆเบ‡เบชเปเบฒเบฅเบฑเบš null). เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบžเบตเปˆเบก plugin Allure เบเบฑเบšเบ„เปเบฒเบšเบฑเบ™เบเบฒเบเบ‚เบญเบ‡ Junit Runner class.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ 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>

เบ›เบฐเบ•เบดเบšเบฑเบ”, เบ‚เบฐเบซเบ™เบฒเบ”: เบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบขเบนเปˆ VTBเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Allure (เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เบตเปˆเบšเปเปˆเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡เบ—เบตเปˆเบชเบธเบ”, 5 reruns)

เบ›เบฐเบ•เบดเบšเบฑเบ”, เบ‚เบฐเบซเบ™เบฒเบ”: เบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบขเบนเปˆ VTBเบเบฒเบ™เป‚เบซเบผเบ”เบ•เบปเบงเปเบฅเปˆเบ™เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš (8 cores, 8 GB RAM, 24 threads)

Pros:

  • เบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ•เปเปˆเบฒ;
  • เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบทเป‰เบ™เป€เบกเบทเบญเบ‡เบˆเบฒเบเปเบ•เบ‡ - เบšเปเปˆเบกเบตเป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™;
  • เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เปเบฅเปˆเบ™เบซเบผเบฒเบเบเบงเปˆเบฒ 6 threads เบ•เปเปˆเบซเบผเบฑเบเบ‚เบญเบ‡เป‚เบ›เป€เบŠเบ”เป€เบŠเบต.

Cons:

  • เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบฅเบฐเบซเบฑเบ”เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบผเบฒเบเบเบฐเบ—เบนเป‰;
  • เป€เบเบ™เป€เบ‚เบปเป‰เบฒเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™.

เบฅเบฒเบเบ‡เบฒเบ™ Allure เปƒเบ™เบซเบ™เป‰เบฒ GitLab

เบซเบผเบฑเบ‡เบˆเบฒเบเปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบผเบฒเบเบเบฐเบ—เบนเป‰, เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบผเบฒเบเปƒเบ™เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™. เปƒเบ™เป€เบงเบฅเบฒเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบญเบฑเบšเป‚เบซเบฅเบ”เปเบ•เปˆเบฅเบฐเบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบ›เบฐเบ”เบดเบ”เปƒเบชเปˆ GitLab, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ”เบฒเบงเป‚เบซเบฅเบ”เบกเบฑเบ™เปเบฅเบฐเบ–เบญเบ”เบกเบฑเบ™เบญเบญเบ. เบกเบฑเบ™เบšเปเปˆเบชเบฐเบ”เบงเบเบซเบผเบฒเบเปเบฅเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒเบ”เบปเบ™. เปเบฅเบฐเบ–เป‰เบฒเบœเบนเป‰เบญเบทเปˆเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบšเบดเปˆเบ‡เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบชเปเบฒเบฅเบฑเบšเบ•เบปเบ™เป€เบญเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบˆเบฐเบ•เป‰เบญเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ”เบฝเบงเบเบฑเบ™. เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เป„เบ”เป‰เบฎเบฑเบšเบ„เปเบฒเบ„เบถเบ”เบ„เปเบฒเป€เบซเบฑเบ™เป„เบงเบ‚เบถเป‰เบ™, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบžเบปเบšเบเบฒเบ™เปเบเป‰เป„เบ‚ - เบซเบ™เป‰เบฒ GitLab . เบ™เบตเป‰เปเบกเปˆเบ™เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เปƒเบ™เบ•เบปเบงเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰เบญเบญเบเบˆเบฒเบเบเปˆเบญเบ‡เปƒเบ™เบ—เบธเบเบฅเบธเป‰เบ™เบซเบผเป‰เบฒเบชเบธเบ”เบ‚เบญเบ‡ GitLab. เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบ›เบฑเบšเปƒเบŠเป‰เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบชเบฐเบ–เบดเบ”เบขเบนเปˆเปƒเบ™เป€เบŠเบตเบšเป€เบงเบตเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบฅเบฐเป€เบ‚เบปเป‰เบฒเบซเบฒเบžเบงเบเบกเบฑเบ™เบœเปˆเบฒเบ™เบ—เบฒเบ‡เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป‚เบ”เบเบเบปเบ‡.

เบžเบฒเบšเปœเป‰เบฒเบˆเปเบ—เบฑเบ‡เปเบปเบ”เบ‚เบญเบ‡เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Allure เป„เบ”เป‰เบ–เบทเบเบ–เปˆเบฒเบเบขเบนเปˆเปƒเบ™เปœเป‰เบฒ GitLab. เบชเบฐเบ„เบฃเบดเบšเป€เบžเบทเปˆเบญเบ™เบณเปƒเบŠเป‰เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เป„เบ›เปƒเบชเปˆเปœเป‰เบฒ GitLab - เปƒเบ™ Windows PowerShell (เบเปˆเบญเบ™เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ 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

เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบฅเบธเปˆเบกเปเบกเปˆเบ™เบซเบเบฑเบ‡ 

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบงเปˆเบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบฅเบฐเบซเบฑเบ”เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡ Thread เปƒเบ™เบเบญเบš autotest เปเบ•เบ‡, เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ„เปเบฒเบ•เบญเบšเปเบกเปˆเบ™เบˆเบฐเปเบˆเป‰เบ‡ - เบ”เป‰เบงเบ Cucumber 4 เบกเบฑเบ™เบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบกเบฑเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบˆเปเบฒเบ™เบงเบ™เบเบฐเบ—เบนเป‰เบ—เบตเปˆเป€เบ›เบตเบ”เบ•เบปเบงเบžเป‰เบญเบกเบเบฑเบ™เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ. เบ”เป‰เบงเบเบงเบดเบ—เบตเบเบฒเบ™เปเบฅเปˆเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ™เบตเป‰, เบ„เปเบฒเบ–เบฒเบกเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบเบฒเบเป€เบ›เบฑเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบ—เบตเปˆเบกเบต Selenoid เปเบฅเบฐ bench เบ—เบปเบ”เบชเบญเบš.

เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเบเบฒเบ™เปเบฅเปˆเบ™ autotests เปƒเบ™เบเบฐเบ—เบนเป‰เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบซเบผเบธเบ”เบœเปˆเบญเบ™เบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เปƒเบซเป‰เบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”เบ”เป‰เบงเบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”. เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป€เบซเบฑเบ™เป„เบ”เป‰เบˆเบฒเบเบเบฒเบŸ, เบซเบปเบงเบ‚เปเป‰เบชเบญเบ‡เป€เบ—เบปเปˆเบฒเบšเปเปˆเป„เบ”เป‰เบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เป€เบฅเบฑเปˆเบ‡เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เปƒเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเบซเบผเบฒเบเบเบงเปˆเบฒ 2 เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปƒเบ™เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ, เป€เบŠเบดเปˆเบ‡เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบˆเบฐเบกเบต 200 reruns เปƒเบ™เบ›เบฐเบกเบฒเบ™ 5 เบ™เบฒเบ—เบต. เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เป„เบ”เป‰เบฎเบฑเบšเบ„เปเบฒเบ„เบถเบ”เบ„เปเบฒเป€เบซเบฑเบ™เบขเปˆเบฒเบ‡เป„เบงเบงเบฒเบˆเบฒเบเบžเบงเบเป€เบ‚เบปเบฒ, เปเบฅเบฐ, เบ–เป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™, เบ›เปˆเบฝเบ™เปเบ›เบ‡เปเบฅเบฐเป€เบฎเบฑเบ”เบŠเป‰เปเบฒเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™