"제이미터"의 두 판 사이의 차이
잔글 (→같이 보기) |
잔글 (→속성) |
||
35번째 줄: | 35번째 줄: | ||
! align="center" colspan="2"| 스레드 속성(Thread Properties) | ! align="center" colspan="2"| 스레드 속성(Thread Properties) | ||
|- | |- | ||
− | | | + | | 쓰레드 개수(Number of Thread) |
| 한 번에 몇 개의 쓰레드를 생성할 것인지, 즉 동시에 몇 명의 가상 사용자로 테스트할 것인지에 대한 설정 값이다. | | 한 번에 몇 개의 쓰레드를 생성할 것인지, 즉 동시에 몇 명의 가상 사용자로 테스트할 것인지에 대한 설정 값이다. | ||
|- | |- |
2021년 1월 14일 (목) 15:35 판
제이미터(JMeter)란, 아파치(Apache)에서 개발한 오픈소스 성능 테스트 툴로 JVM이 설치되어있는 어떤 환경에서도 구동이 가능하며 데스크톱 환경을 제공하기 때문에 직관적인 인터페이스를 통해 쉽게 사용이 가능하다.
목차
개요
제이미터(JMeter)는 웹 애플리케이션처럼 클라이언트-서버 구조로 된 소프트웨어의 성능 테스트를 위해서 만들어진 100% 순수 자바 프로그램이다. 스테파노 마 조끼가 개발한 것으로, 이는 현재 톰캣(Tomcat)으로 이름이 바뀐 아파 지 제이 서브(Apache JServ)의 테스트를 위한 코드에서 시작되었다. 이후 이 코드에 GUI와 기능을 추가하여 제이미터(JMeter)가 만들어지게 되었다. 제이미터(JMeter)는 단위/성능/스트레스 테스트 등 많은 곳에서 활용할 수 있다. 프로토콜(Protocol)도 계속 추가되어 TCP, HTTP, HTTPS, FTP, JDBC, LDAP, SMTP, SAP 및 XML, RPC 등 현재 범용으로 사용되는 프로토콜 대부분을 지원하고 있다. 제이미터(JMeter)는 통신 프로토콜 단계에서만 동작하고 웹 브라우저에서는 동작하지 않는다. 즉, 통신규약에 맞도록 클라이언트와 서버 간 메시지만 송수신할 뿐이고 클라이언트 자체에서 행해지는 연산 동작은 하지 않는다. 가장 대표적인 예가 ActiveX를 이용하여 암호화나 연산 작업을 하는 사이트이다. 이러한 사이트는 ActiveX 로직을 모두 이해하고 자바를 이용하여 별도로 제이미터(JMeter) 내부 모듈을 구현하지 않는 이상 테스트가 불가능하다. 제이미터(JMeter)는 2001년에 1.0을 발표한 후 10여 년 동안 꾸준히 기능과 성능을 향상하여 2011년에는 Apache Software Foundation에서 Top Level Apache Project에 선정되기도 하였다. 또한, 자바 가상 머신(JVM, Java Virtual Machine)과 H/W의 성능이 향상되면서 초기에 문제가 되던 성능이나 기능 면에서 부족함이 많이 해소되어 현재는 웬만한 성능 테스트에서 핵심으로 활약하기에 부족함이 없는 상태에 도달한 것으로 보인다.[1]
발전 과정
- 제이미터 V1.0 : 1998년 스테파노 마초키(Stefano Mazzocchi)가 톰캣(Tomcat)을 성능 테스트 하기 위해서 만들었다.
- 제이미터 V2.5 : 2011년 최상위 레벨 아파치 프로젝트(Top Level Apache Project)에 선정되었다.
- 제이미터 플러그인 V0.0.1 : 2009년 구글코드(Code.google.com)에 제이미터 플러그인을 배포하였다.
- 제이미터 플러그인 V1.1.1 : 2013년 제이미터 플러그인(jmeter-plugins.org)으로 도메인 주소를 옮겼다.[2]
특징
제이미터는 사용자 수 무제한으로, 라이선스의 수량 제한이 없다. 또한, 몽고디비(MongoDB), 하둡(Hadoop) 추가, 웹소켓(WebSocket)은 곧 반영될 예정이며, 다양한 프로토콜 지원 및 지속적으로 추가하고 있다. 서버 리소스 모니터링은 유닉스(Unix)와 윈도우(Window) 및 매킨토시(Mac)에 대해서 중앙처리장치(CPU), 메모리, 디스크 입출력 등 75가지 성능지표 모니터링이 가능하다. 다양한 플러그인도 제공하며, 기능 테스트와 회귀(Regression) 테스트 등 테스트 자동화 가능이 있다. 스크립트를 작성하고, 젠킨스(Jenkins)와 연동한다. 제이미터는 매킨토시, 유닉스 및 리눅스(Linux), 윈도우 등에서도 동작하며, 자바로 구현 가능하다. 여러 회사에서 유료 성능 테스트 서비스 제공하고 있다.[2]
장점
- 다양한 애플리케이션(APP), 서버(Server), 프로토콜(Protocal)을 지원한다.
- 테스트 IDE의 전체 기능이 있다.
- 커맨드 라인(Command Line)을 지원한다.
- 다이내믹 HTML 레코드(Dynamic HTML report)이다.
- 순수 자바로 구현 가능하다.
- 높은 확장성이 특징이다.[3]
주요 기능
제이미터는 다양한 애플리케이션, 서버, 프로토콜 유형을 로드하고 성능을 테스트하는 기능이 있다. HTTP, HTTPS, SOAP 및 레스트풀(RESTful) 웹 서비스, FTP, 자바 데이터베이스 접속성(JDBC)를 통한 데이터베이스, LDAP, JMS를 통한 메시지 지향 미들웨어, 메일 SMTP, POP3 및 IMAP, 기본 명령과 셸 스크립트, TCP, 자바 객체 등으로 구성된다. 브라우저와 기본 애플리케이션에서 빠른 테스트 계획 기록, 빌드 및 디버깅을 허용하는 완전한 기능의 테스트 IDE이며, 모든 자바 호환 운영체제인 리눅스, 윈도우, 매킨토시 오에스텐(Mac OSX) 등에서 로드테스트를 수행하는 CLI 모드 및 헤드리스 모드이다. 또한, 완전하고 준비된 동적 HTML 보고서이며, 가장 널리 사용되는 응답 형식의 HTML과 제이슨(JSON) 및 XML은 모든 텍스트 형식에서 데이터를 추출하는 기능을 통한 쉬운 상관관계이다. 완벽한 이식성과 순수 자바로 구현가능하다. 제이미터는 전체 멀티 쓰레딩 프레임 워크를 사용하여 여러 스레드에 의한 동시 샘플링과 별도의 스레드 그룹에 의한 여러 기능의 동시 샘플링이 가능하다. 테스트 결과의 캐싱과 오프라인 분석 및 재생기능이 있고, 고도로 확장 가능한 코어여서 플러그 형 샘플러는 무제한 테스트 기능을 허용한다. 또한, 스크립트 가능한 샘플러, 플러그 형 타이머를 사용하여 여러 로드 통계를 선택 가능이 있다. 데이터 분석 및 시각화 플러그인은 뛰어난 확장 성과 개인화를 허용하고, 함수를 사용하여 테스트에 동적 입력을 제공하거나 데이터 조작을 제공 가능하다.[4]
활용
제이미터(JMeter) 공식사이트[5]에서 개인 컴퓨터의 자바와 맞는 버전을 설치한다. 윈도우(Window)의 경우 집(zip) 형태로 되어있는 파일을 설치를 진행한다. 압축을 해제하고 압축이 해제된 폴더 내의 빈(bin) 폴더로 이동한다. 그리고 jmeter.bat 파일을 실행하면 제이미터(JMeter)의 그래픽 유저 인터페이스(GUI)가 나타난다.
속성
스레드 속성(Thread Properties) | |
---|---|
쓰레드 개수(Number of Thread) | 한 번에 몇 개의 쓰레드를 생성할 것인지, 즉 동시에 몇 명의 가상 사용자로 테스트할 것인지에 대한 설정 값이다. |
램프업 기간(Ramp-up Period) | 한번의 실행을 몇초동안 완료시킬 것인지 나타내는 값이다. |
쓰레드 개수가 5, 램프업 기간이 3, 반복 횟수가 10 이라면 0.6(3/5)초 간격으로 5개의 스레드가 가동되고 10번을 반복 실행하라는 의미가 된다. | |
반복 횟수(Loop Count) | 반복하고자 하는 횟수 |
웹 서버(Web Server) | |
---|---|
서버이름(ServerName) | 서버 주소를 입력하거나 아이피 주소를 입력한다. |
프로토콜(Protocal) | 에이치티티피(http)나 에이치티티피에스(https)를 입력한다. |
포트번호 (Port Number) | 개방되어있는 포트번호를 작성한다. 위 이미지는 포트(PORT)로 설정된 변수를 사용했다. |
에이치티티피 요청(HTTP Request)은 메소드 형식을 변경할 수 있으며 경로를 추가할 수 있다. 요청방식에 따라 겟(GET), 포스트(POST) 방식을 넣어준다. 경로는 페이지 파일을 불러오는 경로를 넣어준다. 로그인 기능을 테스트한다면 메소드 값을 포스트(POST)로 지정해주고 로그인 경로를 지정한다. 그리고 파라메터 값에 아래 표와 같이 설정을 진행한다.
이름 | 값 |
---|---|
아이디(id) | 테스트1 |
패스워드 | 1234 |
리스너
제이미터(JMeter)에서 성능을 확인할 수 있는 결과다. 결과값을 불러와서 사용자가 편하게 볼 수 있도록 다양한 형태로 변환이 가능하며 진행했던 성능 평가의 결과를 한눈에 알아보기 쉽게 그래프 형식으로 표현할 수 도 있다.
테이블로 보기(View Results in Table)
열 이름 | 설명 |
샘플(Sample) | 아이디 번호다. 이 번호를 보고 몇번째로 보는 부하인지 알 수 있다. |
시작시간(Start Time) | 보내기 시작한 시간으로 ms단위까지 나온다. |
쓰레드 이름(Thread Name) | 쓰레드 그룹 이름 |
라벨(Label) | 보낸 요청의 이름 |
샘플 시간(Sample Time) | 요청 시작 시점부터 응답 종료 시점까지의 시간을 의미 |
상태(Status) | 응답상태를 확인할 수 있다. |
바이트스(Bytes) | 응답 데이터 바이트 |
센트 바이트(Sent Byte) | 요청 데이터 바이트 |
대기(Latency) | 지연 속도를 의미하는데 요청 시작 시점부터 응답 시작 시점까지의 시간을 의미 |
연결 시간(Connect Time) | TCP 핸드쉐이크를 이용해 연결하는 시간 |
열 이름 | 설명 |
샘플수(No of Samples) | 처리중인 데이터 수를 의미 |
마지막 샘플(Latest Sample) | 가장 마지막 샘플 시간 |
평균(Average) | 샘플 시간 평균 |
편차(Deviation) | 샘플 시간의 표준편차 |
트리로 보기(View Results Tree)
결과를 상세히 보고 검색까지 하고 싶을 때 사용한다. 기존의 표로 보기(View Results in Table)와는 다른 관점에서 보여준다. 하나하나의 데이터를 확인할 수 있으며 당연히 결과를 내보낼 수 있고 심지어 검색할 수 있다.
보고서 요약(Summary Report)
열 이름 | 설명 |
라벨(Label) | 사용했던 요청의 이름을 기준으로 모은다. |
샘플(Sample) | 요청 갯수 |
평균(Average) | 샘플 시간의 평균 |
최소(Min) | 샘플 시간의 최소 |
최대(Max) | 샘플 시간의 최대 |
표준편차(Std. Dev.) | 샘플 시간의 표준편차 |
에러(Error) % | 에러율 |
쓰루풋(Throughput) | 시간당 처리량 |
수신(Received) KB/sec | 시간당(sec) 받은 데이터(KB) |
전송(Sent) KB/sec | 시간당(sec) 보낸 데이터(KB) |
평균(Avg. Bytes) | 평균 바이트 |
그 외
- 애그리게이트 그래프(Aggregate Graph) : 그래프로 상세하게 보고 싶을 때 사용한다.
- 그래프 결과(Graph Results) : 대략적으로 그래프를 쉽게 볼 수 있다.
- 리스폰 시간 그래프(Response Time Graph) : 계속적으로 추세를 보고 싶을 때 사용한다.
구성요소
각주
- ↑ 12bme, 〈(테스트) JMeter와 성능 테스트〉, 《티스토리》, 2017-10-03
- ↑ 2.0 2.1 STA 테스팅 컨설팅, 〈JMETER 정확히 알고제대로 활용하자〉, 《에스티에이컨설팅》, 2015-04-29
- ↑ 오장일, 〈무료 성능 테스트 프로그램 Jmeter〉, 《네이버 블로그》, 2017-07-03
- ↑ 아파치 제이미터 공식 사이트 - https://jmeter.apache.org/
- ↑ 아파치 제이미터 공식 사이트 - https://jmeter.apache.org/
참고자료
- qjadud22, 〈JMeter 설치 및 성능 테스트〉, 《티스토리》, 2018-11-18
- 12bme, 〈(테스트) JMeter와 성능 테스트〉, 《티스토리》, 2017-10-03
- STA 테스팅 컨설팅, 〈JMETER 정확히 알고제대로 활용하자〉, 《에스티에이컨설팅》, 2015-04-29
- 오장일, 〈무료 성능 테스트 프로그램 Jmeter〉, 《네이버 블로그》, 2017-07-03
- 아파치 제이미터 공식 사이트 - https://jmeter.apache.org/
같이 보기