์ฐ๋ฆฌ ๋ถ์๋ ์๋ก์ด ๋ฒ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋ก๋์ ํ๊ฒฝ์ ์ถ์ํ๊ธฐ ์ํ ์์ ์๋ ํ์ดํ๋ผ์ธ์ ๋ง๋ญ๋๋ค. ๋ฌผ๋ก ์ด๋ฅผ ์ํด์๋ ์๋ํ๋ ๊ธฐ๋ฅ ํ ์คํธ๊ฐ ํ์ํฉ๋๋ค. ์๋ ์ปท์๋ ๋ก์ปฌ ๋จธ์ ์ ๋จ์ผ ์ค๋ ๋ ํ ์คํธ๋ถํฐ ์์ํ์ฌ GitLab ํ์ด์ง์ Allure ๋ณด๊ณ ์๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋ ํ์ดํ๋ผ์ธ์ Selenoid์์ ์คํ๋๋ ๋ค์ค ์ค๋ ๋ ์๋ ํ ์คํธ๋ฅผ ์งํํ๊ณ ๊ฒฐ๊ตญ ๋ฉ์ง ์๋ํ ๋๊ตฌ๋ฅผ ์ป์ ๋ฐฉ๋ฒ์ ๋ํ ์ด์ผ๊ธฐ๊ฐ ์์ต๋๋ค. ๋ฏธ๋์ ์ฌ๋๋ค์ ํ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ์ด๋์ ์์ํ๋์?
์๋ ํ ์คํธ๋ฅผ ๊ตฌํํ๊ณ ์ด๋ฅผ ํ์ดํ๋ผ์ธ์ ํตํฉํ๋ ค๋ฉด ํ์์ ๋ฐ๋ผ ์ ์ฐํ๊ฒ ๋ณ๊ฒฝํ ์ ์๋ ์๋ํ ํ๋ ์์ํฌ๊ฐ ํ์ํ์ต๋๋ค. ์ด์์ ์ผ๋ก๋ ์๋ ํ ์คํธ๋ฅผ ํ์ดํ๋ผ์ธ์ ๋ด์ฅํ๋๋ก ์กฐ์ ๋ ์๋ ํ ์คํธ ์์ง์ ๋ํ ๋จ์ผ ํ์ค์ ์ป๊ณ ์ถ์์ต๋๋ค. ๊ตฌํ์ ์ํด ์ฐ๋ฆฌ๋ ๋ค์ ๊ธฐ์ ์ ์ ํํ์ต๋๋ค.
- ์๋ฐ,
- ๋ฉ์ด๋ธ,
- ์ ๋ ,
- ์ค์ด+4์ XNUMX์ผ,
- ๋งค๋ ฅ,
- ๊น๋ฉ.
์ ์ด ํน๋ณํ ์ธํธ์ธ๊ฐ์? Java๋ ์๋ํ ํ
์คํธ์ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์ธ์ด ์ค ํ๋์ด๋ฉฐ ๋ชจ๋ ํ์์ด Java๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์
๋ ๋์ ํ์คํ ํด๊ฒฐ์ฑ
์
๋๋ค. ๋ฌด์๋ณด๋ค๋ ์ค์ด๋ ์๋ ํ
์คํธ์ ์ฐธ์ฌํ๋ ๋ถ์์ ์๋ํ๋ ํ
์คํธ ๊ฒฐ๊ณผ์ ๋ํ ์ ๋ขฐ๋๋ฅผ ๋์ด๊ธฐ๋ก ๋์ด ์์์ต๋๋ค.
๋จ์ผ ์ค๋ ๋ ํ ์คํธ
๋ฐํด๋ฅผ ์ฌ๋ฐ๋ช ํ์ง ์๊ธฐ ์ํด ์ฐ๋ฆฌ๋ GitHub์ ๋ค์ํ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ๊ฐ๋ฐํ ๋ด์ฉ์ ํ๋ ์์ํฌ์ ๊ธฐ์ด๋ก ์ผ์ ์ค์ค๋ก ์กฐ์ ํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์๋ ํ ์คํธ ํ๋ ์์ํฌ์ ํต์ฌ์ด ํฌํจ๋ ๋ฉ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ฉ ์ ์ฅ์์ ์ฝ์ด์ ์๋ ํ ์คํธ๋ฅผ ๊ตฌํํ๋ Gold ์์ ๊ฐ ํฌํจ๋ ์ ์ฅ์๋ฅผ ๋ง๋ค์์ต๋๋ค. ๊ฐ ํ์ ๊ณจ๋ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์์ ํ ์คํธ๋ฅผ ๊ฐ๋ฐํ๊ณ ์ด๋ฅผ ํ๋ก์ ํธ์ ์ ์ฉํด์ผ ํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ด๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑํ GitLab-CI ์ํ์ ๋ฐฐํฌํ์ต๋๋ค.
- ๊ฐ ํ๋ก์ ํธ์ ๋ํ ๋ชจ๋ ์๋ฉด ์๋ ํ ์คํธ๋ฅผ ๋งค์ผ ์คํํฉ๋๋ค.
- ๋น๋ ํ์ดํ๋ผ์ธ์์ ์์๋ฉ๋๋ค.
์ฒ์์๋ ํ ์คํธ๊ฐ ๊ฑฐ์ ์์๊ณ ํ๋์ ์คํธ๋ฆผ์ผ๋ก ์ํ๋์์ต๋๋ค. Windows ์คํ๊ธฐ GitLab์์ ์คํ๋๋ ๋จ์ผ ์ค๋ ๋๋ ์ฐ๋ฆฌ์๊ฒ ๋งค์ฐ ์ ํฉํ์ต๋๋ค. ํ ์คํธ์์๋ ํ ์คํธ ๋ฒค์น๋ฅผ ๋งค์ฐ ๊ฐ๋ณ๊ฒ ๋ก๋ํ๊ณ ๋ฆฌ์์ค๋ฅผ ๊ฑฐ์ ์ฌ์ฉํ์ง ์์์ต๋๋ค.
์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์๋ ํ ์คํธ ์๊ฐ ์ ์ ๋ ๋ง์์ก๊ณ ์ ์ฒด ์คํ์ ์ฝ XNUMX์๊ฐ์ด ๊ฑธ๋ฆฌ๊ธฐ ์์ํ์ ๋ ์ฐ๋ฆฌ๋ ๋ณ๋ ฌ ์คํ์ ๊ณ ๋ คํ์ต๋๋ค. ๋ค๋ฅธ ๋ฌธ์ ๋ ๋ํ๋ฌ์ต๋๋ค.
- ํ ์คํธ๊ฐ ์์ ์ ์ธ์ง ํ์ธํ ์ ์์์ต๋๋ค.
- ๋ก์ปฌ ์ปดํจํฐ์์ ์ฌ๋ฌ ๋ฒ ์ฐ์์ผ๋ก ์คํ๋ ํ ์คํธ๊ฐ CI์์ ์ถฉ๋ํ๋ ๊ฒฝ์ฐ๊ฐ ์์์ต๋๋ค.
์๋ ํ ์คํธ ์ค์ ์ ์:
<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>
์ผ๋ฃจ์ด ๋ฆฌํฌํธ ์์
ํ
์คํธ ์ค ๋ฌ๋ ๋ก๋(8๊ฐ ์ฝ์ด, 8GB RAM, 1๊ฐ ์ค๋ ๋)
๋จ์ผ ์ค๋ ๋ ํ
์คํธ์ ์ฅ์ :
- ์ค์ ๋ฐ ์คํ์ด ์ฝ์ต๋๋ค.
- CI ์ถ์๋ ์ฌ์ค์ ๋ก์ปฌ ์ถ์์ ๋ค๋ฅด์ง ์์ต๋๋ค.
- ํ ์คํธ๋ ์๋ก ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค.
- ๋ฌ๋ ๋ฆฌ์์ค์ ๋ํ ์ต์ ์๊ตฌ ์ฌํญ.
๋จ์ผ ์ค๋ ๋ ํ ์คํธ์ ๋จ์ :
- ์๋ฃํ๋ ๋ฐ ์๊ฐ์ด ๋งค์ฐ ์ค๋ ๊ฑธ๋ฆฝ๋๋ค.
- ํ ์คํธ์ ์ฅ๊ธฐ๊ฐ ์์ ํ;
- ๋ฌ๋ ๋ฆฌ์์ค์ ๋นํจ์จ์ ์ฌ์ฉ, ๊ทน๋๋ก ๋ฎ์ ํ์ฉ๋.
JVM ํฌํฌ ํ ์คํธ
๊ธฐ๋ณธ ํ๋ ์์ํฌ๋ฅผ ๊ตฌํํ ๋ ์ค๋ ๋๋ก๋ถํฐ ์์ ํ ์ฝ๋๋ฅผ ์ฒ๋ฆฌํ์ง ์์๊ธฐ ๋๋ฌธ์ ๋ณ๋ ฌ๋ก ์คํํ๋ ๊ฐ์ฅ ํ์คํ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Selenoid ์๋ฒ๋ 32๊ฐ ์ฝ์ด์ 24GB RAM์ ๊ฐ์ถ ์์คํ
์์ ์์๋์์ต๋๋ค. ์ ํ์ 48๊ฐ ๋ธ๋ผ์ฐ์ (์ฝ์ด๋น 1,5๊ฐ ์ค๋ ๋, ์ฝ 400MB RAM)๋ก ์ค์ ๋์์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ ํ
์คํธ ์๊ฐ์ด 40์๊ฐ์์ 20๋ถ์ผ๋ก ๋จ์ถ๋๋ค. ์คํ ์๋๋ฅผ ๋์ด๋ฉด ์์ ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์ด์ ์์ ์ ์ผ๋ก ์คํ๋๋ค๋ ํ์ ์ด ๋ค ๋๊น์ง ์๋ก์ด ์๋ ํ
์คํธ๋ฅผ 30~XNUMXํ ๋น ๋ฅด๊ฒ ์คํํ ์ ์์ต๋๋ค.
์๋ฃจ์
์ ์ฒซ ๋ฒ์งธ ๋จ์ ์ ์ ์ ์์ ๋ณ๋ ฌ ์ค๋ ๋๋ก ์คํ๊ธฐ ๋ฆฌ์์ค์ ํ์ฉ๋๊ฐ ๋๋ค๋ ๊ฒ์
๋๋ค. ์ฆ, 4๊ฐ ์ฝ์ด์ 8GB RAM์์ ํ
์คํธ๋ 6๊ฐ ์ดํ์ ์ค๋ ๋์์ ์์ ์ ์ผ๋ก ์คํ๋์์ต๋๋ค. ๋ ๋ฒ์งธ ๋จ์ : ํ๋ฌ๊ทธ์ธ์ ์คํ๋๋ ์์ ๊ด๊ณ์์ด ๊ฐ ์๋๋ฆฌ์ค์ ๋ํด ์คํ๊ธฐ ํด๋์ค๋ฅผ ์์ฑํฉ๋๋ค.
์ค์! ํ๊ทธ๊ฐ ํฌํจ๋ ๋ณ์๋ฅผ ์ ๋ฌํ์ง ๋ง์ธ์. ์ธ์๋ผ์ธ, ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
<argLine>-Dcucumber.options="--tags ${TAGS} --plugin io.qameta.allure.cucumber2jvm.AllureCucumber2Jvm --plugin pretty"</argLine>
โฆ
Mvn โDTAGS="@smoke"
์ด๋ฐ ๋ฐฉ์์ผ๋ก ํ๊ทธ๋ฅผ ์ ๋ฌํ๋ฉด ํ๋ฌ๊ทธ์ธ์ ๋ชจ๋ ํ ์คํธ์ ๋ํ ์คํ๊ธฐ๋ฅผ ์์ฑํฉ๋๋ค. ์ฆ, ๋ชจ๋ ํ ์คํธ๋ฅผ ์คํํ๋ ค๊ณ ์๋ํ๊ณ ์คํ ํ ์ฆ์ ๊ฑด๋๋ฐ๊ณ ๋ง์ JVM ํฌํฌ๋ฅผ ์์ฑํฉ๋๋ค.
ํ๊ทธ๊ฐ ์๋ ๋ณ์๋ฅผ ๋์ง๋ ๊ฒ์ด ๋ง์ต๋๋ค. ํ๊ทธ ํ๋ฌ๊ทธ์ธ ์ค์ ์์ ์๋ ์๋ฅผ ์ฐธ์กฐํ์ธ์. ํ ์คํธํ ๋ค๋ฅธ ๋ฐฉ๋ฒ์์๋ Allure ํ๋ฌ๊ทธ์ธ์ ์ฐ๊ฒฐํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์๋ชป๋ ์ค์ ์ผ๋ก 6๋ฒ์ ์งง์ ํ ์คํธ ์คํ ์๊ฐ์ ์:
[INFO] Total time: 03:17 min
ํ๊ทธ๋ฅผ ์ง์ ์ ์กํ๋ ๊ฒฝ์ฐ ํ ์คํธ ์คํ ์๊ฐ์ ์ mvn... โDcucumber.options:
[INFO] Total time: 44.467 s
์๋ ํ ์คํธ ์ค์ ์ ์:
<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>
Allure ๋ณด๊ณ ์์ ์(๊ฐ์ฅ ๋ถ์์ ํ ํ
์คํธ, 4ํ ์ฌ์คํ)
ํ
์คํธ ์ค ๋ฌ๋ ๋ก๋(8๊ฐ ์ฝ์ด, 8GB RAM, 12๊ฐ ์ค๋ ๋)
์ฅ์ :
- ์ฌ์ด ์ค์ - ํ๋ฌ๊ทธ์ธ๋ง ์ถ๊ฐํ๋ฉด ๋ฉ๋๋ค.
- ๋ค์์ ํ ์คํธ๋ฅผ ๋์์ ์ํํ๋ ๋ฅ๋ ฅ;
- 1๋จ๊ณ ๋๋ถ์ ํ ์คํธ ์์ ํ๊ฐ ๊ฐ์ํ๋ฉ๋๋ค.
๋จ์ :
- ์ฌ๋ฌ OS/์ปจํ ์ด๋๊ฐ ํ์ํฉ๋๋ค.
- ๊ฐ ํฌํฌ์ ๋ํ ๋์ ๋ฆฌ์์ค ์๋น;
- ํ๋ฌ๊ทธ์ธ์ด ์ค๋๋์ด ๋ ์ด์ ์ง์๋์ง ์์ต๋๋ค.
๋ถ์์ ์ฑ์ ๊ทน๋ณตํ๋ ๋ฐฉ๋ฒ
ํ
์คํธ ๋ฒค์น๋ ์๋ ํ
์คํธ ์์ฒด์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ด์์ ์ด์ง ์์ต๋๋ค. ๋ถ์์ ํ ํ
์คํธ๊ฐ ๋ง์ด ์๋ค๋ ๊ฒ์ ๋๋ผ์ด ์ผ์ด ์๋๋๋ค. ๊ตฌ์กฐํ๋ฌ ์์ด์
์๋ ํ ์คํธ ์ค์ ์ ์:
<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 ์คํฌ๋ฆฝํธ(PS1)์ ๋ํ Maven ์ต์
์ ์ค์ ํฉ๋๋ค.
Set-Item Env:MAVEN_OPTS "-Dfile.encoding=UTF-8 -Dsurefire.rerunFailingTestsCount=2"
์ฅ์ :
- ์ถฉ๋์ด ๋ฐ์ํ์ ๋ ๋ถ์์ ํ ํ ์คํธ๋ฅผ ๋ถ์ํ๋ ๋ฐ ์๊ฐ์ ๋ญ๋นํ ํ์๊ฐ ์์ต๋๋ค.
- ํ ์คํธ ๋ฒค์น ์์ ์ฑ ๋ฌธ์ ๋ฅผ ์ํํ ์ ์์ต๋๋ค.
๋จ์ :
- ๋ถ๋ ๊ฒฐํจ์ ๋์น ์ ์์ต๋๋ค.
- ์คํ ์๊ฐ์ด ๋์ด๋ฉ๋๋ค.
Cucumber 4 ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๋ณ๋ ฌ ํ ์คํธ
ํ ์คํธ ํ์๋ ๋งค์ผ ์ฆ๊ฐํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์คํ ์๋๋ฅผ ๋์ด๋ ๊ฒ์ ๋ํด ๋ค์ ์๊ฐํ์ต๋๋ค. ๋ํ ๊ฐ๋ฅํ ํ ๋ง์ ํ ์คํธ๋ฅผ ์ ํ๋ฆฌ์ผ์ด์ ์ด์ ๋ธ๋ฆฌ ํ์ดํ๋ผ์ธ์ ํตํฉํ๊ณ ์ถ์์ต๋๋ค. ์ค์ํ ์์ธ์ Maven ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์ฌ ๋ณ๋ ฌ๋ก ์คํํ ๋ ๋ฌ๋ ์์ฑ์ ๋๋ฌด ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค๋ ๊ฒ์ ๋๋ค.
๋น์ Cucumber 4๊ฐ ์ด๋ฏธ ์ถ์๋์๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ์ด ๋ฒ์ ์ ๋ง๊ฒ ์ปค๋์ ๋ค์ ์์ฑํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ๋ฆด๋ฆฌ์ค ๋ ธํธ์์ ์ฐ๋ฆฌ๋ ์ค๋ ๋ ์์ค์์ ๋ณ๋ ฌ ์คํ์ ์ฝ์ํ์ต๋๋ค. ์ด๋ก ์ ์ผ๋ก๋ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
- ์ค๋ ๋ ์๋ฅผ ๋๋ ค ์๋ ํ ์คํธ ์คํ ์๋๋ฅผ ํฌ๊ฒ ๋์ ๋๋ค.
- ๊ฐ ์๋ ํ ์คํธ์ ๋ํ ๋ฌ๋ ์์ฑ์ ๋ฐ๋ฅธ ์๊ฐ ์์ค์ ์ ๊ฑฐํฉ๋๋ค.
๋ฉํฐ ์ค๋ ๋ ์๋ ํ
์คํธ๋ฅผ ์ํ ํ๋ ์์ํฌ๋ฅผ ์ต์ ํํ๋ ๊ฒ์ ๊ทธ๋ฆฌ ์ด๋ ต์ง ์์ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. Cucumber 4๋ ์ฒ์๋ถํฐ ๋๊น์ง ์ ์ฉ ์ค๋ ๋์์ ๊ฐ ๊ฐ๋ณ ํ
์คํธ๋ฅผ ์คํํ๋ฏ๋ก ์ผ๋ถ ์ผ๋ฐ์ ์ธ ์ ์ ํญ๋ชฉ์ ๋จ์ํ ThreadLocal ๋ณ์๋ก ๋ณํ๋์์ต๋๋ค.
Idea ๋ฆฌํฉํ ๋ง ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ณํํ ๋ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๋ณ์๊ฐ ๋น๊ต๋ ์์น๋ฅผ ํ์ธํ๋ ๊ฒ์
๋๋ค(์: null ํ์ธ). ๋ํ Junit Runner ํด๋์ค ์ฃผ์์ Allure ํ๋ฌ๊ทธ์ธ์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
์๋ ํ ์คํธ ์ค์ ์ ์:
<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>
Allure ๋ณด๊ณ ์์ ์(๊ฐ์ฅ ๋ถ์์ ํ ํ ์คํธ, 5ํ ์ฌ์คํ)
ํ ์คํธ ์ค ๋ฌ๋ ๋ก๋(8๊ฐ ์ฝ์ด, 8GB RAM, 24๊ฐ ์ค๋ ๋)
์ฅ์ :
- ๋ฎ์ ์์ ์๋น;
- Cucumber์ ๊ธฐ๋ณธ ์ง์ - ์ถ๊ฐ ๋๊ตฌ๊ฐ ํ์ํ์ง ์์ต๋๋ค.
- ํ๋ก์ธ์ ์ฝ์ด๋น 6๊ฐ ์ด์์ ์ค๋ ๋๋ฅผ ์คํํ ์ ์์ต๋๋ค.
๋จ์ :
- ์ฝ๋๊ฐ ๋ค์ค ์ค๋ ๋ ์คํ์ ์ง์ํ๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
- ์ง์ ๋ฌธํฑ์ด ๋์์ง๋๋ค.
GitLab ํ์ด์ง์ Allure ๋ณด๊ณ ์
๋ฉํฐ์ค๋ ๋ ์คํ์ ๋์ ํ ํ ๋ณด๊ณ ์ ๋ถ์์ ํจ์ฌ ๋ ๋ง์ ์๊ฐ์ ํ ์ ํ๊ธฐ ์์ํ์ต๋๋ค. ๋น์ ์ฐ๋ฆฌ๋ ๊ฐ ๋ณด๊ณ ์๋ฅผ GitLab์ ์ํฐํฉํธ๋ก ์ ๋ก๋ํ ๋ค์ ๋ค์ด๋ก๋ํ๊ณ ์์ถ์ ํ์ด์ผ ํ์ต๋๋ค. ๋ณ๋ก ํธ๋ฆฌํ์ง๋ ์๊ณ ์๊ฐ๋ ์ค๋ ๊ฑธ๋ฆฝ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ์ฌ๋์ด ์ง์ ๋ณด๊ณ ์๋ฅผ ๋ณด๋ ค๋ฉด ๋์ผํ ์์ ์ ์ํํด์ผ ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ํผ๋๋ฐฑ์ ๋ ๋นจ๋ฆฌ ๋ฐ๊ณ ์ถ์๊ณ , GitLab ํ์ด์ง๋ผ๋ ํด๊ฒฐ์ฑ ์ ์ฐพ์์ต๋๋ค. ์ด๋ GitLab์ ๋ชจ๋ ์ต์ ๋ฒ์ ์์ ์ฆ์ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ณธ ์ ๊ณต ๊ธฐ๋ฅ์ ๋๋ค. ์๋ฒ์ ์ ์ ์ฌ์ดํธ๋ฅผ ๋ฐฐํฌํ๊ณ ์ง์ ๋งํฌ๋ฅผ ํตํด ์ก์ธ์คํ ์ ์์ต๋๋ค.
Allure ๋ณด๊ณ ์์ ๋ชจ๋ ์คํฌ๋ฆฐ์ท์ GitLab ํ์ด์ง์์ ์ดฌ์๋์์ต๋๋ค. ๋ณด๊ณ ์๋ฅผ GitLab ํ์ด์ง์ ๋ฐฐํฌํ๊ธฐ ์ํ ์คํฌ๋ฆฝํธ - 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 ์๋ ํ ์คํธ ํ๋ ์์ํฌ์ ์ค๋ ๋ ์์ ์ฝ๋๊ฐ ํ์ํ์ง ์ฌ๋ถ๋ฅผ ์๊ฐํ๊ณ ์์๋ค๋ฉด ์ด์ ๋ต์ ๋ถ๋ช ํฉ๋๋ค. Cucumber 4๋ฅผ ์ฌ์ฉํ๋ฉด ๊ตฌํํ๊ธฐ๊ฐ ์ฌ์ ๋์์ ์คํ๋๋ ์ค๋ ๋ ์๊ฐ ํฌ๊ฒ ๋์ด๋ฉ๋๋ค. ์ด ํ ์คํธ ์คํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ์ด์ ์ ๋ ๋ ธ์ด๋์ ํ ์คํธ ๋ฒค์น๋ฅผ ๊ฐ์ถ ๊ธฐ๊ณ์ ์ฑ๋ฅ์ ๋ํ ์ง๋ฌธ์ด ์๊น๋๋ค.
์ค์ต์ ๋ฐ๋ฅด๋ฉด ์ค๋ ๋์์ ์๋ ํ
์คํธ๋ฅผ ์คํํ๋ฉด ์ต์์ ์ฑ๋ฅ์ผ๋ก ๋ฆฌ์์ค ์๋น๋ฅผ ์ต์ํ์ผ๋ก ์ค์ผ ์ ์์ต๋๋ค. ๊ทธ๋ํ์์ ๋ณผ ์ ์๋ฏ์ด ์ค๋ ๋๋ฅผ ๋ ๋ฐฐ๋ก ๋๋ ค๋ ์ฑ๋ฅ ํ
์คํธ์์๋ ์ ์ฌํ ๊ฐ์์ด ๋ฐ์ํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ์ ํ๋ฆฌ์ผ์ด์
๋น๋์ 2๊ฐ ์ด์์ ์๋ํ๋ ํ
์คํธ๋ฅผ ์ถ๊ฐํ ์ ์์์ผ๋ฉฐ 200๋ฒ์ ์ฌ์คํ์๋ ์ฝ 5๋ถ ๋ง์ ์คํ๋์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋น ๋ฅธ ํผ๋๋ฐฑ์ ๋ฐ์ ์ ์์ผ๋ฉฐ, ํ์ํ ๊ฒฝ์ฐ ๋ณ๊ฒฝํ๊ณ ์ ์ฐจ๋ฅผ ๋ค์ ๋ฐ๋ณตํ ์ ์์ต๋๋ค.
์ถ์ฒ : habr.com