Jmeter 사용 시, 순차 증가 혹은 일정 크기로 증가하는 Integer를 Parameter등에 활용하기 좋은 Counter Element에 대해 간단히 정리해 보았다.
* 공식 가이드는 링크 를 참고.
Counter Element 추가하기
임의의 Controller > Add > Config Element > Counter
Counter Element의 설정 옵션 정보
- Starting value : 시작 값. 예제에서는 구분이 쉽도록 21부터 증가하는 값으로 설정함. default는 0.
- Increment : 이전 값에서 얼마씩 증가할지에 해당하는 설정 값. 순차 증가를 원하면 1로 설정. default는 0 이므로 설정해주지 않으면 증가하지 않는다.
- Maximum value : 최대 증가할 수 있는 값. 설정을 하게되면 해당 값보다 큰 경우 다시 Start value 부터 시작하고, 설정을 하지 않을 경우 최대 값은 Long 타입의 Maximum 값이 최대값이 된다.
- Format : 설정하지 않을 경우 일반 Integer 형태의 값으로 설정되고, 최소 자릿수를 지정하고 싶은 경우 0을 자릿수 만큼으로 설정한다. 예를 들어, 최소 3자리로 설정하고 싶은 경우 000 으로 설정하면 001, 002, 003, ... 형태로 증가한다.
- Exported Variable Name : 증가하는 Counter Value의 변수명. Counter에서의 Value 값을 사용하기 위한 곳에 이 값을 변수명으로 가져다 사용하게 된다. 예를 들어 _count 라고 지정하게 되면 ${_count} 형태로 변수를 사용한 곳에 value 값으로 치환해 주게 된다.
- Track Counter Independently for each User : Thread(User)를 2개 이상으로 실행하는 경우, Thread 별로 각각 Counter를 독립적으로 사용할지, 공유할지를 결정하는 옵션. 체크할 경우(Example #4) 각 Thread에서 독립적으로 사용하고, 체크하지 않을 경우(Example #3) 공유하게 된다.
- Reset counter on each Thread Group Iteration : "Loop Controller" 가 아닌 경우, 설정 유무에 관계없이 Starting Value만 적용되게 된다. 만약 Loop Controller 에서 이 옵션을 체크하는 경우, 1개 Thread가 실행되어 N번의 Loop를 돌게 되는 경우 1번의 Loop 내에서는 Counter가 동일값을 갖고, 2번째 Loop에서는 Increment 만큼 증가된 값을 갖는다. 단, N번의 Loop가 종료되면 reset 되어 Starting value 부터 다시 시작된다. (Example #5)
Example 기본 설정
- 기본 구성은 Thread 1개가 Request A,B를 순차 요청하는 것을 5번 반복하는 형태로 구성하였다.
- Example #3,4에서는 "Number of Threads (Users)" 값을 2로 증가하여 User 2명이 요청하는 것으로 구성하였다.
- 결과를 확인하기 쉽게 Request Name에서 Thread Number(User Number)와 변수 Counter를 출력하였다.
- Thread Number : ${__threadNum}
- Counter : 위에서 Counter의 Exported Variable Name을 _count로 설정하여 ${_count} 로 설정
Example #1 - 순차 증가
Thread가 1회 실행(1회에 A,B의 2개 Request가 실행됨)될 때마다 1씩 증가하고, 24까지 증가한 후 다시 Starting value인 21로 돌아간다.
Example #2 - 3씩 증가
Thread가 1회 실행될 때마다 3씩 증가하고, 27까지 증가한 후 Maximum value인 28보다 증가할 수 없어 다시 Starting value인 21로 돌아간다.
Example #3 - Thread(User)에서 Counter 공유하기
앞서 Number of Threads (Users) 값을 2로 설정하고, Track counter independently for each user에 체크하지 않았다.
Thread 2개가 번갈아가며 request를 호출하는데, Thread에 관계없이 1회 실행될 때마다 1씩 증가한다.
Example #4 - Thread(User)에서 Counter 독립적으로 사용하기
앞서 Number of Threads (Users) 값을 2로 설정하고, Track counter independently for each user에 체크하였다.
Thread 2개가 번갈아가며 request를 호출하는데, Thread에 따라 각각 Counter가 적용됨을 확인할 수 있다.
Example #5 - Reset counter on each Thread Group Iteration
앞서 Loop Controller의 Loop Count를 3으로 설정
Reset counter on each Thread Group Iteration 를 체크
Thread 1개가 Request A를 총 3번 실행(-> 1 Loop)하는 것을 총 5번 반복하는데, 1 Loop인 3번의 실행 후에 counter가 reset되어 다시 Starting value로 돌아감을 확인할 수 있다.
< 심화 과정(?) >
Example #6 - Number format으로 float(0.00) 처리하기
- 나이스(?)한 방법은 아니지만, Counter는 integer를 기준으로 처리하다보니 아래와 같은 형태로 prefix text를 붙여서 사용하는 방법
- 아래와 같이 설정하면 아래의 순서대로 변수값이 변화한다.
0.08
0.09
0.10
0.11
...
'Engineering > Jmeter, Postman' 카테고리의 다른 글
[jmeter][beanshell sampler] beanshell sampler에서 stdout 값을 저장하여 response assertion 추가하기 (0) | 2023.07.02 |
---|---|
jmeter : Windows CMD 또는 Linux Command 로 실행하기 (0) | 2022.07.03 |
Postman : GraphQL query 요청하기 (0) | 2022.02.27 |
django admin API를 활용하여 postman에서 API 호출하기 (feat. csrfmiddlewaretoken) (2) | 2021.10.18 |
Postman : HTTP responsebody를 parsing하여 연속된 Request의 parameter로 사용하기 (0) | 2021.07.11 |
댓글