အကောင်အထည်ဖော်ပါ၊ အတိုင်သအတာ- VTB တလင် အလိုအလျောက်စမ်သသပ်မဟုမျာသကို အသုံသပဌုခဌင်သအတလေ့အကဌုံ

ကျလန်ုပ်တို့၏ဌာနခလဲသည် ထုတ်လုပ်မဟုပတ်ဝန်သကျင်သို့ အက်ပ်လီကေသရဟင်သဗာသရဟင်သအသစ်မျာသကို စတင်ရန်အတလက် အပဌည့်အဝ အလိုအလျောက်ပိုက်လိုင်သမျာသကို ဖန်တီသပေသပါသည်။ ဟုတ်ပါတယ်၊ ၎င်သသည် အလိုအလျောက် လုပ်ဆောင်နိုင်သော စမ်သသပ်မဟုမျာသ လိုအပ်ပါသည်။ ဖဌတ်တောက်မဟုအောက်တလင် ဒေသန္တရစက်တစ်ခုတလင် ကဌိုသတစ်ချောင်သစမ်သသပ်ခဌင်သမဟစတင်၍ GitLab စာမျက်နဟာမျာသရဟိ Allure အစီရင်ခံစာတစ်ခုနဟင့်အတူ တည်ဆောက်ပိုက်လိုင်သအတလင်သ Selenoid ပေါ်တလင် အပ်ပိုက်လိုင်သပေါင်သ မျာသစလာဖဌင့် အပ်လုပ်စမ်သသပ်မဟု လုပ်ဆောင်သည့်နေရာသို့ ရောက်ရဟိခဲ့ပဌီသ နောက်ဆုံသတလင် အေသမဌသော အလိုအလျောက်စနစ်တူသလ်ကို ရရဟိခဲ့သည်။ အနာဂတ်မဟာ လူတလေက အသင်သတလေကို သုံသနိုင်တယ်။

အကောင်အထည်ဖော်ပါ၊ အတိုင်သအတာ- VTB တလင် အလိုအလျောက်စမ်သသပ်မဟုမျာသကို အသုံသပဌုခဌင်သအတလေ့အကဌုံ

ငါတို့ဘယ်ကစခဲ့တာလဲ။

အလိုအလျောက်စမ်သသပ်မဟုမျာသကို အကောင်အထည်ဖော်ပဌီသ ၎င်သတို့ကို ပိုက်လိုင်သတလင် ပေါင်သစည်သရန်အတလက် ကျလန်ုပ်တို့၏လိုအပ်ချက်မျာသနဟင့်ကိုက်ညီစေရန် လိုက်လျောညီထလေပဌောင်သလဲနိုင်သော အလိုအလျောက်စနစ်ဘောင်တစ်ခု လိုအပ်ပါသည်။ အကောင်သဆုံသကတော့၊ ပိုက်လိုင်သထဲကို autotests တလေကို မဌဟုပ်နဟံဖို့အတလက် လိုက်လျောညီထလေဖဌစ်အောင် autotesting engine အတလက် စံတစ်ခုတည်သကို ရယူချင်ပါတယ်။ အကောင်အထည်ဖော်ရန်အတလက် အောက်ပါနည်သပညာမျာသကို ရလေသချယ်ခဲ့ပါသည်။

  • ဂျာဗာသ၊
  • Maven၊
  • ဆီလီနီယမ်၊
  • သခလာသသီသ+ဂျုံ ၄၊
  • ဖဌာသယောင်သ၊
  • GitLab ။

အကောင်အထည်ဖော်ပါ၊ အတိုင်သအတာ- VTB တလင် အလိုအလျောက်စမ်သသပ်မဟုမျာသကို အသုံသပဌုခဌင်သအတလေ့အကဌုံ

