Jmeter
환경
- windows 10
download
- Apache JMeter - Download Apache JMeter
- java 8+ 이 필요
run in gui mode
<jmeter-home>/bin/jmeter.bat
를 실행하면 된다.
GUI mode 는 script 만들때 사용, load test 를 할 때는 CLI 모드를 사용 [ref. 1]
setenv.bat
를 <jmeter-home>/bin
에 존재하면 setenv.bat
를 실행해 준다. 다음처럼 setenv.bat
를 생성했다. 이외에도 필요한 환경변수는 setenv.bat
에 넣으면 된다.
rem setenv.bat
set JAVA_HOME=d:\a\apps\java\openjdk-jdk-15.0.1
set PATH=%PATH%;%JAVA_HOME%\bin
rem jmeter 실행시에 쓰이는 변수를 override 할 수 있다.
set JVM_ARGS=-Xms1024m -Xmx1024m -Dpropname=value
test 생성
- ref. 2 의 Thread Group 참고
- ’Test Plan’에서 원하는 element 를 추가할 수 있는데, ’template’은 이 element 를 어느정도 set 해놓은 상황이다.
Test Plan Element 들
JMeter Test Plan 은 test element 들로 구성된다.
적어도 하나의 Thread Group 으로 구성된다.
각 Thread Group 에서, 하나 이상의 다른 element 들의 조합을 놓을 것이다.(Sampler, Logic Controller, Configuration Element, Listener, and Timer)
Pre-processor element --> Sampler --> Post-Processor element + Assertion element
순서로 실행된다.
Thread Group
- sample error 가 발생한 후 thread 를 stop 할지, test 를 stop 할지, 계속진행할지에 대한 판단 가능
- thread 개수 : user수, 즉 연결수를 simulate 하는 것으로 보면 된다.
- 확장 시간(ramp-up time) : JMeter 가 모든 thread들을 running 하게 만들기 위해 최소 얼마나 시간이 걸리게 할 것인지. 이 값이 크면 천천히 전체 thread 개수를 running 을 하는 것이 천천히 이뤄진다?
- Loop count : 테스트를 실행하는 회수
- 스케쥴러 설정 : test 를 실행하는 시간, 끝나는 시간을 설정할 수 있다.
Contorllers
다음 2가지가 있다.
- Samplers
- Logic Controllers
Samplers
- sample 을 만드는 녀석이라고 보면 된다.
- 특정 type 의 request 를 서버에게 보내게 해준다.
- page 를 위한 user request 를 시뮬레이한다. 예를 들어 HTTP service 의 POST, GET, DELETE 등을 수행할 때는 HTTP Request sampler 를 추가할 수 있다.
- HTTP, FTP, JDBC, Java, SOAP/XML, RPC request 들에 대한 sampler 가 있다.
Logic Controllers
request 를 반복시키거나, 특정 조건에서 돌게 하거나 등의 처리를 할 수 있다.
- Logic Controllers는 Thread 에서 Samplers 의 처리 순서를 제어할 수 있게 해준다.
- Logic Controllers는 child elements 에서 오는 request 의 순서를 변경할 수 있다.
- controller 들
- Simple Controller
- Loop Controller
- Once Only Controller
- Interleave Controller
- Random Controller
- Random Order Controller
- Throughput Controller
- Runtime Controller
- If Controller
- While Controller
- Switch Controller
- ForEach Controller
- Module Controller
- Include Controller
- Transaction Controller
- Recording Controller
Test Framgments
- Test Fragments 는 Module Contorller 또는 Include_Controller 에 의해 referenced 되지 않으면 수행되지 않는다라는 점에서 Thread Group 과는 다르다
- 이 element 는 Test Plans 내에서 오직 code 재사용을 위해 쓰인다
Listeners
- Listener들은 Sampler들의 결과를 보여준다. tables , 그래프, 트리, log file 의 간단한 test 등의 형태로.
- JMeter의 Sampler component 가 수행될때, JMeter 에 의해 모아진 test case에 대한 데이터에 대한 접근 비쥬얼적인 접근을 제공한다.
- test 의 어느곳에나 추가될 수 있다.
- 그들의 level 이하의 elemnt 들에게서 나오는 data만을 모은다.
- JMeter 가 제공하는 모든 Listener들
- Sample Result Save Configuration
- Graph Full Results
- Graph Results
- Spline Visualizer
- Assertion Results
- View Results Tree
- Aggregate Report
- View Results in Table
- Simple Data Writer
- Monitor Results
- Distribution Graph (alpha)
- Aggregate Graph
- Mailer Visualizer
- BeanShell Listener
- Summary Report
그외
- Timers
- Assertions
- Configuration Elements : Sampler 에서 사용되는 변수를 만들게 해준다.
- Pre-processor Elements
- Post-processor Elements
- Execution Order of Test Elements
Best Practices
JMeter는 특히 분산 환경에서 실행되는 경우 몇 가지 제한이 있다. 이 가이드는 실제적이고 연속적인 부하(load)를 생성하는 데 도움이 된다.
- 스레드 수가 많을 경우 JMeter를 여러개 실행해서 사용
- Scoping Rules 를 체크하고 그에 따라 design
- 모든 elements에 항상 naming convetion을 사용
- 스크립트를 실행하기 전에 기본 브라우저의 연결 설정(Connectivity Settings)을 확인
- Listeners를 적절하게 추가.
- 다음은 리소스 요구사항을 줄이기 위한 방법
- non-GUI 모드(
jmeter -n -t test.jmx -l test.jtl
) 사용 - Listener를 최대한 적게 사용. 위와 같이 -l 플래그를 사용하는 경우 Listener를 모두 삭제하거나 비활성화할 수 있다.
- “View Result Tree” Listener는 메모리를 많이 소모한다. 콘솔이 중지되거나 JMeter의 메모리가 부족해질 수 있으므로 사용하지 않도록 설정한다. 그러나 “Errors”만 선택한 상태에서 “View Result Tree” Listener를 사용하는 것은 괜찮다.
- 유사한 Sampler를 많이 사용하는 대신 loop에서 same sampler와 변수(CSV 데이터 세트)를 사용하여 sample을 다양하게 변경하자. 또는 Access Log Sampler 를 사용하자.
- functional mode를 사용하지 마십시오.
- XML 대신 CSV 출력을 사용.
- 필요한 데이터만 저장.
- 가능한 한 적은 수의 Assertions를 사용.
- 모든 JMeter 그래프는 메모리를 많이 사용하므로 사용하지 않도록 설정. 웹 인터페이스의 JTL 탭을 사용하여 모든 실시간 그래프를 볼 수 있다.
- CSV Data Set Config(CSV 데이터 세트 구성)에서 local path를 지우는 것을 잊지 마라.
- 모든 테스트 실행 전에 Files tab을 비우자
- non-GUI 모드(
댓글 없음:
댓글 쓰기