네른

[CI/CD] Gitlab-ci.yml 작성 예제 - JMeter 본문

DevOps

[CI/CD] Gitlab-ci.yml 작성 예제 - JMeter

네른 2022. 4. 28. 19:49

테스트했던 것 중에 가장 마지막이었던 JMeter.

JMeter는 백엔드 테스팅 도구로, API테스트를 진행하거나 부하 테스트를 진행하는 등의 동작을 수행할 수 있음.

사용자는 JMeter 프로그램을 이용하여 테스트케이스를 작성할 수 있고, 이를 jmx 라는 형태의 파일로 추출할 수 있음.

여기서는 이 jmx 파일을 사용해야하기에, 테스트케이스를 별도로 생성해주어야 함


jmeter는 다행스럽게도 공식 도커 이미지를 제공함

  jmeter:
    stage: after_sitespeed
    // jmeter는 제공된 공식 이미지를 사용하고, entrypoint를 초기화하여 사용.
    // 해당 이미지는 docker run 을 이용하여 테스트를 바로 진행할 수 있도록 설계되어있기에 entrypoint를 덮어씌워야 함 
    image:
      name: justb4/jmeter:latest
      entrypoint : [""]
    script:
      - mkdir testresults
      // entrypoint.sh 파일을 이미지 내부에서 실행시켜, 테스트케이스(jmx)에 대한 결과를 출력(jtl)
      - /entrypoint.sh -n -t ./test.jmx -l ./jmeterresult.jtl -e -o ./testresults
    artifacts:
      paths:
        - testresults

여기서 주의해야 할 점은, justb4/jmeter 이미지의 경우 entrypoint가 지정되어있어서 docker run을 수행하는 경우 원하는 결과를 얻을 수 없음.

이에, 기존의 entrypoint를 초기화시키고 별도로 실행시키면 된다!

jmx는 커밋시에 함께 올라가면 되며, 결과는 저 폴더 내의 jtl을 별도로 다운받아 볼 수 있다!

 


추가로 JMeter의 remote 실행방법에 대해 간단히 적어두고자 함.

JMeter를 원격에서 실행하는 경우, 몇 가지 간단한 설정이 필요함

클라이언트와 서버 양 측의 bin/jmeter.properties에 다음과 같이 설정이 필요함.

# 서버의 properties 파일
 ...
 server.rmi.port = xx
 server.rmi.localport = xxx
 ...

위 두 값을 설정해주어야 하며

port의 경우 기본값은 1099임을 유의

 

 # 클라이언트의 properties 파일
 ...
 client.rmi.localport = xxx
 remote_hosts = xxx.xxx.xxx.xxx, yyy.yyy.yyy.yyy
 ...

클라이언트에도 위와 유사한 설정이 필요하며 사용할 remote hosts의 ip를 지정해주어야 함

 

이후, 

jmeter-server -Djava.rmi.server.hostname=서버IP
jmeter -n -t JMX파일.jmx -R 서버의IP -X -Djava.rmi.server.hostname=클라이언트IP

위 두 라인을 각각 서버/클라이언트에서 실행하면 된다

Comments