Using JMeter

Toggle Space Navigation Tree
Space Map

간단한 테스트를 위해 jmeter사용하기

Thread Group 생성하기

  • Name - 쓰레드 그룹의 이름.
  • Action to be taken after a Sampler error - 테스팅 결과값을 보여주는 Sampler에서 에러가 발생했을경우 작업을 지속할지에 대한 옵션값이다. continue, stop Thread, stop Test의 3가지 값중에 하나를 선택할수 있다.
  • Number of Threads - 생성될 쓰레드의 갯수. 각각의 쓰레드는 한명의 테스트 유저로 간주할수있다. 그러므로 5명으로 로드테스트를 수행하길 원한다면 이 값을 5로 주면 된다.
  • Ramp-Up Period - 쓰레드와 쓰레드간의 수행시간 간격이다. 즉 값이 1로 두면 첫번째 쓰레드 생성후 1초후 다음 쓰레드가 생성되는 것이다. 다시 말하면 A라는 사용자가 요청을 보내고 1초후 B라는 사용자가 요청을 보내는 셈이라고 볼수 있다. 만약 모든 쓰레드를 한번에 생성하길 원한다면 이 값을 0으로 셋팅하면 된다.
  • Forever - 이것을 체크하면 테스트는 임의로 중지를 시키지 않는한 계속적으로 쓰레드를 생성한다. 체크하지 않는다면 Loop Count값에 의해 테스트가 반복된다.
  • Loop Count - 이 값은 Forever가 체크되지 않은 상태에서만 유효한 값이다. 테스트 반복 카운트 값이다.
  • Scheduler - 지정된 시각에 테스트를 하도록 스케줄링 기능을 제공한다. 이것을 체크하면 하위로 지정된 날짜및 시간등을 지정할수 있는 화면이 나온다.

Listener 추가하기

  • Name - 이 HTTP 요청의 이름.
  • Server Name or IP - 테스트될 애플리케이션이 작동중인 서버의 이름이나 IP
  • Port Number - 애플리케이션에 의해 사용되는 포트번호. 일반적인 웹 서버는 80, 톰캣등은 8080을 주로 사용한다.
  • Protocol - 사용되는 프로토콜, HTTP 이나 HTTPS값을 사용한다.
  • Method - 요청 방식, GET 이나 POST를 사용한다.
  • Path - 요청을 다루기 위한 자원의 경로
  • Follow Redirects - 웹 애플리케이션에 의해 보내어진 리다이렉트
  • Use KeepAlive - 체크되어 있다면 요청헤더에 Connection = Keep-Alive을 보낸다. 디폴트는 HTTP1.1브라우저는 연결헤더의 값으로 Keep-Alive를 사용한다. 그러므로 이 체크박스는 체크되어야만 한다.
  • Parameters - 이 요청과 함께 보낼 파라미터들의 목록
  • Send a file with a request - 웹 애플리케이션에 파일 업로드를 가상화한다.
  • Retrieve all images and Java Applets - 내장된 컨텐츠를 다운로드한다.

HTTP Request sampler 추가하기

Jmeter에서는 다양한 테스트 결과물을 보여주기 위해 많은 sampler를 제공한다. 그중에서 가장 많이 사용되는 sampler중에 4가지를 선택해서 설명을 하도록 하겠다.

여기서 테스트는 10개의 쓰레드로 50번의 루프를 돌렸다. 즉 500번의 쓰레드가 요청을 보낸셈이다.

=> Graph Results

=> Aggregate Report

=> View Results In Table

=> View Results Tree

  1. 응답시간 - View Results In Table의 세번째 칼럼은 각각의 샘플의 응답시간이다. 여기서는 16303, 16734, 16744, 16884, 16864의 순서로 값이 계속적으로 기입이 되어있다. 여기서 평균응답시간은 이 값들의 합에 (쓰레드수X루프수)를 나눈값이다. 여기서의 평균응답시간은 2843이다. 이 값은 Graph Results와 Aggregate Report에서도 확인가능하다.
  2. 요청 성공 여부 - View Results In Table의 4번째 칼럼의 요청에 대한 응답여부로 요청이 성공적으로 응답을 받았는지에 대한 값이다. 그림에서 보이는 값에 한해서는 모든 요청이 성공했다.
  3. deviation - Graph Results에서 보여지는 값의 중요한것은 deviation이다. 이 값은 각각의 응답시간과 평균 응답시간과의 차이의 합이다. 즉 이값은 요청에 대한 응답시간이 길고 짧음을 보기위한 값이 아니라 얼마나 요청에 대한 응답시간이 일정한가 또는 얼마나 안정적인가를 보기위한 값이다. 모든 요청이 평균응답시간과 비슷한 값의 응답시간을 가진다면 이 값은 작은값을 가질것이고 각각의 요청에 대한 응답시간이 불안정하다면 결국에 이 값은 굉장히 큰 값을 가지게 될것이다.
  4. 서버 최대 처리량 - 서버가 처리할수 있는 최대량은 그래프를 볼때 녹색의 선이 증가를 하다가 더이상 증가하지 못하고 떨어지는 시점의 직전값이다. 즉 이 테스트에서 10개의 쓰레드로 50번의 루프를 돌렸으나 사실 서버가 처리할수 있는 양은 그것보다 좀더 높다는 것을 단적으로 보여주고 있다.
  5. error율 - Aggregate Report에서 error율은 모든 요청에 대한 정상적인 응답을 받지못한 요청의 비율이다.
  6. 요청및 응답 데이터 - View Results Tree에서는 각각의 요청에 대한 요청데이터와 응답데이터를 보여준다. 요청데이터가 원하는 형태로 가는지 응답된 데이터가 원하는 형태의 값인지 체크하여. 단순한 요청및 응답에 대한 시간적인 면이나 안정성만을 테스트하지 않고 값에 대한 유효성도 함께 체크가능하다.

결론

사실 Jmeter가 해주는 스트레스 테스트 형태의 로드 테스트는 웹 애플리케이션의 성능을 정확하게 측정해주는것은 아니다. 하지만 고객에게 간단한 성능테스트 결과를 제시하거나 프로그램간의 성능 테스트를 위한 도움이 될만한 형태의 결과물을 제시해주는건 모두가 인정할듯하다.
사실 Jmeter가 제공하는 기능은 이외에 굉장히 많은 편이다. SQL문을 던져서 실제 데이터베이스의 결과물을 반환하는 형식의 테스트도 가능하고 특정 시나리오를 구성해 그 시나리오데로. 테스트 데이터를 사용자에게 던져줄수도 있다.
추가적인 기능에 대해서는 추후에 필자가 이 문서를 업그레이드 하는 방향으로 하겠다.


이동국님 좋은 자료 감사드립니다. 이번 스터디에서 유용하게 사용하도록 하겠습니다.

우선 장소가 확보되면 더 많은 분들이 참석할 수 있을거 같기도 한데요..너무 많으면 스터디가 원할하지 않을거 같아서 어떻게 해야될지는 모르겠습니다.

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.