유용한 정보

성능 TEST를 위한 보고서 2

CyberI 2019. 6. 28. 10:52


1. JMeter

Apache JMeter는 웹 애플리케이션처럼 클라이언트-서버 구조로 된 소프트웨어의 성능 테스트를 위해 만들어진 자바 프로그램입니다. Apache Tomcat의 테스트를 위한 코드에서 시작되어 GUI와 기능을 추가하여 지금의 JMeter가 만들어졌습니다. 원래는 웹 응용 프로그램을 테스트하기 위해 설계되었지만, 현재는 단위/성능/스트레스 테스트 등 많은 곳에서 활용할 수 있습니다. 프로토콜도 계속 추가되어 TCP, HTTP(S), FTP, JDBC, LDAP, SMTP 등 현재 범용으로 사용되는 프로토콜 대부분을 지원합니다.

 JMeter는 실행 시 마치 브라우저(또는 여러 개의 브라우저)에서 동작하는 것처럼 느껴집니다. 그러나 JMeter는 브라우저가 지원하는 모든 작업을 수행하지 않습니다. HTML 페이지에 있는 javascript를 실행하지 않고 HTML 페이지를 브라우저처럼 렌더링하지도 않습니다. 이로 인해 JMeter 툴을 이용한 성능테스트 시 응답 시간은 실제 응답 시간과 조금 차이가 날 수 있습니다.

 

2. JMeter 설치

다운로드 : http://jmeter.apache.org/download_jmeter.cgi (최신버전 다운로드)

                https://archive.apache.org/dist/jmeter/binaries/ (이전버전 다운로드)

윈도우에 설치를 원하시면 zip 파일을 받아 압축을 풀어 사용하시면 됩니다. JMeter를 실행하기 위해서는 Java 6 이상이 설치되어 있어야 합니다. (최신 버전 4.0의 경우는 Java 8 이상)

저는 현재 개발 환경이 Java 7로 설치되어 있으므로, apache-jmeter-2.13.zip을 다운로드하여 사용하였습니다.

압축을 풀고 bin 폴더 안에 있는 jmeter.bat 파일을 실행시키면 오른쪽과 같은 JMeter GUI가 실행됩니다.

JMeter는 부하 발생을 목적으로 하는 프로그램이어서 외부 웹 서버에 접속해서 테스트하면 외부 서버에 부하가 발생하거나 내부 네트워크 트래픽에 과부하를 줄 수 있으므로 사용 방법을 익히는 단계에서는 자신의 로컬에 테스트 타깃 서버를 만들어 놓고 테스트를 진행하는 것이 좋습니다.

 

3. JMeter 사용 방법

JMeter에서는 테스트 스크립트를 “Test Plan”이라고 표현합니다. 웹 서버를 테스트하기 위한 간단한 Test Plan을 만들어 보겠습니다.

- Test Plan 작성 순서

 가. Thread Group 추가 및 설정 : 가상 사용자(Thread)의 숫자와 반복 횟수, 반복 시간을 설정합니다.

 “Test Plan > add > Threads(Users) > Thread Group” 추가

 

Number of Threads(users) Thread 생성 개수를 의미합니다.
Ramp-up Period(in seconds) 전체 Thread가 전부 실행되는 시간을 의미합니다. 예를 들어, Thread의 개수가 5개이고 Ramp-up Period가 15초 일 경우, 첫 번째 Thread가 수행된 후 다음 Thread가 수행될 때가지 3초를 대기한다는 의미입니다.
Loop Count 각 Thread가 몇 번씩 실행할 것인지를 의미합니다. Forever를 체크 시 개수 상관없이 무한대로 실행됩니다.

위와 같은 Thread Group 설정은 10명이 10번씩 Test Plan을 반복하라는 의미로 총 100회 Test Plan을 수행합니다.

 

- Test Plan 작성 순서

 나. Config Element(HTTP Request Defaults) 추가 및 설정 : 실제 Thread가 어떤 동작을 하는지 설정합니다.

 “Thread Group > add > Config Element > HTTP Request Defaults” 추가

Server Name or IP 성능테스트를 수행할 도메인 명 또는 IP 입력합니다. (전체 URL을 입력하지 않습니다.)
Port Number 포트를 입력합니다.
Path 호출할 전체 URL에서 IP 또는 도메인 명과 Port를 제외한 나머지 URL을 입력합니다.
Send Parameters With the Request 호출한 URL에 전달할 Parameter를 설정합니다.

 

- Test Plan 작성 순서

 다. HTTP Request Sampler 추가 및 설정

 “Thread Group > add > Sampler > HTTP Request” 추가 (테스트 페이지의 개수 만큼 추가)

 

Path 호출할 전체 URL에서 IP 또는 도메인 명과 Port를 제외한 나머지 URL을 입력합니다.
Send Parameters With the Request 호출한 URL에 전달할 Parameter를 설정합니다.

 

- Test Plan 작성 순서

라. Listener 추가 및 설정 : Sampler의 요청에 대한 결과를 수집해서 그 결과 값을 보여주는 Element입니다. 요청을 보낸 후 성공/실패, 응답시간, 응답 메시지 등을 확인하기 위해 반드시 추가되어야 합니다.

 “Thread Group > add > Listener > View Result Tree”

 “Thread Group > add > Listener > Summary Report”

Test Plan이 모두 작성되었으므로 성능 테스트를 실행시켜보도록 하겠습니다.

제가 설정한 Test Plan은 10개의 Thread가 10번씩 수행되며 한번 수행 될 때

localhost:8080/main/main.jsp, localhost:8080/mk/main/main.jsp, localhost:8080/ml/main/main.jsp

세 도메인이 호출되므로 각 도메인당 100번의 호출. 총 300번의 테스트가 이루어집니다.

 

4. JMeter 테스트 결과 확인

가. View Result Tree

각 결과의 요청/응답을 상세하게 살펴볼 수 있는 Listener입니다.

Sampler result 해당 Sampler의 요청 결과를 보여줍니다. 성공/실패 여부를 포함해 응답시간과 크기 등을 보여줍니다.
Request 해당 Sampler가 웹 서버에 보낸 Request 정보를 볼 수 있습니다.
Response data 해당 Sampler의 요청에 대한 응답 메시지를 보여줍니다. 웹 서버로 요청을 보냈으므로 Response data는 html 문서로 출력됩니다.

 

. Summary Report

테스트 결과를 요약해서 보여줍니다. 통합된 요청량, 응답시간, 오류율, 단위 시간당 처리량 등을 확인할 수 있습니다.

5. JMeter 플러그인 추가

JMeter는 성능 테스트 IDE 답게 플러그인을 추가할 수 있습니다.

JMeter 플러그인은 https://jmeter-plugins.org 에서 다운로드할 수 있습니다. 저는 Response Times Over Time 이라는 테스트 결과를 차트로 제공하는 플러그인을 다운로드하여 활용해 보겠습니다. 아래 그림과 같이 플러그인을 다운로드합니다.

 

다운로드를 하고 압축을 풀면 아래 화면처럼 lib폴더가 있고 내부에 ext 폴더와 jar이 있습니다. 이 폴더와 파일을 JMeter가 설치된 폴더에 경로에 맞게 각각 넣어주시면 됩니다. 그 후 JMeter를 재실행하면 Listener에 새롭게 추가된 것을 확인할 수 있습니다.

 

시간에 따른 각 도메인별 응답 시간과 트랜잭션 처리량을 차트로 제공합니다.

 

성능 TEST를 위한 보고서 전편의 콘텐츠를 살펴보고 싶다면, 아래를 클릭해주세요.

성능 TEST를 위한 보고서 1