[Load Test]Apache JMeter User's Manual - 2. Building a Test Plan

2018. 4. 24. 14:58OS/개발환경구축

매번 설치해서 테스트를 해보겠다 해보겠다 했는데, 자꾸 미뤄서, 이번 테스트 할때를 기회삼아서,
jMeter에 대해서 설치부터 전체적인 테스트 플랜 짜는 것과 JMeter 구동하는 것까지 전체적으로 정리를 해보도록 합니다.
reference가 잘 나와 있기 때문에, 발!!! 번역을 하면서 하나씩 테스트 해보도록 합니다. 




2. Building a Test Plan

테스트 플랜은 JMeter 기동될때 실행될 단계들의 일련의 단계들을 설명합니다. 
완성된 테스트 플랜은 하나 혹은 그 이상의 Thread Group, logic controllers, sample generating controller, listeners, timers, assertions, configuration elements 들로 구성될 것입니다.

2.1 Adding and Removing Elements

테스트 플랜에 구성요소를 추가하는 것은 트리에서 오른쪽 클릭하고, "add" 리스트에 새로운 구성요소를 선택하는 것으로 끝낼수 있습니다.
둘중에  하나, 구성요소가 파일에서 로드할수 있으며, "merge" 또는 "open" 옵션을 선택해서 추가 할수 있습니다.

구성요소를 제거하기 위해서는, 구성요소를 선택하고, 구성요소를 오른쪽 클릭해서 "remove" 옵션을 선택는 것을 확실하게 하세요.


2.2 Loading and Saving Elements

파일에서 구성요소를 불러오는 것은, 불러온 구성요소를 추가하고자 하는 현재의 트리 구성요소에 마우스 오른쪽 클릭하고,
"merge" 옵션을 선택합니다.
여러분의 구성요소가 저장된 파일을 선택하세요. JMeter는 트리안에 그 구성요소를 결합할것입니다.

트리 구성요소들을 저장하기 위해서는 마우스 오른쪽 클릭을 해당 구성요소에 하고, "Save Selection As ..." 옵션을 선택하세요
JMeter는 선택된 구성요소를 저장하고, 그것 이하의 모든 자식 구성요소를 추가합니다.
이방법으로 테스트 트리 조각들과 개인적인 구성요소들을 이후에 사용할수 있게 저장할수 있습니다.

2.3 Configuring Tree Elements

테스트 트리안에 모든 구성요소는 JMeter의 오른편 프레임에 컨트롤들이 짜잔하고 나오게 하죠.
이들 컨트롤들은 특정 테스트 구성요소의 행위를 설정하게 되어있습니다..
하나의 구성요소가 무엇이 설정될지는 트리에 있는 어떤 타입의 구성요소에 따라 달려있습니다. 

테스트 트리 자신은 드래그앤 드롭을 통해서 테스트 트리 주변에서 조정이 가능합니다.

2.4 Saving the Test Plan

요구되진 않지만, 테스트 플랜을 구동하기전에 파일로 저장하는 것을 추천드립니다.
테스트 플랜을 저장하기 위해선, "Save" 나 "Save Test Plan as" 를 파일 메뉴에서 선택하시면 됩니다.
(최근 릴리즈에서는 더이상 Test Plan 구성요소을 우선 선택할 필요가 없게 되었습니다.)

JMeter는 완전한 테스트 플랜 트리나 혹은 그것의 일부분만 저장하는 것이 가능합니다.
테스트 플랜 트리의 "가지" 일부분에 위치한  구성요소만 저장하기 위해서는, 트리에 "가지"를 시작하는 지점으로 부터 테스트 플랜 요소를 선택한 다음 마우스 오른쪽 버튼 클릭해서 "Save Selection As .." 메뉴 아이템을 선택합니다.
둘중에 하나입니다. 적합한 테스트 플랜 구성요소를 선택한 담에 Edit 메뉴에서 "Save Selection As ..."을 선택하는 것입니다.


2.5 Running a Test Plan

테스트 플랜을 실행하기 위해선, "Start" (Control + r)  을 "Run" 메뉴 아이템에서 선택합니다.
JMeter 가 실행중에서는 메뉴바 아래 오른쪽 끝에 작은 녹색 박스가 보입니다.
"Run" 메뉴를 체크할수 있습니다.
"Start"가 비활성인 경우에는 "Stop"이 활성화 상태 이고 JMeter는 여러분의 테스트 플랜들 열심히 돌리고 있는 중이죠.

