[Load Test]Apache JMeter User's Manual - 4. Building a Web Test Plan

2018. 4. 20. 14:25OS/개발환경구축

매번 설치해서 테스트를 해보겠다 해보겠다 했는데, 자꾸 미뤄서, 이번 테스트 할때를 기회삼아서,
jMeter에 대해서 설치부터 전체적인 테스트 플랜 짜는 것과 JMeter 구동하는 것까지 전체적으로 정리를 해보도록 합니다.
reference가 잘 나와 있기 때문에, 발!!! 번역을 하면서 하나씩 테스트 해보도록 합니다. 



4. Building a Web Test Plan

웹 사이트를  테스트 하는데 사용되는 기본 테스트 플랜을 어떻게 생성하는지를 배워보는 섹션입니다.
JMeter Web site상에 두개의 페이지를 요청하는 것을 보내는 다섯 유저를 생성할 겁니다.
이 테스트들을 두번씩 실행하라고 사용자에게 전달 할겁니다.
그래서 요청에 대한 전체 숫자는 (5 users) X (2 requests) X (repeat 2 times) = 20 HTTP requests 가 되겠네요
테스트 플랜을 구성하기 위해서, 여러분은 아래 구성요소를 사용할 것 입니다.
Thread Group , HTTP request, HTTP request defaults, graph results

좀 더 고급설정의 테스트 플랜에 대한 부분은 Building an Advanced Web Test plan을 참고하시면 되겠사옵니다.

4.1. Addding Users

모든 JMeter  테스트 플랜에서  여러분이 하고자 하는 첫번째 단계는 Thread Group을 추가하는 것입니다.
이 Thread Goup은 Jmeter에게 여러분이 시뮬레이션 하고자 하는 사용자 숫자을 전달하는 역활을 합니다.
어느 빈도로 사용자가 requests를 보내야 하는지 그리고 얼마나 많은 요청들을 그들에게 보내야 하는지를.

가서, 테스트 플랜을 첫번째로 선택함으로 ThreadGroup 요소를 추가하시면 됩니다.
Add menu을 보기 위해선 마우스 오른쪽 버튼을 클릭하고, Add-> ThreadGroup 을 선택합니다.

테스트 플랜 아래 Thread group을 볼수 있어야 합니다.
만약 안보이면, 트리메뉴의 expend을 보시길 바랍니다.

다음,  기본 프로퍼티를 수정해야 합니다.
트리에서 Thread Group을 선택합니다.
Thread Group Control panel 을 보시길 바랍니다.





Name 에 JMeter users 라고 입력합니다.
다음 the number of users (called thread)  에 5로 증가 시킵니다.

다음필드는 Ramp-Up Period 은 1 초 기본 값으로 둡니다.
이 프로퍼티는 Jmeter에게 각각의 사용가 시작사이에 얼마동안 지연할지를 전달합니다.
예를 들어 Ramp-Up Period를 5초로 두면, JMeter는 5초후에 여러분의 모든 User의 시작을 끝낼것입니다.
그래서, 5 유저와 5초 Ramp-Up Period를 세팅하면, 유저들간의 시작 사이의 지연시간은 1초가 될 것입니다.
(5 Users / 5 seconds = 1 user per second).
만약 값은 0으로 세팅하면, JMeter는 모든 유저는 즉시 시작할것입니다.

최종적으로 Loop Count field에 2의 값을 입력합니다.
이 프로퍼티는 JMeter에 여러분의 테스트를 얼마만큼 반복할 것인지를 전달합니다.
1을 입력하면, JMeter은 딱 한번만 실행하겠죠.
JMeter가 테스트 플랜을 반복적으로 실행하는 것을 얻기 위해서는, foreveer 체크박스를 체크하시면 됩니다.

대부분 어플리케이션에서, 여러분은 컨트롤 페널에서 변경한 내용을 수동으로 적용해야 합니다.
하지만, Jmeter에서는 컨트롤 페널은 자동으로 반영됩니다.
만약 구성요소의 이름을 변경하면,  트리는 새로운 이름으로 업데이트됩니다.
(예를들어, 다른  트리 요소를 선택했을때 )



4.2. Adding Default HTTP Request Properties

유저를 지금까진 정의했고, 이젠 동작하는 테스크를 정의하는 시간입니다.
이섹션에서는 여러분의 HTTP requests에 대한 기본 설정들을 명시할것입니다.
그리고 4.3에서, 여러분이 여기에 명시해 놓은 기본 설정 값의 일부를 사용하는 HTTP Request 구성요소를 추가 할것입니다.

