[Postman] RestAPI 자동화 테스트
😀 이 글을 작성하게 된 이유
- 현재 진행하는 프로젝트에서 JWT 토큰을 사용하고 있다.
- 매번 인증 받은 토큰 값을 Ctrl + c + v 를 하는 데 불편함을 느낌
- 다른 자동화 방법이 없을까?
이러한 플로우로 문제를 해결하기 위해 찾아 보았다.
역시, 나만의 문제가 아니였고 다른 사람들도 이런 점에 있어서 불편함을 느끼고 있었다.
따라서, 개발의 생산성을 올릴 수 있는 자동화 방법을 찾게 되었고, 지금 정리를 하게 되었다.
😀 시작전 Postman
일단 정리 시작 전 포스트맨을 사용해서 RestAPI Test 자동화를 진행 할 것이다.
https://www.postman.com/downloads/
Postman 은 가장 유명한? Rest API 테스트 툴이다.
사용법을 알아두면 편하니 꼭 숙지해두자.
😀 Postman RestAPI Test 자동화 시작 전 설명
일단 나의 테스트 자동화의 flow 이다. 이런 작업을 일일이 하나 씩 옮겨가면서 진행하게 되면, 중간에 실수를 할 가능성도 높고 정말 많은 피로도를 요구해서 개발의 생산성
에 많은 영향을 주는 것을 느꼈다.
방법을 알려주기 전 내가 진행하는 프로젝트에 사용되는 HttpMethod 에 대해서 설명해 보겠다.
POST 로그인 테스트
일반적으로 로그인 요청을 한다. 이때 JWT 토큰을 발급해주고 여기서 만들어진 토큰 값(accessToken, refreshToken)이 이후에 진행되는 모든 과정에 필요하다.PATCH 회원 정보 수정
accessToken 이 있는 회원만 접근 가능하다.1. POST 로그인 테스트
과정에서 만들어진 토큰이 자동? 으로 들어 갈 수 있게 설정을 해야 한다.POST plan 등록 테스트
이건 accessToken 값만 필요하므로 2번 과정과 동일하다.POST 친구 요청
이 과정은 중요하다. 여기서 친구 요청을 보내게 된다면 생성되는 친구 요청에 대한 ID 가 생성되는데 이때 또 친구 요청에 대한 ID 를 저장해서 자동화에 사용 해야한다.POST 친구 요청 승인
친구 요청에 대한 ID 값을 받아서 친구 요청 승인을 한다.DEL 로그아웃
이때는1. POST 로그인 테스트
에서 생성된refreshToken
값을 지워야 하기 때문에refreshToken
을 또 따로 저장을 해둬야 한다.
여기서 이제 본격적인 설명 전 알고 있어야 할 용어가 있다.
- 환경 변수
내가 사용할 환경에서 사용할 변수라는 것 이다. 따라서 자동화에 활용할 수 있다.
- JWT
- refreshToken, accessToken 이 어떤 경우에 사용되는지는 알고 있어야 내가 진행한 방법이 이해가 될 것이다. (알고 있으면 좋은 개념이니 알고 있자)
😀 Postman RestAPI Test 자동화 세팅
일단, 정말 시작전 기본적인 Postman 셋팅 사용법은 꼭 알아야한다. (여기서는 설명 안하기 위해)
- 일단 내가 테스트 하고 싶은 Request 를 모으기 위한 Colletion 을 만들자.
- 내가 테스트 하고 싶은 Rest API Request 를 모으자. 나는 위에 설명한 request 들을 모았다.
- 다음은 환경 변수 설정이다.
아래 이미지와 같이 Environments 가 있다. 여기에서 내가 설정한 환경 변수를 보관 할 수 있다.
- 환경 변수를 만들게 되면 환경 변수를 모아 둘 수 있는 환경이 만들어지게 된다.
- 내가 만들어둔 환경은 이름을 token 이라 해두었고 사용할 환경 변수들의 이름을 각각
token, refreshToken, friendshipId 라 설정을 해두게 되었다. - 이제 여기서 설정해둔 환경 변수에 우리가 원하는 값들이 들어가게 될 것이다.
- 그리고 정말 중요한 건데 SAVE 를 꼭 해야한다. 만약에 안하면 왜 변수 값들이 안들어오지? 하는 경험을 할 수 있다.
그리고 우리가 사용할 환경을 방금 만들어둔 환경인 token 으로 변경하고 진행해야 한다.
이제 기본적인 세팅은 끝났다.
아래의 flow 에 따라 설명을 진행하겠다.
여기부터는 간단한 코드가 들어가니 약간의 이해가 필요하다.
http://localhost:8080/member/login
을 요청하면 아래와 같은 JSON 응답 값을 받는다.
{
"email":"아무 값을 넣은 것 입니다.",
"memberRole":"아무 값을 넣은 것 입니다.",
"accessToken":"아무 값을 넣은 것 입니다.",
"refreshToken":"아무 값을 넣은 것 입니다."
}
- 나는 여기서
accessToken
,refreshToken
값이 필요하다.
- POST 로그인 테스트 일반적으로 로그인 요청을 한다. 이때 JWT 토큰을 발급해주고 여기서 만들어진 토큰 값(accessToken, refreshToken)이 이후에 진행되는 모든 과정에 필요하다.
- 여기서 만들어진 API 에 Tests 를 클릭하고 들어오면 코드를 입력하는 창이 나온다.
- 참고로 코드는 JavaScript 로 구성 되어있다.
- 응답 코드가 200 이면 아래의 값들을 환경 변수에 저장한다는 것이다.
if (pm.response.code ==200){
//여기서 나타내는 pm 은 `Postman` 을 나타낸다.
//위의 응답 값중 키 값이 accessToken 인 값을 변수에 넣고
var token = pm.response.json().accessToken;
// 환경 변수 'token' 에 var token 값을 넣는다.
pm.environment.set('token',token);
// 여기는 위와 같다. 키 값이 refreshToken 인 값을
var refreshToken = pm.response.json().refreshToken;
// 'refreshToken' 환경 변수에 넣어준다.
pm.environment.set('refreshToken',refreshToken)
}
이렇게 하면 우리가 원하는 token
, refreshToken
값을 환경 변수에 저장 할 수 있다.
그러면 이 값이 어떤 방식으로 사용 하는 건지 대한 의문이 생길 수 있다.
이제 알아보면 된다.
PATCH 회원 정보 수정
accessToken 이 있는 회원만 접근 가능하다.1. POST 로그인 테스트
과정에서 만들어진 토큰이 자동? 으로 들어 갈 수 있게 설정을 해야 한다.- 개발을 하다 보면 모든지 마법처럼 이루어지는 건 없는 거 같다 우리가 설정한 환경 변수를 설정해 주어야 사용할 수 있다.
- 나는 토큰 값을 사용해 인가를 하려는 거기 때문에 Token 에
{{token}}
을 넣어주면 내가 사용하고 있는 테스트에 전역적으로 값이 적용된다.
POST plan 등록 테스트
이건 accessToken 값만 필요하므로 2번 과정과 동일하다.- 이 부분은 위와 같이 설정하면 되기 때문에 동일하게 하면 된다.
POST 친구 요청
이 과정은 중요하다. 여기서 친구 요청을 보내게 된다면 생성되는 친구 요청에 대한 ID 가 생성되는데 이때 또 친구 요청에 대한 ID 를 저장해서 자동화에 사용 해야한다.- 이 부분도 인가 부분은 동일하게 진행한다.
- 하지만, 나는 여기서 응답으로 만들어진
friendshipId
가 필요하다.
- 참고로 201 은
HttpStatus.CREATED
의 값이다. - 말 그대로 제대로 생성이 되고 응답이 되었다면,
friendshipId
환경 변수에 응답으로 나온 값을 저장하라는 코드이다. if (pm.response.code ==201){ var friendshipId = pm.response.json().friendshipId; pm.environment.set("friendshipId",friendshipId); }
- 어느 순간 설명 안했는데 {{token}} 값은 계속 설정해줘야 한다.
- 전역적으로 설정해주는 게 있는데 내가 진행한 프로젝트 환경에서는 적용이 안되고 있다;;
POST 친구 요청 승인
친구 요청에 대한 ID 값을 받아서 친구 요청 승인을 한다.- 이제 승인인데
{{friendshipId}}
를 설정해두면 Body 에도 보낼 수 있고, URL 에도 담아서 요청할 수 있다.
- 이제 승인인데
DEL 로그아웃
이때는1. POST 로그인 테스트
에서 생성된refreshToken
값을 지워야 하기 때문에refreshToken
을 또 따로 저장을 해둬야 한다.- 첫 로그인 때 저장해둔
refreshToken
환경 변수 값을 이때 사용해서 Body 에 담아 요청하면 사용할 수 있다.
- 첫 로그인 때 저장해둔
😀 Postman RestAPI Test 자동화 시작
- 위에 표시해둔 run 을 클릭하면, 아래와 같이
Run Collection
이 존재하고 클릭한다.
- Run 콜렉션 이름을 누르게 되면 아래와 같이 잘 작동한다.
- 만약에 에러가 난다면 환경 변수 설정이 잘 안된거니 다시 확인 바란다.
- 참고로 다시 환경 변수 설정에 들어가 보면 내가 설정한 변수에 요청한 값들이 들어가게 된다.
이렇게 작업을 하게 되면서 개발의 생산성을 늘릴 수 있었다.
단순한 반복 작업을 줄이게 되고 작업이 Rest API Test 를 할 수 있다.
세부 기능도 있지만 더 필요한 작업이 있다면 개인적으로 찾아보길 바란다.
끝
참고 블로그
-------
Postman Token 값 자동 갱신
Intro. Token 복사하기가, 귀찮다 🐥 카카오 테크 캠퍼스 - 2단계 5주차 강의 요약 후 Postman 테스트를 하는데, 로그인 할 때마다 Token을 복사하는게 너무 귀찮았다 이런거 이미 만들어져 있을거 같은
berom.tistory.com
💽 POSTMAN 사용법 - API 테스트 자동화 고급 활용까지
포스트맨 (POSTMAN) POSTMAN은 API를 개발, 테스트, 공유 및 문서화하는 데 사용되는 API 클라이언트 이다. 엔드 포인트 URL을 입력하는 테스트에 사용되며 서버로 요청을 보내고 서버에서 응답을 받아 a
inpa.tistory.com