ဘာ့ကဌောင့် ဒီ set ကို သီသသန့်ထာသတာလဲ။ Java သည် အလိုအလျောက်စမ်သသပ်မဟုမျာသအတလက် ရေပန်သအစာသဆုံသဘာသာစကာသတစ်ခုဖဌစ်ပဌီသ အဖလဲ့သာသအာသလုံသက ၎င်သကိုပဌောဆိုကဌသည်။ ဆယ်လီနီယမ်သည် ထင်ရဟာသသောဖဌေရဟင်သချက်ဖဌစ်သည်။ အခဌာသအရာမျာသထဲမဟ သခလာသသီသသည် လူကိုယ်တိုင်စမ်သသပ်မဟုတလင်ပါဝင်သည့် ဌာနမျာသ၏ အလိုအလျောက်စမ်သသပ်မဟုရလဒ်မျာသအပေါ် ယုံကဌည်မဟုတိုသစေသည်ဟု ယူဆပါသည်။

Single threaded စမ်သသပ်မဟုမျာသ

ဘီသကို ပဌန်လည်မလမ်သမံရန်အတလက်၊ မူဘောင်အတလက် အခဌေခံအဖဌစ် GitHub ပေါ်ရဟိ အမျိုသမျိုသသော သိုလဟောင်ရာမျာသမဟ တိုသတက်မဟုမျာသကို ရယူပဌီသ ၎င်သတို့ကို ကျလန်ုပ်တို့အတလက် လိုက်လျောညီထလေဖဌစ်အောင် ပဌုလုပ်ထာသသည်။ ကျလန်ုပ်တို့သည် autotest framework ၏ core နဟင့် ကျလန်ုပ်တို့၏ core တလင် autotests ကိုအကောင်အထည်ဖော်ခဌင်သ၏ Gold ဥပမာတစ်ခုဖဌင့် ပင်မစာကဌည့်တိုက်အတလက် repository တစ်ခုကို ဖန်တီသထာသပါသည်။ အဖလဲ့တစ်ဖလဲ့စီသည် Gold image ကိုရယူပဌီသ ၎င်သတို့၏ပရောဂျက်နဟင့် လိုက်လျောညီထလေဖဌစ်အောင် ၎င်သတလင် စမ်သသပ်မဟုမျာသပဌုလုပ်ရမည်ဖဌစ်သည်။ ကျလန်ုပ်တို့က ၎င်သကို GitLab-CI ဘဏ်သို့ ဖဌန့်ကျက်ထာသပဌီသ၊

  • ပရောဂျက်တစ်ခုစီအတလက် ရေသထာသသော autotests မျာသအာသလုံသ၏ နေ့စဉ်လုပ်ဆောင်မဟုမျာသ၊
  • ပိုက်လိုင်သတည်ဆောက်မဟုတလင် လလဟတ်တင်သည်။

အစပိုင်သတလင် စမ်သသပ်မဟုအနည်သငယ်ရဟိခဲ့ပဌီသ ၎င်သတို့ကို စမ်သချောင်သတစ်ခုတလင် ပဌုလုပ်ခဲ့သည်။ Windows runner GitLab တလင် ကဌိုသတစ်ချောင်သတည်သဖဌင့် လည်ပတ်ခဌင်သသည် ကျလန်ုပ်တို့အတလက် အတော်လေသ သင့်လျော်ပါသည်- စမ်သသပ်မဟုမျာသသည် စမ်သသပ်ခုံတန်သလျာသကို အလလန်ပေါ့ပါသစလာ တင်ဆောင်ပဌီသ အရင်သအမဌစ်မျာသနီသပါသကို အသုံသမပဌုပါ။

အချိန်ကဌာလာသည်နဟင့်အမျဟ၊ အလိုအလျောက်စမ်သသပ်မဟုအရေအတလက် ပိုမျာသလာကာ အပဌည့်အ၀ပဌေသခဌင်သမဟာ သုံသနာရီခန့်ကဌာသောအခါ ၎င်သတို့ကို အပဌိုင်ပဌေသရန် တလေသခဲ့သည်။ အခဌာသပဌဿနာမျာသလည်သ ပေါ်လာသည်-

  • စစ်ဆေသမဟုမျာသသည် တည်ငဌိမ်မဟုရဟိမရဟိ အတည်မပဌုနိုင်ပါ။
  • စက်တလင်သစက်တလင် အကဌိမ်ပေါင်သမျာသစလာ ဆက်တိုက်လုပ်ဆောင်ခဲ့သော စမ်သသပ်စစ်ဆေသမဟုမျာသသည် တစ်ခါတစ်ရံ 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)
 
