본문 바로가기

Web

[JMeter] 스트레스 테스트하기 #2.

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
기본적인 HTTP 프로토콜에 대한 스트레스 테스트를 진행하도록 할 것이다.

1. Test Plan에 Thread Group 추가하기.

<그림-1>

Test Plan 에서 Add - > Threads(Users) -> Thread Group 을 클릭한다. 이 과정은 실제로 몇명의 사용자들이 얼마의 시간을 텀을 가지고 몇번을 방문할 것인지에 대한 설정값을 지정하기 위함이다.

우리는 여기서 5명의 사용자가 1초 간격으로 각각 2번씩 방문( 5  X  2 = 10 ) 하기로 결정한다.

<그림-2>

2. Tread Group에 기본적인 HTTP 환경설정하기.

   우선은 HTTP의 공통된 부분에 대한 기본 환경설정을 하기 위하여 HTTP에 대한 Default값을 설정한다. 우리는 여기서 테스트할 HOST를 입력하는 것만으로 설정을 끝낼 것이다. 여기서 설정된 값은 추후 우리가 테스트할 실제 주소들을 등록할 때 가지고 가는 기본 설정값이며 여기서 HOST를 추가하는 것만으로 HTTP Request 테스트 주소에서는 Path 값만 입력함으로써 시간을 단축할 수 있다.

<그림-3>

<그림-4>

여기서 우리는 간단하게 Server Name에 Localhost를 넣고 포트는 8080으로 넣었다. 이것은 현재 테스트할 서버가 로컬에 있는 톰캣서버이기 때문이며 만일 외부에 있는 실제 사이트를 테스트 하고 싶다면 Server Name or IP에 해당 도메인을 입력한다(Ex : www.example.com). Port Number는 80이 Default 이므로 넣지 않아도 된다.

3. 실제로 테스트할 대상 추가하기.

우리는 실제로 테스트할 대상을 추가해야 한다. Http Request Sampler가 그 역할을 할 것이다. 우리는 여기서 메인페이지 (/) 와 /customer/noticeList.do  경로에 대한 테스트를 진행할 것이다.

만일 페이지를 여러개 체크하고 싶다면 HTTP Request Sampler를 동일하게 계속 추가해주면 된다.

<그림-5>

<그림-6>

Name은 테스트할 페이지에 대한 정보를 나타낼것이며 Path에는 실제로 (Host를 제외한. Host는 HTTP Request Default에 이미 지정이 되어있으므로 입력을 안해도 된다.) 우리가 Request할 주소를 입력한다.

다음은 /customer/noticeList.do 에 대한 HTTP 요청 셋팅이다.

<그림-7>

자 그럼 우리가 테스트해야할 주소까지는 등록이 모두 되었다. 그럼 이제 결과를 볼 수 있게 만들자.

4. 결과출력하기.

우리는 결과를 View Results Tree , Summary Report 를 사용하여 결과를 볼 것이다.

<그림-8>

<그림-9>

이 두가지 Listener는 별도로 설정하지 않아도 된다. 등록만 하면 모니터링을 할 때 결과를 출력한다. Graph로 보고 싶다면 Listener에 Graph Results를 보면 된다.

5. 실행하기.

실행에 앞서서 우리는 현재까지 진행했던 과정을 저장해야 한다. 설정에 대한 저장을 완료하였으면 자동으로 테스트를 진행하게 된다.지속적으로 테스트를 진행하기 위해서는 상단 ToolBar에 실행 버튼과 결과값의 Clear를 사용하면 된다.

<그림-9>

다음은 View Results Tree에 대한 결과 값이다.

<그림-10>

결과에 대한 리스트이며 초록색 표시는 Success , 붉은색은 Error가 발생되었을 경우를 나타낸다. 각각의 아이템을 클릭하며 오른쪽에 3개의 탭에 정보를 표시하게 된다. Request Header와 Response Data를 모두 확인할 수 있다.

<그림-11>

Summary Report Listener에서 나온 결과값이다. 해당 컬럼에서 Average , Min , Max 의 값의 단위는 ms 이므로 초단위로 환상하려면 / 1000 을 한다. 응답 시간이므로 낮은게 퍼포먼스가 좋다는 이야기이다.


6. 결론

현재 설정된 기본셋팅으로 대부분의 서버에 대한 테스트는 진행이 가능할 것이다. 하지만, 특별한 테스트 케이스를 작성하기에는 아직 많은 추가적인 설정이 필요하다. 예를 들자면 로그인을 해서 테스트를 진행해야 할 경우 , 특정 Cookie 값이 필요할 경우 , HTTPS 에 대한 접근이 필요할 경우 등등에 대한 테스트 케이스를 직접 만들 수 있다.

웹어플리케이션의 스트레스 테스트등을 진행할 때는 개인적인 생각으로는 반드시 서버의 CPU , I/O 등에 대한 모니터링도 병행해야 할 듯 싶다. 여러가지고 서버의 설정을 변경하면서 테스트를 진행하게 되면 아마도 퍼포먼스 튜닝을 하는데 있어서 좀더 쉽게 할 수 있지 않을까 생각한다.