[컴][swe] Jmeter

테스트툴

Jmeter

환경

  • windows 10

download

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 Elements

  • 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을 비우자

Reference

  1. Apache JMeter - User’s Manual: Getting Started
  2. jMeter - Quick Guide
  3. jMeter - Best Practices

댓글 없음:

댓글 쓰기