1. JMeter 란

Apache JMeter™ 애플리케이션은 기능을 부하 테스트하고 성능을 측정는 100% 순수 Java 오픈 소스 소프트웨어입니다. 원래 웹 애플리케이션 테스트용으로 설계되었지만 이후 다른 테스트 기능으로 확장되었습니다.

 

2. JMeter 설치

1) 설치환경

  • OS : Window11
  • JAVA : 17.0.6
  • Apache JMeter 5.6.3 (Requires Java 8+)

2) 다운로드

https://jmeter.apache.org/download_jmeter.cgi 페이지에서 apache-jmeter-5.6.3.zip 다운로드

 

3) 설치

다운받은 파일을 압축 해제한 후

apache-jmeter-5.6.3\bin 디렉토리에 있는 jmeter.bat 파일을 실행시킨다.

jmeter.bat 파일을 실행하면 아래와 같은 화면이 나타난다.

3. JMeter 사용법

테스트 계획은 JMeter 스크립트이며, 부하 테스트의 흐름을 결정한다.

이 JMeter 튜토리얼에서는 BlazeMeter에서  사용하는 데모를 로드 테스트하여 Simple이라는 모의 여행사를 시뮬레이션한다. Simple Travel Agency를 사용하면 항공편을 검색하고 선택할 수 있으며 JMeter를 통해 시뮬레이션한다.

 

첫 번째 스크립트 : 이용 가능한 항공편을 검색 시나리오

 

Thread Groups :

테스트 스크립트 작성을 시작하려면 테스트 계획에 스레드 그룹을 추가한다.
스레드 그룹은 사용자 흐름을 결정하고 사용자가 앱에서 행동하는 방식을 시뮬레이션한다.

각 스레드는 사용자를 나타낸다.
테스트 계획을 마우스 오른쪽 버튼으로 클릭하고 "Threads(Users)"를 선택한 다음 "Thread Group"을 선택한다.

 

- Configure the Thread Group by setting:

  • Name: 사용자 정의 이름을 제공하거나 원하는 경우 기본 이름을 "Thread Group"으로 둔다.
  • Number of Threads: 테스트 사용자(스레드) 수
  • Ramp-up Period: 사용자를 추가하는 속도(초). 예를 들어 0으로 설정하면 모든 사용자가 즉시 시작다.  쓰레드가 10개이고 Ramp-up Period가 50이면 Thread를 50초 동안 차례대로 생성하라'는 의미이다. 즉, 5초(50초/10개)마다 Thread를 하나씩 생성하는 것과 같은 의미이다.

  • Loop Count: 테스트를 반복하는 횟수

Samplers

데모 사이트에 HTTP 요청을 보내려고 하므로 HTTP 요청 샘플러를 추가한다.
스레드 그룹을 마우스 오른쪽 버튼으로 클릭하고 "추가"를 선택한 다음 "샘플러"를 선택한 다음 "HTTP 요청"을 선택다.

 

아래와 같이 샘플러를 구성한다.

  • Name: 사용자가 정한 이름을 입력하거나 기본 "HTTP Request "라는 이름을 그대로 사용 
  • Server Name or IP: 서버의 DNS 이름 또는 IP 주소입니다. 본문에서는 blazedemo.com 입력
  • HTTP를 통해서만 접속할 수 있는 웹사이트는 브라우저에서 안전하지 않은 것으로 표시되고 검색 엔진 결과에서 제외되므로 프로토콜을 "https"로 설정 

 

Timers

사용자가 웹사이트나 앱을 클릭하면 일시 중지와 지연이 발생한다. 이는 타이머를 사용하여 시뮬레이션할 수 있다.
상수 타이머가 가장 일반적이다. 요청 사이에 대기할 시간(밀리초)을 결정한한다.
"HTTP Request" 마우스 오른쪽 버튼으로 클릭하고 "Add"를 선택한 다음 "Timer"를 선택한 다음 "Constant Timer"를 선택한다.

본 문성에서는 300 miliseconds 를 입력한다.

 

Listeners