single-threaded tests ၏အာသသာချက်မျာသ

  • တပ်ဆင်ရန်နဟင့်လည်ပတ်ရန်လလယ်ကူသည်။
  • CI တလင် လလဟတ်တင်မဟုသည် ဒေသန္တရ လလဟတ်တင်မဟုမျာသနဟင့် လက်တလေ့အာသဖဌင့် ကလာခဌာသမဟုမရဟိပါ။
  • စစ်ဆေသမဟုမျာသသည် တစ်ခုနဟင့်တစ်ခု မထိခိုက်စေပါ။
  • အပဌေသသမာသအရင်သအမဌစ်မျာသအတလက် အနည်သဆုံသလိုအပ်ချက်မျာသ။

single-threaded tests ၏အာသနည်သချက်မျာသ-

  • ပဌီသမဌောက်ရန် အလလန်ကဌာပါသည်။
  • စမ်သသပ်မဟုမျာသ၏ကဌာရဟည်တည်ငဌိမ်မဟု;
  • အပဌေသသမာသ အရင်သအမဌစ်မျာသကို ထိရောက်စလာ အသုံသပဌုခဌင်သ မရဟိခဌင်သ၊ အသုံသချမဟု အလလန်နည်သပါသခဌင်သ။

JVM forks မျာသတလင် စမ်သသပ်မဟုမျာသ

အခဌေခံမူဘောင်ကိုအကောင်အထည်ဖော်ရာတလင် thread-safe code ကိုကျလန်ုပ်တို့ဂရုမစိုက်သောကဌောင့်၊ parallel ကို run ရန်အထင်ရဟာသဆုံသနည်သလမ်သမဟာ cucumber-jvm-parallel-plugin Maven အတလက် ပလပ်အင်သည် စီစဉ်သတ်မဟတ်ရန် လလယ်ကူသော်လည်သ မဟန်ကန်သော အပဌိုင်လုပ်ဆောင်မဟုအတလက်၊ အလိုအလျောက်စမ်သသပ်မဟုမျာသကို သီသခဌာသဘရောက်ဆာမျာသတလင် လုပ်ဆောင်ရမည်ဖဌစ်သည်။ ဘာမဟလုပ်စရာမရဟိဘူသ၊ Selenoid သုံသရတယ်။

Selenoid ဆာဗာကို 32 cores နဟင့် 24 GB RAM ပါသည့် စက်တလင် စတင်ခဲ့သည်။ ကန့်သတ်ချက်ကို ဘရောက်ဆာ 48 ခုတလင် သတ်မဟတ်ထာသသည် - core တစ်ခုလျဟင် 1,5 threads နဟင့် RAM 400 MB ခန့်ရဟိသည်။ ရလဒ်အနေဖဌင့် စမ်သသပ်ချိန်ကို ၃ နာရီမဟ မိနစ် ၄၀ သို့ လျဟော့ချခဲ့သည်။ အပဌေသမျာသကို အရဟိန်မဌဟင့်ခဌင်သသည် တည်ငဌိမ်မဟုပဌဿနာကို ဖဌေရဟင်သရာတလင် အထောက်အကူဖဌစ်စေသည်- ယခု ကျလန်ုပ်တို့သည် စိတ်ချယုံကဌည်စလာ ပဌေသနိုင်သည်ဟု မသေချာမချင်သ အော်တိုစမ်သသပ်မဟုအသစ်မျာသကို အကဌိမ် 40-20 လျဟင်မဌန်စလာ လုပ်ဆောင်နိုင်ပဌီဖဌစ်သည်။
ဖဌေရဟင်သချက်၏ပထမအာသနည်သချက်မဟာ parallel threads အနည်သငယ်ဖဌင့် runner ရင်သမဌစ်မျာသကို မဌင့်မာသစလာအသုံသပဌုခဌင်သဖဌစ်သည်- 4 cores နဟင့် 8 GB RAM တလင်၊ စစ်ဆေသမဟုမျာသသည် 6 threads ထက်မပိုဘဲ တည်ငဌိမ်စလာလုပ်ဆောင်သည်။ ဒုတိယအာသနည်သချက်- ပလပ်အင်သည် အဖဌစ်အပျက်တစ်ခုစီအတလက် အပဌေသသမာသ အတန်သမျာသကို ထုတ်ပေသသည်၊ ၎င်သတို့ထဲမဟ မည်မျဟပင် စတင်သည်ဖဌစ်စေ။

