프로젝트 기록/기타

[Postman] RestAPI 자동화 테스트

코딩 코딩 코오딩 2024. 2. 12. 10:50

😀 이 글을 작성하게 된 이유


  • 현재 진행하는 프로젝트에서 JWT 토큰을 사용하고 있다.
  • 매번 인증 받은 토큰 값을 Ctrl + c + v 를 하는 데 불편함을 느낌
  • 다른 자동화 방법이 없을까?

 

이러한 플로우로 문제를 해결하기 위해 찾아 보았다.
역시, 나만의 문제가 아니였고 다른 사람들도 이런 점에 있어서 불편함을 느끼고 있었다.
따라서, 개발의 생산성을 올릴 수 있는 자동화 방법을 찾게 되었고, 지금 정리를 하게 되었다.

 

 

😀 시작전 Postman


일단 정리 시작 전 포스트맨을 사용해서 RestAPI Test 자동화를 진행 할 것이다.
https://www.postman.com/downloads/

Postman 은 가장 유명한? Rest API 테스트 툴이다.
사용법을 알아두면 편하니 꼭 숙지해두자.

 

 

😀 Postman RestAPI Test 자동화 시작 전 설명


 

일단 나의 테스트 자동화의 flow 이다. 이런 작업을 일일이 하나 씩 옮겨가면서 진행하게 되면, 중간에 실수를 할 가능성도 높고 정말 많은 피로도를 요구해서 개발의 생산성 에 많은 영향을 주는 것을 느꼈다.

 

방법을 알려주기 전 내가 진행하는 프로젝트에 사용되는 HttpMethod 에 대해서 설명해 보겠다.

  1. POST 로그인 테스트 일반적으로 로그인 요청을 한다. 이때 JWT 토큰을 발급해주고 여기서 만들어진 토큰 값(accessToken, refreshToken)이 이후에 진행되는 모든 과정에 필요하다.
  2. PATCH 회원 정보 수정 accessToken 이 있는 회원만 접근 가능하다. 1. POST 로그인 테스트 과정에서 만들어진 토큰이 자동? 으로 들어 갈 수 있게 설정을 해야 한다.
  3. POST plan 등록 테스트 이건 accessToken 값만 필요하므로 2번 과정과 동일하다.
  4. POST 친구 요청 이 과정은 중요하다. 여기서 친구 요청을 보내게 된다면 생성되는 친구 요청에 대한 ID 가 생성되는데 이때 또 친구 요청에 대한 ID 를 저장해서 자동화에 사용 해야한다.
  5. POST 친구 요청 승인 친구 요청에 대한 ID 값을 받아서 친구 요청 승인을 한다.
  6. DEL 로그아웃 이때는 1. POST 로그인 테스트 에서 생성된 refreshToken 값을 지워야 하기 때문에 refreshToken 을 또 따로 저장을 해둬야 한다.

 

여기서 이제 본격적인 설명 전 알고 있어야 할 용어가 있다.

 

  • 환경 변수
    내가 사용할 환경에서 사용할 변수라는 것 이다. 따라서 자동화에 활용할 수 있다.

 

  • JWT
    • refreshToken, accessToken 이 어떤 경우에 사용되는지는 알고 있어야 내가 진행한 방법이 이해가 될 것이다. (알고 있으면 좋은 개념이니 알고 있자)

 

😀 Postman RestAPI Test 자동화 세팅


 

일단, 정말 시작전 기본적인 Postman 셋팅 사용법은 꼭 알아야한다. (여기서는 설명 안하기 위해)

 

  1. 일단 내가 테스트 하고 싶은 Request 를 모으기 위한 Colletion 을 만들자.

  1. 내가 테스트 하고 싶은 Rest API Request 를 모으자. 나는 위에 설명한 request 들을 모았다.

  1. 다음은 환경 변수 설정이다.
    아래 이미지와 같이 Environments 가 있다. 여기에서 내가 설정한 환경 변수를 보관 할 수 있다.

  • 환경 변수를 만들게 되면 환경 변수를 모아 둘 수 있는 환경이 만들어지게 된다.
  • 내가 만들어둔 환경은 이름을 token 이라 해두었고 사용할 환경 변수들의 이름을 각각
    token, refreshToken, friendshipId 라 설정을 해두게 되었다.
  • 이제 여기서 설정해둔 환경 변수에 우리가 원하는 값들이 들어가게 될 것이다.
  • 그리고 정말 중요한 건데 SAVE 를 꼭 해야한다. 만약에 안하면 왜 변수 값들이 안들어오지? 하는 경험을 할 수 있다.

그리고 우리가 사용할 환경을 방금 만들어둔 환경인 token 으로 변경하고 진행해야 한다.