로깅 및 디버깅 정보를 포함하여 결과를 표시하는 기록 메커니즘인 리스너를 통해 테스트를 실행한 후 결과를 확인한다.

View Results Tree는 가장 일반적인 리스너다.
"Thread Group"을 마우스 오른쪽 버튼으로 클릭하고 "Add"를 선택한 다음 "Listener"를 선택한
다음 "View Results Tree"를 선택한다.

 

이제 파일을 저장한다. 본 문서에서는 "Test Plan.jmx" 파일명으로 저장하였다.

 

테스트를 실행하려면 상단의 녹색 화살표를 클릭한다. 테스트 실행이 완료되면 리스너에서 결과를 볼 수 있다.
분 문서에서는 결과에 녹색 아이콘이 표시되므로 테스트가 성공한 것을 확인할 수 있다. 오른쪽 창에서는 로드 시간, 연결 시간, 오류, 요청 데이터, 응답 데이터 등과 같은 더 자세한 결과를 볼 수 있고, 결과를 저장할 수도 있다.

 

두 번째 스크립트 : 항공편 검색 후 항공편 선택 시나리오

두 번째는 매개변수를 추가한 JMeter 시나리오입니다.

첫 번째 스크립트는 단순히 항공편을 검색한 반면, 두 번째 스크립트는 항공편을 검색한 후 항공편을 선택하는 시나리오입니다.

 

웹 브라우저에서 항공편을 검색하고 선택한 항공편 옆에 있는 "Find Flights" 버튼을 클릭하면 "/reserve.php"가 호출됩니다.

JMeterd에서 HTTP 샘플러를 추가합니다. 본 문서에서는 "reserve" HTTP 샘플러를 추가했습니다. Server Name or IP란에 "blazedemo.com"을 입력하고, "Path" 필드에 "reserve.php"를 추가한다. 이렇게 하면 샘플러가 "blazedemo.com/reserve.php"의 전체 URL을 구축하도록 지시하게 된다. 

다음으로 선택에 필요한 매개변수를 추가한다. (웹 브라우저의 개발자 도구(크롬 브라우저 : F12)를 사용하여 파라미터명을 찾을 수 있다.) 이 페이지에서 "fromPort" 및 "toPort"를 지정하고, 각각 "Boston"과 "London"으로 입력한다.

 

추가적인 정보를 보기 위해 "View Results in Table" 리스너를 추가한다.
이는 홈 페이지를 방문한 다음 두 개의 매개변수를 예약 페이지로 보내는 Test Plan 이다.

저장 후 실행하면 아래와 같은 결과 화면을 볼 수 있다.

 

 세 번째 스크립트 : 항공편 검색 후 항공편 선택 시나리오

긴 사용자 사용 흐름을 생성해야 한다면 시간이 오래 걸릴 수 있습니다.

따라서 스크립트를 작성하는 것보다 더 좋은 방법은 스크립트를 녹음하는 것입니다. JMeter 레코더 또는 BlazeMeter Chrome 확장 프로그램으로 녹음을 할 수 있습니다. Chrome 스토어에서 무료로 사용할 수 있는 BlazeMeter 확장 프로그램은 트래픽을 리디렉션하기 위해 프록시를 설정해야 하는 JMeter 확장 프로그램보다 사용자 친화적입니다.

Chrome을 통해 녹음을 시작하고 클릭하여 테스트하려는 사용자 시나리오를 시뮬레이션합니다. 완료되면 녹음을 중지하고 필요에 따라 편집을 할 수 있습니다.

 

크롬 확장 설치

BlazeMeter 확장 프로그램을 설치한 후, 크롬 브라우저의 우측 상단에 BlazeMeter를 클릭한다.

 

https://blazedemo.com/ 에 접속하여, 비행편을 검색하고 검색된 비행편을 선택한 후 예약 정보를 입력한 다음,

녹음 중지 버튼을 클릭한다.

녹음을 완료한 후 "Save ..." 버튼을 클릭하여 "Jmeter(JMX)" 선택한 다음 "Save"한다.

 

Now add a listener and run the test.

 

+ Recent posts