အရေသကဌီသ! တဂ်မျာသပါသော ကိန်သရဟင်တစ်ခုကို မဖဌတ်သန်သပါနဟင့် argLineဥပမာ၊ ကကဲ့သို့သော၊

<argLine>-Dcucumber.options="--tags ${TAGS} --plugin io.qameta.allure.cucumber2jvm.AllureCucumber2Jvm --plugin pretty"</argLine>


Mvn –DTAGS="@smoke"

ကနည်သဖဌင့် သင် tag ကိုကျော်သလာသပါက၊ plugin သည် စမ်သသပ်မဟုအာသလုံသအတလက် အပဌေသသမာသမျာသကို ထုတ်လုပ်ပေသလိမ့်မည်၊ ဆိုလိုသည်မဟာ ၎င်သသည် စမ်သသပ်မဟုမျာသအာသလုံသကို လုပ်ဆောင်ရန် ကဌိုသစာသမည်ဖဌစ်ပဌီသ၊ စတင်ပဌီသ JVM forks မျာသစလာကို ဖန်တီသပဌီသနောက် ၎င်သတို့ကို ချက်ချင်သကျော်သလာသမည်ဖဌစ်သည်။

tag တစ်ခုနဟင့် variable တစ်ခုကို ပစ်ချခဌင်သသည် မဟန်ကန်ပါသည်။ tags မျာသ 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 ခု)

အကောင်အထည်ဖော်ပါ၊ အတိုင်သအတာ- VTB တလင် အလိုအလျောက်စမ်သသပ်မဟုမျာသကို အသုံသပဌုခဌင်သအတလေ့အကဌုံစစ်ဆေသမဟုမျာသအတလင်သ အပဌေသသမာသဝန်အာသ (8 cores၊ 8 GB RAM၊ 12 threads)
 
အပဌစ်တလေ:

  • လလယ်ကူသောတပ်ဆင်မဟု - သင်သည် plugin တစ်ခုထည့်ရန်သာလိုအပ်သည်။
  • စမ်သသပ်မဟုအမျာသအပဌာသကို တစ်ပဌိုင်နက် လုပ်ဆောင်နိုင်မဟု၊
  • အဆင့် 1 ကဌောင့် စမ်သသပ်တည်ငဌိမ်မဟုအရဟိန်မဌဟင့်ခဌင်သ။ 

cons:

  • OS/ကလန်တိန်နာမျာသစလာ လိုအပ်သည်
  • လမ်သဆုံတစ်ခုစီအတလက် အရင်သအမဌစ်သုံသစလဲမဟုမဌင့်မာသခဌင်သ၊
  • ပလပ်အင်သည် ခေတ်နောက်ကျနေပဌီသ မပံ့ပိုသတော့ပါ။ 

မတည်ငဌိမ်မဟုကို ဘယ်လိုကျော်လလဟာသမလဲ။ 

