2017-10-12 20 views
1

maven 플러그인을 사용하여 jmeter 기능 테스트 실행에 대한 코드 커버리지 보고서를 추출하려고합니다. jacoco 플러그인을 사용하여 코드 커버리지 보고서를 생성하도록 설정하려고했지만 유니 클래스만으로 구성 할 수있는 것으로 보이며 통합 테스트는 자바 클래스 형식으로되어 있습니다. * IT.java 또는 * Test.java. 하지만 제 경우에는 jmeter 플러그인을 사용하여 Jmeter .jmx 파일을 사용하여 기능 테스트를 실행하고 있습니다. 기능 테스트를위한 코드 커버리지를 얻는 것이 거의 없다는 것을 알고 있지만 비슷한 일을하는 사람이라면 세부 정보를 공유하십시오. 아래는 Jmeter 테스트 실행을 위해 사용하고있는 플러그인입니다.jmeter 기능 테스트 코드 적용

<plugin> 
       <groupId>com.lazerycode.jmeter</groupId> 
        <artifactId>jmeter-maven-plugin</artifactId> 
        <version>2.1.0</version> 
        <executions> 
        <execution> 
           <id>jmeter-tests</id> 
           <phase>verify</phase> 
           <goals> 
           <goal>jmeter</goal> 
           </goals> 
         </execution> 
        </executions> 
        <configuration> 
        <ignoreResultFailures>true</ignoreResultFailures> 
        <resultsDirectory>${jmeter-testresults}</resultsDirectory> 
         <propertiesUser> 
           <hostname>${jmeter-testhost}</hostname> 
           <hostport>${jmeter-testport}</hostport> 
           <testresults>${jmeter-testresults}</testresults> 
        </propertiesUser> 
         <propertiesJMeter> 
           <jmeter.save.saveservice.url>true</jmeter.save.saveservice.url> 
           <jmeter.save.saveservice.samplerData>true</jmeter.save.saveservice.samplerData> 
         </propertiesJMeter> 
       </configuration> 
      </plugin> 
+0

도 이례적인 일이다.JMeter는 세계에서 가장 편리한 툴이 아닙니다. 최소한 성능 테스트를 위해서는 선택의 여지가 없지만 기능 테스트에는 왜 사용해야합니까? 특히 코드 커버리지가 목표 인 경우. 왜 정상적인 테스트 프레임 워크 (junit, testng 등)를 사용하지 않고 단순히 프레임 워크에 기능 테스트를 작성합니까? 코드 적용 범위는 여기에서 매우 쉽습니다 ... –

+0

여기 Jmeter 테스트는 마이크로 서비스를위한 API 테스트로 더 많이 사용되고 있습니다. 따라서 jmeter 테스트 실행 중에 테스트중인 API에 대한 코드 커버리지 보고서가 필요합니다. 현재로서는 API가 없다는보고와 API가 적용되지 않았다는보고가 있습니다. 누락 된 사례에 대한 심도있는 정보를 얻기 위해 API가 실행되는 동안 코드 기반을 적용하려면 결과를 확장해야합니다. – Sikandar

+0

JMeter는 소스 코드에 대한 가시성이 없기 때문에 JMeter 측에서는 어떻게 처리 할 수 ​​있는지 알지 못합니다. 유일한 방법은 JMeter가 실행되는 동안 마이크로 서비스 자체에서 프로파일 링 도구를 사용하는 것입니다. –

답변

0

git bash 명령 줄을 사용하여 코드 적용 범위를 확보 할 수 있습니다. 아래 단계가 있습니다.

  • jacoco 프로젝트를 http://www.eclemma.org/jacoco/에서 다운로드하고 로컬에서 추출하십시오. C :/jacoco. lib 폴더에 jacocoagent.jar 및 jacococli.jar이 포함됩니다.

  • Open Git bash (간단한 명령 행을 사용할 수도 있음).

    수출 MAVEN_OPTS의 = "- javaagent : C : \ jacoco \ lib 디렉토리 \ jacocoagent.jar = 출력 = tcpserver는"
    MVN 간부 :

    자바 -Dexec.mainClass = "메인 클래스에 전체 패키지 이름" 이를 읽고 실행 흐름을 포착하고 tcpserver는에 taht를 저장할 수 있도록

위의 명령은 서버 시작시 받는다는 JVM에 jacocoagent를 주입한다. tcpserver를 출력으로 사용하고 있습니다. 파일 모드를 사용하여 jvm을 정상적으로 종료해야 실행 데이터를 얻을 수 있습니다. 서버가 시작 되면,

가 MVN

는 명령을 내 치어 XML의 JMeter를 실행 플러그인 intgrated되어 있는지 확인 확인 실행합니다. 그래서 verify 명령은 Jmeter 테스트 실행을 트리거합니다. 이제 실행 데이터가 tcp 서버에 있으므로 보고서를 얻으려면 jacoco 파일에 덤프해야합니다. jacoco.exec 파일

자바의 실행 데이터를 덤프 명령 아래 실행 -jar C : "당신의 로컬 경로/jacoco.exec"

--destfile /jacoco/lib/jacococli.jar 덤프

이제는 언급 한 경로에서 jacoco.exec 파일을 생성해야합니다. 그러나이 데이터는 사람이 읽을 수있는 형식이 아닙니다. 읽을 수있는 HTML 형식으로 보고서를 생성하려면 아래 명령을 실행하십시오. /jacoco/lib/jacococli.jar 보고서 "jacoco 파일/jacoco.exec 경로는"매장 보고서 \의 jacoco에 --html "경로"클래스 파일을 프로젝트 경로 "--classfiles : -jar C

자바 -report "--name myReport --sourcefiles"소스 파일 경로 "

이제 지정된 경로에서 생성 된 보고서를 html 형식으로 볼 수 있습니다. 기능 테스트를 위해 JMeter를를 사용

Reference