이제 기본적인 세팅은 끝났다.

아래의 flow 에 따라 설명을 진행하겠다.
여기부터는 간단한 코드가 들어가니 약간의 이해가 필요하다.

 

 

  • http://localhost:8080/member/login 을 요청하면 아래와 같은 JSON 응답 값을 받는다.
{
    "email":"아무 값을 넣은 것 입니다.",
    "memberRole":"아무 값을 넣은 것 입니다.",
    "accessToken":"아무 값을 넣은 것 입니다.",
    "refreshToken":"아무 값을 넣은 것 입니다."
 }
  • 나는 여기서 accessToken ,refreshToken 값이 필요하다.

 

  1. 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 값을 환경 변수에 저장 할 수 있다.

그러면 이 값이 어떤 방식으로 사용 하는 건지 대한 의문이 생길 수 있다.

이제 알아보면 된다.

 

  1. PATCH 회원 정보 수정 accessToken 이 있는 회원만 접근 가능하다. 1. POST 로그인 테스트 과정에서 만들어진 토큰이 자동? 으로 들어 갈 수 있게 설정을 해야 한다.
    • 개발을 하다 보면 모든지 마법처럼 이루어지는 건 없는 거 같다 우리가 설정한 환경 변수를 설정해 주어야 사용할 수 있다.
    • 나는 토큰 값을 사용해 인가를 하려는 거기 때문에 Token 에 {{token}} 을 넣어주면 내가 사용하고 있는 테스트에 전역적으로 값이 적용된다.

  1. POST plan 등록 테스트 이건 accessToken 값만 필요하므로 2번 과정과 동일하다.
    • 이 부분은 위와 같이 설정하면 되기 때문에 동일하게 하면 된다.
  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}} 값은 계속 설정해줘야 한다.
  • 전역적으로 설정해주는 게 있는데 내가 진행한 프로젝트 환경에서는 적용이 안되고 있다;;

 

  1. POST 친구 요청 승인 친구 요청에 대한 ID 값을 받아서 친구 요청 승인을 한다.
    • 이제 승인인데 {{friendshipId}} 를 설정해두면 Body 에도 보낼 수 있고, URL 에도 담아서 요청할 수 있다.

 

  1. DEL 로그아웃 이때는 1. POST 로그인 테스트 에서 생성된 refreshToken 값을 지워야 하기 때문에 refreshToken 을 또 따로 저장을 해둬야 한다.
    • 첫 로그인 때 저장해둔 refreshToken 환경 변수 값을 이때 사용해서 Body 에 담아 요청하면 사용할 수 있다.

 

😀 Postman RestAPI Test 자동화 시작

  • 위에 표시해둔 run 을 클릭하면, 아래와 같이 Run Collection 이 존재하고 클릭한다.

  • Run 콜렉션 이름을 누르게 되면 아래와 같이 잘 작동한다.
  • 만약에 에러가 난다면 환경 변수 설정이 잘 안된거니 다시 확인 바란다.

  • 참고로 다시 환경 변수 설정에 들어가 보면 내가 설정한 변수에 요청한 값들이 들어가게 된다.

이렇게 작업을 하게 되면서 개발의 생산성을 늘릴 수 있었다.
단순한 반복 작업을 줄이게 되고 작업이 Rest API Test 를 할 수 있다.
세부 기능도 있지만 더 필요한 작업이 있다면 개인적으로 찾아보길 바란다.

 

 

 

 

 

참고 블로그

-------

 

https://berom.tistory.com/438

 

Postman Token 값 자동 갱신

Intro. Token 복사하기가, 귀찮다 🐥 카카오 테크 캠퍼스 - 2단계 5주차 강의 요약 후 Postman 테스트를 하는데, 로그인 할 때마다 Token을 복사하는게 너무 귀찮았다 이런거 이미 만들어져 있을거 같은

berom.tistory.com

https://inpa.tistory.com/entry/POSTMAN-%F0%9F%92%BD-%ED%8F%AC%EC%8A%A4%ED%8A%B8%EB%A7%A8-%EC%82%AC%EC%9A%A9%EB%B2%95-API-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%9E%90%EB%8F%99%ED%99%94-%EA%B3%A0%EA%B8%89-%ED%99%9C%EC%9A%A9%EA%B9%8C%EC%A7%80

 

💽 POSTMAN 사용법 - API 테스트 자동화 고급 활용까지

포스트맨 (POSTMAN) POSTMAN은 API를 개발, 테스트, 공유 및 문서화하는 데 사용되는 API 클라이언트 이다. 엔드 포인트 URL을 입력하는 테스트에 사용되며 서버로 요청을 보내고 서버에서 응답을 받아 a

inpa.tistory.com

 

 

반응형