녹색 박스 왼쪽의 숫자들은 활성화 스레드/ 전체 스레드 숫자입니다. 
이건 로컬에서 테스트를 실행는데 적용됩니다.
클라이언트-서버 모드를 사용할땐 원격 시스템에서 시작된 어떤 스레드도 포함하지 않습니다.

여기 설명된 GUI 모드를 사용하는 것은 여러분의 테스트 플랜을 디버깅할때만 사용해야 합니다.
실제 부하 테스트는 NON-GUI 모드에서 사용하세요 

2.6 Stopping a Test

메뉴에서 가능한 두가지 타입의 stop 명령이 있습니다.

  • Stop (Control + . ) 
    즉시 가능한 스레드들을 중지합니다.
    많은 Sampler들은 활성 sample들을 일찍 종료될수 있다는 것을 의미하는 중단 가능성입니다.
    STOP 명령은 모든 스레드들이 5000ms 인 기본 타임아웃(jmeterengine.threadstop.wait 속성을 사용해서 변경할수 있습니다]안에서 중지되는 것을 체크 할것 입니다.
    만약 스레드들이 중지되지 않았다면, 메시지는 나타나지 않습니다.
    Stop명령은 재시도 할수 있지만, 실패하면, 그땐 JMeter를 clean up 하기 위해 나가야 할 필요가 있습니다.
  • Shutdown (Control +  ,)
    현재 작업을 끝으로 스레드에게 멈추라는 요청들입니다.
    활성화 샘플들에게 간섭을 하지 않습니다.
    모든 스레드가 중지되기 전까진 modal shutdown 다이얼로그 박스는 활성으로 남을 것입니다. 

Shutdown이 길게 걸리면, Shutdown 다이얼로그를 닫고, Run/Stop을 선택하거나 Control + . 을 그냥 누르세요.

non-GUI 모드에서 JMeter를 구동하고 있다면, 메뉴가 없습니다 그리고 JMeter는 Control + . 과 같은 액션에 반응하지 않을 것입니다.
그래서 JMeter non-GUI mode는 특정 포트에 명령을 대기하고 있습니다.
(default 4445, 기본값 설정은 jmeterengine.nongui.port) 
만약 기본 포트가 사용중에 있다면 (다른 JMeter 인스턴스에 의한 예제때문에), JMeter는 교차 포트의 자동 선택을 지원합니다.
이경우에는 JMeter는 다음 더 높은 포트로 재시도 합니다. 기본포트가 4455인 JMeter의 jmeterengine.nongui.maxport에 다다를때까지 계속합니다.
만약 maxport가 작거나port와 같다면, port scanning은 취하지 않을 것입니다.
선택된 포트는 콘솔 윈도우에 나타납니다.
현재 지원되는 명령은 
  • Shutdown - graceful shutdown
  • StopTestNow - immediate shutdown

이들 명령은 제각각 shutdown[.cmd] 나 stoptest[.cmd] 스크립트를 사용해서 보낼수 있습니다.
이 스크립트는 bin 디렉토리에서 확인가능합니다.
그 스크립트가 같은 호스트에서 실행되어야 명령들이 허용됩니다.


2.7 Error reporting

JMeter는 warnings , errors 을 jmeter.log 파일에 테스트가 스스로 동작중에 같은 정보도 마찬가지로 리포트 합니다.
JMeter는 창의 오른쪽 끝에있는 경고 아이콘 (삼각형) 옆에 jmeter.log 파일에서 찾은 warning/error의 수를 보여줍니다.  
warning 아이콘을 클릭하면 jmeter.log 파일을 JMeter의 윈도의 하단에서 보여줍니다.
경우에 따라 JMeter가  잡거나 로그 할수 없는 같은 에러들이 있을것입니다.
이들은 컴맨드 콘솔에 나타날 것입니다.
테스트가 원하는대로 동작하지 않으면, 어떤 에러가 기록되어 있는 케이스에 로그파일을 체크하시길 바랍니다.
(예를 들면, 아마도, 함수 호출중 구문에러)

에러들의 Sampling(예를 들어 HTTP 404 - file not found)는 일반적으로 로그 파일에 기록되지 않습니다.
대신 샘플 결과의 속성으로 저장되어 있습니다.
샘플 결과의 상태는 다양한 다른  Listeners에서 보여집니다.