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.
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.
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>
Ko te tauira o te purongo whakapouri
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
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>
He tauira o te purongo Allure (ko te whakamatautau tino koretake, e 4 nga mahi tuarua)
Ka 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
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>
He tauira o te purongo Allure (ko te whakamatautau tino koretake, e 5 nga mahi tuarua)
Ka 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