JMeter Users 구성요소를 선택하세요.
마우스 오른쪽 클릭해서, Add menu 를 선택하시고, Add-> Config Element -> HTTP Request Defaults를 선택하세요.
컨트롤 패널을 보기 위해 새로운 구성요소를 선택하세요. 




대부분의 JMeter 구성요소와 같이 수정할수 있는 이름필드를 가지고 있습니다.
이 예제에서는 기본값을 그대로 둘겁니다.

웹 서버의 서버 Name/IP가 있는 다음 필드로  스킵합니다.
여러분이 구축할 테스트 플랜에 대해서, 모든 HTTP request는 같은 웹 서버, jmeter.apache.org로 보낼겁니다.
필드 안에 도메인 이름을 입력하세요.
기본을 명시할 필드입니다. 그래서 기본값을 두고 오세요.

HTTP Request Defautls 구성요서는 Jmeter에게 HTTP request를 보내라고 전달하지 않습니다.
그건 단순히 HTTP Request 요소를 사용하고 있는 기본값을 정의한것입니다.



4.3. Adding Cookie support

거의 모든 웹 테스트들은 쿠키 지원을 사용해야 합니다. 여러분의 어플리케이션이 특별하게 쿠키를 사용하고 있지 않더라도 말이죠
cookies support를 추가하기 위해서, 위에서 했던대로, cookie Manager를 추가합니다.
각각의 스레드가 자신만의 쿠키들을 갖는 것을 확실하게 할 것입니다.
하지만 모든 HTTP Request 객체들 간에 공유됩니다.
뭐  다른 건 할것 없습니다.




4.4 Adding HTTP Requests

우리 테스트 플랜에서, 두개의 HTTP request를 만들어야 합니다.
첫번째건, JMeter home page(http://jmeter.apache.org/)에 대한 것이고,
두번째것은  change 페이지(http://jmeter.apache.org/changes.html) 입니다.

JMeter는 트리에 나타난 순서대로 요청을 보냅니다.

HTTP Request 을 추가합시다. (Add -> Sampler -> HTTP Request)
그 담에, 트리에 HTTP Request 를 선택해서 다음 프로퍼티를 수정합니다.

(1) Name 필드에 Home page 라고 이름을 변경합니다.
(2) Path 필드에 "/"로 셋업합니다. Server Name 필드에 셋팅하지 말아야 합니다.
    HTTP Request Defaults element 에 값을 이미 명시했기 때문입니다.



다음 Changes 라는 것도 위와 같이 동일하게 만들고, Path 필드에 /change.html 을 넣어 줍니다.




4.5 Adding a Listener to view store the Test Results

여러분의 테스트 플랜에 추가해야하는 최종 구성요소는 Listener 입니다.
이 요소는 한 파일안에서 여러분의 HTTP requests의 결과의 모든 것을 저장하고 데이터의 비주얼 모델을 나타내는 것에 대한 책임을 가지고 있습니다.

Graph Results  listener (Add -> Listener -> Backend Listener) 를 추가합니다.



4.6. Logging in to a web-site

여기에 대한 케이스는 아니지만, 몇몇 웹 사이트들은 확실한 액션을 실행하게 하기 전에 로그인을 요구하는 경우가 있다.
웹 브라이저에서는, 로그인은 user name 과 password과 폼의 submit 하는 버튼에 대한 폼으로 보여질 것입니다.
버튼은 POST request를 생성하고, 폼 아이템의 값들을 파라미터로 전달됩니다.

JMeter에서 이것을 하기 위해서는 HTTP Request를 추가하고, POST로 메소드를 셋업합니다.
여러분은 form에서 사용될 필드의 이름과 타겟 URL을 알아야 합니다. 

로그인 페이지의 코드를 살펴보면 쉽게 찾을수 있습니다. 
만약 이렇게 하기 어려우면 , 로그인 시퀀스를 레코드하기 위해 JMeter Proxy Recorder를 사용할수 있습니다.
submit 버튼의 타겟으로 path을 맞추세요.
Add 버튼을 클릭 두번하고, username 과  password 상세를 채워 넣으세요.
로그인 form은 가끔씩 추가적인 hidden 필드를 포함합니다.
이것도 마찬가지고 추가할 필요가 있겠죠.



다시 돌아와서... 위에 "Building a Web Test Plan"을 통해서 차근차근 따라 해보니 테스트가 가능했다라고 한다.