개발

JMeter : json extractor - 첫번째 API에서 리턴한 값을 두번째 API에 파라미터로 넘기기

플리트우드 2021. 12. 16. 21:58

첫 번째 api에서 리턴한 값을 두 번째 api에 파라미터로 넘겨주고, 두 번째 api에서 리턴한 값은 세 번째 api에 넘겨줘야하는 상황.

 

JMeter의 기본적인 사용법은 생략~~

 

1. 구조

2. thread group 

10명의 (테스트)유저를 0초마다 유이~땅!시킬 것이다. 

 

이렇게 하면

(쓰레드1의 api1 수행 - 쓰레드1의 api2 수행 - 쓰레드1의 api3 수행 끝) 

-> (쓰레드2의 api1 수행 - 쓰레드2의 api2 수행 - 쓰레드2의 api3 수행 끝)

... 의 순서로 차곡차곡 굴러가는 게 아니고, 각각의 쓰레드(유저)가 api1-> api2 ->api3 순서대로 타는 것만 지켜진다. 뭔 말인지는 실행 결과를 보면 알 수 있다. 

 

3. simple controller

 

4. http request - API1

로컬에다가 쏠 것이다. 

 

요 첫 번째 api 에서 리턴하는 json은 다음과 같다고 하자. 

http://json.parser.online.fr/

 

여기서 첫 번째 email과 memberId인 test1@test.com, 1을 api 2에 전달하려면 어떻게 해야할까? 

 

5. json extractor

점 두 개임에 주의..

..점 두 개임

 

이제 email, memberId라는 변수를 가지고 이어서 호출할 api에 사용할 수 있다. email은 api2에, memberId는 api3에 쓸 것이다.

 

6. http header manager

나같은 경우 api1를 실행하려면 관리자의 권한이 필요해서 추가했다. 필요없으면 컨텐츠타입만 지정해주자

 

7. http request - API2

requestBody에 ${email}을 넘겨준다.

 

그리고 api2에서 리턴하는 json은 다음과 같다고 하자

여기서 api 3에 보낼 token을 뽑으려면 어떻게 해야할까? 

 

8. json extractor

 

점 한 개임.

왜 아까는 두 개고 지금은 한 개일까...는 응답 json의 생김새를 보면 감이 올 것이다. 

이제 token이라는 변수도 다음 api에 넘겨줄 수 있다. 

 

9. http request - API3

api1에서 뽑은 memberId를 쓰고 있다. 그럼 token은 어디서 쓸거냐고?

 

10. http header manager

api 3의 request header에 쓸 거였음~

 

11. http cookie manager

쿠키 클리어 옵션을 체크한다. 쓰레드들이 각자 다른 토큰을 써야 하니까  

 

그리고 실행~

 

12. view result tree

실행결과의 호출순서를 보면

2번에서 ramp-up-period를 0으로 설정해놓아서, 쓰레드 10개가 동시에 api1을 호다닥 시작한 걸 볼 수 있다