테스트 계획 구축하기 (Building a Test Plan)
테스트 계획 구축하기 (Building a Test Plan)
테스트 계획(Test Plan)은 JMeter가 실행할 일련의 단계를 설명하는 문서예요. 완성된 테스트 계획은 하나 이상의 스레드 그룹(Thread Group), 논리 컨트롤러, 샘플 생성 컨트롤러, 리스너, 타이머, 어서션, 구성 요소(Configuration Element)로 이루어져요. 여기서는 요소 추가·제거, 저장, 테스트 실행·중지, 오류 보고까지 테스트 계획을 만들고 돌리는 전체 흐름을 살펴볼게요.
본문
요소 추가·제거 (Adding and Removing Elements)
테스트 계획에 요소를 추가하려면 트리에서 요소를 우클릭하고 "add" 목록에서 새 요소를 선택하면 돼요. 또는 파일에서 요소를 불러와 "merge" 또는 "open" 옵션으로 추가할 수도 있어요. 요소를 제거하려면 해당 요소를 선택한 뒤 우클릭하고 "remove" 옵션을 고르면 되고요.
요소 불러오기·저장하기 (Loading and Saving Elements)
파일에서 요소를 불러오려면 기존 트리 요소를 우클릭하고 "merge"를 선택한 뒤, 저장된 요소 파일을 고르면 JMeter가 그 요소들을 트리에 병합해요. 트리 요소를 저장하려면 우클릭하고 "Save Selection As …"를 선택하면 선택한 요소와 그 아래 모든 자식 요소가 저장돼요. 이렇게 하면 테스트 트리 조각이나 개별 요소를 나중에 재사용할 수 있어요.
트리 요소 구성하기 (Configuring Tree Elements)
테스트 트리의 모든 요소는 JMeter 오른쪽 프레임에 설정 컨트롤을 보여줘요. 이 컨트롤로 특정 테스트 요소의 동작을 설정할 수 있고요, 무엇을 설정할 수 있는지는 요소의 종류에 따라 달라져요. 테스트 트리 자체는 구성 요소를 드래그해서 원하는 위치로 옮길 수도 있어요.
테스트 계획 저장하기 (Saving the Test Plan)
필수는 아니지만, 테스트를 실행하기 전에 테스트 계획을 파일로 저장하는 걸 권장해요. File 메뉴에서 "Save" 또는 "Save Test Plan As …"를 선택하면 되고, 최신 릴리스에서는 먼저 Test Plan 요소를 선택할 필요가 없어졌어요. JMeter는 전체 테스트 계획 트리나 일부만 저장할 수 있어요. 특정 "가지(branch)"의 요소만 저장하려면 시작할 지점의 Test Plan 요소를 선택하고 우클릭해 "Save Selection As …"를 고르면 돼요. 또는 적절한 요소를 선택한 뒤 Edit 메뉴에서 "Save Selection As …"를 선택해도 돼요.
테스트 계획 실행하기 (Running a Test Plan)
테스트 계획을 실행하려면 "Run" 메뉴에서 "Start"(Control + r)를 선택해요. JMeter가 실행 중이면 메뉴 바로 아래 오른쪽 끝에 작은 초록색 상자가 표시돼요. "Run" 메뉴를 확인해서 "Start"가 비활성화되고 "Stop"이 활성화되어 있다면 JMeter가 테스트 계획을 실행 중이란 뜻이에요(적어도 JMeter는 그렇게 생각해요). 초록색 상자 왼쪽의 숫자는 활성 스레드 수 / 전체 스레드 수예요. 이 수치는 로컬 실행 테스트에만 해당하며, 클라이언트-서버 모드에서 원격 시스템에 시작된 스레드는 포함하지 않아요. GUI 모드는 테스트 계획 디버깅에만 사용해야 해요. 실제 부하 테스트는 CLI 모드로 실행해야 하고요.
테스트 중지하기 (Stopping a Test)
메뉴에는 두 종류의 중지 명령이 있어요.
- Stop (Control + .) — 가능하면 즉시 스레드를 중지해요. 많은 샘플러가 Interruptible(중단 가능)이라 활성 샘플을 일찍 종료할 수 있어요. Stop 명령은 기본 타임아웃인 5000ms = 5초 안에 모든 스레드가 중지됐는지 확인해요. [이 값은 JMeter 프로퍼티 jmeterengine.threadstop.wait 로 바꿀 수 있어요.] 스레드가 중지되지 않으면 메시지가 표시돼요. Stop 명령은 재시도할 수 있지만, 그래도 실패하면 정리를 위해 JMeter를 종료해야 해요.
- Shutdown (Control + ,) — 현재 작업이 끝날 때 스레드가 멈추도록 요청해요. 활성 샘플은 중단하지 않아요. 모달 셧다운 대화상자는 모든 스레드가 멈출 때까지 계속 떠 있어요.
Shutdown이 너무 오래 걸리면 셧다운 대화상자를 닫고 Run/Stop을 선택하거나 Control + . 를 누르면 돼요.
CLI 모드에서 실행할 때는 메뉴가 없고 Control + . 같은 키 입력에도 반응하지 않아요. 그 대신 JMeter CLI 모드는 특정 포트(기본 4445, JMeter 프로퍼티 jmeterengine.nongui.port 참조)에서 명령을 수신해요. 기본 포트가 사용 중이면(예를 들어 다른 JMeter 인스턴스가 쓸 때) JMeter는 자동으로 다음 상위 포트를 시도하고, JMeter 프로퍼티 jmeterengine.nongui.maxport(기본 4455)까지 계속 올라가요. maxport가 port보다 작거나 같으면 포트 스캔은 일어나지 않아요. 선택된 포트는 콘솔 창에 표시돼요. 현재 지원되는 명령은 다음과 같아요.
- Shutdown — 정상 종료(graceful shutdown)
- StopTestNow — 즉시 종료
이 명령들은 각각 shutdown[.cmd|.sh] 또는 stoptest[.cmd|.sh] 스크립트로 보낼 수 있고, 스크립트는 JMeter bin 디렉터리에 있어요. 명령은 같은 호스트에서 스크립트를 실행할 때만 수락돼요.
오류 보고 (Error reporting)
JMeter는 경고와 오류를 jmeter.log 파일로 보고하고, 테스트 실행에 대한 일부 정보도 함께 기록해요. 창 오른쪽 끝 경고 아이콘(삼각형) 옆에 jmeter.log 파일에서 찾은 경고/오류 개수를 표시해요. 경고 아이콘을 클릭하면 JMeter 창 아래쪽에 jmeter.log 파일이 보여요. 가끔 JMeter가 잡아서 기록하지 못하는 오류가 있을 수 있는데, 이런 오류는 명령 콘솔에 나타나요. 테스트가 예상대로 동작하지 않으면 로그 파일에서 오류를 확인해보세요(예: 함수 호출의 문법 오류).
샘플링 오류(예: HTTP 404 - file not found)는 보통 로그 파일에 기록되지 않아요. 대신 샘플 결과의 속성으로 저장되고요. 샘플 결과의 상태는 다양한 리스너에서 확인할 수 있어요.