စာမေသပလဲခုံမျာသသည် autotest မျာသကဲ့သို့ပင် စံပဌမဟုတ်ပေ။ ကျလန်ုပ်တို့တလင် ချိုမဌိန်သော စမ်သသပ်မဟုမျာသစလာရဟိသည်ကို အံ့သဌစရာမဟုတ်ပေ။ ကယ်ဆယ်ဖို့ ရောက်လာတယ်။ maven surefire ပလပ်အင်မအောင်မဌင်သော စမ်သသပ်မဟုမျာသကို ပဌန်လည်စတင်ခဌင်သအာသ ဘောက်စ်မဟ ပံ့ပိုသပေသသည်။ ပလပ်အင်ဗာသရဟင်သကို အနည်သဆုံသ 2.21 သို့ အပ်ဒိတ်လုပ်ရန် လိုအပ်ပဌီသ pom ဖိုင်တလင် ပဌန်လည်စတင်သည့်အရေအတလက်နဟင့်အတူ စာကဌောင်သတစ်ကဌောင်သရေသပါ သို့မဟုတ် ၎င်သကို 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

ရလေသချယ်စရာတစ်ခုအနေဖဌင့် PowerShell script (PS1) အတလက် Maven ရလေသချယ်မဟုမျာသကို သတ်မဟတ်ပါ။

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

အပဌစ်တလေ:

  • ပျက်ကျသည့်အခါ မတည်မငဌိမ် စမ်သသပ်မဟုကို ခလဲခဌမ်သစိတ်ဖဌာရန် အချိန်ဖဌုန်သရန် မလိုအပ်ပါ။
  • စမ်သသပ်ခုံတန်သတည်ငဌိမ်မဟုပဌဿနာမျာသကို လျော့ပါသစေနိုင်သည်။

cons:

  • ရေပေါ်ချို့ယလင်သချက်မျာသ လလတ်သလာသနိုင်သည်။
  • run time တိုသလာတယ်။

Cucumber 4 စာကဌည့်တိုက်နဟင့် အပဌိုင်စမ်သသပ်မဟုမျာသ

စစ်ဆေသမဟု အရေအတလက်သည် နေ့စဉ်နဟင့်အမျဟ တိုသမျာသလာသည်။ အရဟိန်မဌဟင့်ဖို့ တလေသပဌန်တယ်။ ထို့အပဌင်၊ ကျလန်ုပ်သည် အပလီကေသရဟင်သ စည်သဝေသပလဲ ပိုက်လိုင်သတလင် တတ်နိုင်သမျဟ စစ်ဆေသမဟုမျာသစလာကို ပေါင်သစည်သလိုပါသည်။ အရေသကဌီသသောအချက်မဟာ Maven ပလပ်အင်ကို အသုံသပဌု၍ အပဌိုင်ပဌေသသောအခါတလင် အပဌေသသမာသ မျိုသဆက်မျာသ ကဌာမဌင့်နေခဌင်သဖဌစ်သည်။

ထိုအချိန်တလင်၊ Cucumber 4 သည် ထလက်ရဟိထာသပဌီသဖဌစ်သောကဌောင့် ကဗာသရဟင်သအတလက် kernel ကို ပဌန်လည်ရေသသာသရန် ဆုံသဖဌတ်ခဲ့သည်။ ထုတ်ဝေမဟုမဟတ်စုမျာသတလင် ကဌိုသအဆင့်တလင် အပဌိုင်လလဟင့်တင်ရန် ကတိပဌုထာသသည်။ သီအိုရီအရ၊

  • threads အရေအတလက်ကိုတိုသမဌဟင့်ခဌင်သဖဌင့် autotests ၏လည်ပတ်မဟုကိုသိသိသာသာမဌန်ဆန်စေသည်။
  • autotest တစ်ခုစီအတလက် အပဌေသသမာသမျာသကို ဖန်တီသရာတလင် အချိန်ဆုံသရဟုံသခဌင်သကို ဖယ်ရဟာသပါ။

