nGrinder 설치 및 실행 (로컬 환경)
nGrinder를 로컬에서 구동하는 이유는 처음 Docker를 이용해 테스트하려고 했으나 M1 환경을 지원하는 nGrinder Docker 이미지가 존재하지 않고 JDK 설정 등 Docker로 할 경우 호환성 문제가 많아 로컬 환경에 controller와 agent를 다운로드 받아 진행했다. 아래 nGrinder 공식 깃헙에서 controller war 파일을 다운받아 실행한다.
nGrinder Controller 실행
아래 명령어를 입력해서 다운로드받은 .war 파일을 실행한다. {HOME}의 경우 각자 환경의 ${HOME}을 넣어주면 되는데 맥북의 경우는 /Users/thinkingpotate 이런식으로 터미널에서 '~'로 표현되는 경로를 넣어주면 된다. nGrinder controller를 실행했으면 http://localhost:{port}로 접속해 controller console에 접근한다.기본 아이디·비밀번호(admin, admin)를 입력하면 로그인할 수 있다.
java -Djava.io.tmpdir={HOME}/.ngrinder/lib -jar ngrinder-controller-{version}.war -p {port}
nGrinder Agent 실행
위 사진처럼 nGrinder console에 접속 후 어드민 메뉴에서 Download Agent 선택하면 nGrinder agent파일인 ngrinder-agent-{version}-localhost.tar 다운로드 할 수 있다. 이 후 아래 명령어를 이용해 agent를 실행한다.
./run_agent.sh
nGrinder 스크립트 생성 - Groovy
nGrinder console에서 script에 접속해 생성. script 작성이 완료되면 Validate(Health Check)를 필수적으로 해줘야한다. Validate가 정상적으로 동작하지 않으면 테스트 불가. Validate 정상 진행시 아래와 같이 로그를 볼 수 있음. WAS에도 로그가 잘 찍히는지 확인해보자
Groovy 스크립트에서 사용하는 어노테이션과 스크립트 워크플로우에 대한 내용은 아래 블로그를 참고
nGrinder PerformanceTest
Agent: 부하를 발생시키는 대상. Controller에 종속되어 있으며 복수 머신에 설치해 여러대의 Agent 구성 가능
Vuser per agent: Agent별 부하를 발생시키는사용자의 수 지정
script: 테스트를 진행할 script
duration: 테스트를 수행하는 시간. 예를 들어, Vuser가 10명, duration이 10s 이고 결과의 총 테스트 갯수가 약 40,000이라면 Vuser당 초당 400개의 요청이 처리된 것임.
run count: 해당 테스트에서 몇개의 요청을 발생시킬건지 설정(duration과 run count 둘 중 하나만 사용 가능)
Ramp-Up: 테스트를 할때 점진적인 부하를 가하며 테스트할 것인지 설정
TPS(Transaction Per Second): 초당 트랜잭션 처리량
Mean Test Time: 평균 response time