이전 글에 이어서 오늘은 JMeter를 사용하여
로그인해서 받아온 토큰값을 Extractor를 사용하여 변수에 저장해서 인증이 필요한 API를 테스트 하는 과정을 연습해보겠습니다.
준비
로그인이 정상정으로 돼야 토큰을 받을 수 있기 때문에 Octoperf에 가입을 한 상태여야 합니다.
테스트용 API는 Octoperf에서 제공해주는 swagger UI를 사용합니다.
https://api.octoperf.com/swagger-ui/
로그인 토큰 변수로 저장하기
Swagger로 정상 동작하는지 확인하기
먼저 Swagger에서 로그인에 대한 API인 System - Public Users에 있는
/public/users/login ( Login with username and password ) 에서 Try it out을 눌러 정상적으로 로그인이 되는지 확인합니다.
JMeter로 동일한 결과가 나오도록 작성해주기
정상적으로 로그인 되는지를 확인하였고 이제 JMeter를 켜서 Thread Group과 Sampler를 생성해서 API 내용을 기입해주도록 합니다.
결과를 확인해주기 위해 Listener도 하나달아줍니다.
저는 View Results Tree를 넣어주었습니다.
저처럼 쿼리스트링으로 넣어주셔도 되고 밑에 parameters로 작성해주셔도 됩니다.
실행시켜서 결과가 제대로 넘어오는지 확인해줍니다.
토큰값 추출하기
이제 넘어온 토큰을 추출해야 합니다.
JSON형식으로 넘어온 데이터기 때문에 정상 로그인 아래에 JSON Extractor를 생성해주고 아래와 같이 기입해줍니다.
Names of created variables: 변수로 사용할 이름
JSON Path expressions: JSON응답에서 가져올 데이터의 경로 표현식
Match No. (0 for Random): -1은 전부, 0은 랜덤, n은 n번째값
Compute concatenation var (suffix_ALL): 모든 추출값의 연결을 포함하는 값
Default Values: 찾지 못했을 때의 기본값
Path expressions
여기서 Response된 데이터에 변수에 담을 값이 어디에 위치해 있는지를 적는 Path expressions를 작성하셔야 하는데 아래 예제를 참고 하시면 됩니다.
{
"store": {
"book": [
{
"category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{
"category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
},
"expensive": 10
}
JSONPATH (CLICK LINK TO TRY)RESULT
$.store.book[*].author | The authors of all books |
$..author | All authors |
$.store.* | All things, both books and bicycles |
$.store..price | The price of everything |
$..book[0,1] | The first two books |
$..book[:2] | All books from index 0 (inclusive) until index 2 (exclusive) |
$..book[2:] | Book number two from tail |
$..book[?(@.isbn)] | All books with an ISBN number |
$.store.book[?(@.price < 10)] | All books in store cheaper than 10 |
$..book[?(@.price <= $[‘expensive’])] | All books in store that are not “expensive” |
$..book[?(@.author =~ /.*REES/i)] | All books matching regex (ignore case) |
$..* | Give me every thing |
$..book.length() | The number of books |
변수가 잘 저장되었는지 확인하기
변수가 잘 저장되었는지 확인하기 위해 Debug Sampler를 생성해줍니다.
아래와 같이 JMeter variables를 True로 해주셔야 JMeter에 저장된 모든 변수들을 확인할 수 있습니다.
실행을 시켜보면 Listener에 값이 잘 저장되어있는 걸 확인하실 수 있습니다.
로그인이 필요한 API 테스트 하기
이제 저장된 변수를 사용하여 Header값에 Authorization값으로 토큰을 넘겨주어야만 동작하는 API를 테스트 해보겠습니다.
Workspaces에서 로그인한 유저의 모든 workspace의 list를 가져오는 /workspaces/member-of에 대한 Http request를
Jmeter에 생성해줍니다.
이전에 저장했던 변수를 사용하려면 ${변수명}을 사용하시면 됩니다.
Authroization의 value를 이전에 저장한 토큰인 ${token}을 넣어줍니다.
실행시켜보면 토큰값이 정상적으로 전달 되는것을 확인할 수 있습니다.
참고자료
'Test' 카테고리의 다른 글
JMeter로 REST API 자동 테스트하기4 (0) | 2021.07.02 |
---|---|
JMeter로 REST API 자동 테스트 하기3 (0) | 2021.06.28 |
JMeter로 REST API 자동 테스트 하기1 (0) | 2021.06.22 |