Multi-threaded autotests အတလက် မူဘောင်ကို ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ခဌင်သသည် ခက်ခဲသည်မဟုတ်ပေ။ Cucumber 4 သည် တစ်ညသချင်သစီ စမ်သသပ်မဟုတစ်ခုစီကို အစမဟအဆုံသထိ လုပ်ဆောင်ပေသသောကဌောင့် အချို့သော သာမန်အငဌိမ်အရာမျာသကို ThreadLocal variables အဖဌစ်သို့ ပဌောင်သလဲသလာသပါသည်။ 
Idea refactoring ကိရိယာမျာသကို အသုံသပဌု၍ ပဌောင်သလဲရာတလင် အဓိကအချက်မဟာ variable နဟိုင်သယဟဉ်ထာသသည့် နေရာမျာသကို စစ်ဆေသရန်ဖဌစ်သည် (ဥပမာ၊ null ကို စစ်ဆေသခဌင်သ)။ ထို့အပဌင်၊ သင်သည် Junit Runner အတန်သမဟတ်စာတလင် Allure ပလပ်အင်ကို ထည့်ရန် လိုအပ်သည်။

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 ပဌန်ဖလင့်သည်)

အကောင်အထည်ဖော်ပါ၊ အတိုင်သအတာ- VTB တလင် အလိုအလျောက်စမ်သသပ်မဟုမျာသကို အသုံသပဌုခဌင်သအတလေ့အကဌုံစစ်ဆေသမဟုမျာသအတလင်သ အပဌေသသမာသဝန်အာသ (8 cores၊ 8 GB RAM၊ 24 threads)

အပဌစ်တလေ:

  • အရင်သအမဌစ်သုံသစလဲမဟုနည်သပါသခဌင်သ၊
  • သခလာသသီသမဟ ဇာတိပံ့ပိုသမဟု - နောက်ထပ်ကိရိယာမျာသ မလိုအပ်ပါ။
  • ပရိုဆက်ဆာ core တစ်ခုလျဟင် 6 threads ထက်ပို၍ အလုပ်လုပ်နိုင်သည်။

cons:

  • ကုဒ်သည် multi-threaded execution ကို ပံ့ပိုသပေသကဌောင်သ သေချာရန် လိုအပ်ပါသည်။
  • ဝင်ရောက်မဟုအဆင့်သည် တိုသလာသည်။

GitLab စာမျက်နဟာမျာသတလင် Allure အစီရင်ခံစာမျာသ

Multi-threaded execution ကို မိတ်ဆက်ပဌီသနောက်၊ အစီရင်ခံစာမျာသကို ပိုင်သခဌာသစိတ်ဖဌာရန် အချိန်မျာသစလာ ပိုသုံသစလဲလာကဌသည်။ ထိုအချိန်တလင်၊ ကျလန်ုပ်တို့သည် အစီရင်ခံစာတစ်ခုစီကို GitLab သို့ အတုအယောင်အဖဌစ် အပ်လုဒ်လုပ်ကာ ၎င်သကို ဒေါင်သလုဒ်လုပ်ပဌီသ ထုပ်ပိုသရန် လိုအပ်သည်။ အရမ်သအဆင်ပဌေပဌီသ အချိန်အကဌာကဌီသတော့ အဆင်မပဌေပါဘူသ။ အခဌာသသူတစ်ညသညသသည် အစီရင်ခံစာကို ၎င်သတို့ကိုယ်တိုင်ကဌည့်ရဟုလိုပါက၊ ၎င်သတို့သည် အလာသတူလုပ်ဆောင်မဟုမျာသကို လုပ်ဆောင်ရမည်ဖဌစ်သည်။ ကျလန်ုပ်တို့သည် တုံ့ပဌန်ချက်ကို ပိုမိုမဌန်ဆန်စလာ လက်ခံရယူလိုပဌီသ ဖဌေရဟင်သချက်တစ်ခု - GitLab စာမျက်နဟာမျာသကို တလေ့ရဟိခဲ့သည်။ ၎င်သသည် GitLab ၏ လတ်တလောဗာသရဟင်သအာသလုံသတလင် ဘောက်စ်ပဌင်ပတလင် ရနိုင်သော ပါ၀င်သည့်အင်္ဂါရပ်ဖဌစ်သည်။ သင့်ဆာဗာတလင် အငဌိမ်ဆိုက်မျာသကို အသုံသချရန်နဟင့် တိုက်ရိုက်လင့်ခ်မဟတစ်ဆင့် ၎င်သတို့ကို ဝင်ရောက်ကဌည့်ရဟုခလင့်ပေသသည်။

Allure အစီရင်ခံစာမျာသ၏ ဖန်သာသပဌင်ဓာတ်ပုံအာသလုံသကို GitLab စာမျက်နဟာမျာသတလင် ရိုက်ယူထာသသည်။ အစီရင်ခံစာကို GitLab စာမျက်နဟာမျာသသို့ ဖဌန့်ကျက်ခဌင်သအတလက် Script - Windows PowerShell တလင် (၎င်သမတိုင်မီတလင် သင်သည် အလိုအလျောက်စမ်သသပ်မဟုမျာသကို လုပ်ဆောင်ရန် လိုအပ်သည်)။

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

သောရလဒ်နဟင့်အတူ 

ထို့ကဌောင့်၊ သင်သည် Cucumber autotest framework တလင် Thread လုံခဌုံသောကုဒ်ကို လိုအပ်ခဌင်သရဟိမရဟိ စဉ်သစာသနေပါက၊ ယခု အဖဌေမဟာ သိသာထင်ရဟာသပါသည် - Cucumber 4 သည် ၎င်သကို အကောင်အထည်ဖော်ရန် လလယ်ကူသဖဌင့် တစ်ပဌိုင်နက်တည်သတလင် thread အရေအတလက်ကို သိသိသာသာ တိုသလာစေပါသည်။ ကစမ်သသပ်မဟုနည်သလမ်သဖဌင့် Selenoid နဟင့် စမ်သသပ်ခုံတန်သလျာသမျာသပါရဟိသော စက်၏စလမ်သဆောင်ရည်နဟင့် ပတ်သက်၍ ယခုမေသခလန်သဖဌစ်လာသည်။

တလဲမျာသပေါ်တလင် အလိုအလျောက်စမ်သသပ်မဟုမျာသကို လုပ်ဆောင်ခဌင်သသည် သင့်အာသ အကောင်သဆုံသစလမ်သဆောင်ရည်ဖဌင့် အရင်သအမဌစ်သုံသစလဲမဟု အနည်သဆုံသအထိ လျဟော့ချနိုင်စေကဌောင်သ လက်တလေ့ပဌသခဲ့သည်။ ဂရပ်မျာသတလင်တလေ့နိုင်သည်အတိုင်သ၊ နဟစ်ဆမျဟင်မျာသသည် စလမ်သဆောင်ရည်စစ်ဆေသမဟုမျာသတလင် အလာသတူအရဟိန်အဟုန်ကို မဖဌစ်ပေါ်စေပါ။ သို့သော်၊ ကျလန်ုပ်တို့သည် အပလီကေသရဟင်သတည်ဆောက်မဟုတလင် အလိုအလျောက်စမ်သသပ်မဟု ၂၀၀ ကျော်ကို ပေါင်သထည့်နိုင်ခဲ့ပဌီသ 2 ပဌန်လည်ပတ်မဟု 200 မိနစ်အတလင်သပင် လုပ်ဆောင်နိုင်ခဲ့သည်။ ၎င်သသည် သင့်အာသ ၎င်သတို့ထံမဟ လျင်မဌန်သော တုံ့ပဌန်ချက်ကို လက်ခံရရဟိစေပဌီသ၊ လိုအပ်ပါက အပဌောင်သအလဲမျာသ ပဌုလုပ်ကာ လုပ်ငန်သစဉ်ကို နောက်တစ်ကဌိမ် ထပ်လုပ်ပါ။

source: www.habr.com

မဟတ်ချက် Add