Postman 은 백엔드 공부를 하면서 많이 사용해보았으나, 단순히 요청 / 응답을 확인하기 위해 수동으로 실행했었다.
오늘은 테스트 자동화를 구축하기 위해 Postman 의 Scripts 기능을 사용해보려고 한다!
Postman이란?
Postman 에 대해 ChatGPT 에게 물어보면 다음과 같이 설명해준다.
API 개발, 테스트, 문서화, 모니터링 등을 효율적으로 수행할 수 있는 도구입니다. 주로 REST API와 SOAP API 테스트에 사용되며, 직관적인 UI를 통해 API 요청을 생성하고 응답을 분석할 수 있습니다. 또한, Postman은 API 테스트 자동화 기능을 제공하여 효율적인 API 개발 및 유지보수를 지원합니다.
API 테스트 자동화를 위해서는 Scripts 와 Collection Runner 기능을 이용하면 된다.
오늘은 그 중 Scripts 를 사용할거다.
Scripts
javascript 를 이용해 코드를 작성해 API 응답에 대한 테스트를 자동화할 수 있다. 요청 변수관리 및 응답의 상태코드, 응답데이터 검증 등이 가능하다.
이런 기능은 백엔드, 프론트엔드 개발자가 담당하는 테스트코드와 비슷한 기능을 한다.
Request 전 pre-request script 를 통해 요청헤더에 값을 추가하거나, 환경변수를 설정하거나 설정된 값을 확인, 제거하거나 등의 행동이 가능하다. 이를 통해 각 케이스별로 변수를 새롭게 관리할 수 있다.
요청에 대한 Response 를 받으면 post-response script 를 통해 응답코드를 확인하거나, 응답데이터 검증을 진행할 수 있다.
설치 및 실행
공식 홈페이지인 https://www.postman.com/downloads/ 에 들어가 본인 운영체제에 맞는 설치파일을 다운로드하자.
설치완료 후 로그인까지 진행했다. (필수는 아니다)
테스트용 API
우선 테스트할 API 가 있어야하니 무료 API 중 하나인 https://thecatapi.com/ 를 이용해보도록 하자
GET YOUR API KEY 버튼을 눌러 요청 시 필요한 apikey를 발급받고 어딘가에 보관해두어야 한다.
우린 공부용으로만 사용할거기 때문에 무료라이센스를 이용해도 충분하다! Free 를 눌러 진행하자
필요한 정보를 입력한 뒤 SUBMIT 을 눌러 입력한 이메일로 발송된 메일을 통해 APIKEY를 얻을 수 있다.
Collection, Folder, Request
scripts 는 collection, folder, request 마다 작성할 수 있고, 그 순서대로 실행된다.
For every request in a collection, the scripts will always run according to the same hierarchy. Collection-level scripts will run first, then folder-level scripts, and then request-level scripts. This order of execution applies to both pre-request and post-response scripts. (공식문서 발췌)
Collection
여러 개의 API 요청(request)을 그룹화한 집합으로, API 테스트 및 문서화를 위해 요청을 모아 관리할 수 있다.
각 Collection은 관련된 요청들을 함께 묶어, 프로젝트나 특정 기능에 맞춰 구성할 수 있다.
여기서는 TheCatAPI 에 대한 것이 하나의 collection 으로 묶일 수 있겠다.
Folder
Collection 내에서 요청(request)을 더 세분화하기 위한 구조로 요청들을 주제별 또는 기능별로 그룹화하여, 더 체계적으로 관리할 수 있게 해준다.
Collection 안에 여러 개의 Folder를 만들어 계층적으로 조직할 수 있다.
여기서는 TheCatAPI 가 제공하는 Image(사진), breeds(품종) 등으로 묶을 수 있다.
Request
API에 요청을 보내기 위한 구체적인 단위로, 실제 API 엔드포인트에 데이터를 전송하거나 정보를 요청할 때 사용한다.
각 Request에는 HTTP 메서드(예: GET, POST, PUT, DELETE), URL, 헤더, 바디 등의 정보가 포함된다.
여기서는 Image 요청 시 단일조회(GET), 특정리소스조회(GET), 이미지업로드(POST) 등이 있을 수 있다.
직접 사용해보기
Postman 을 실행하고 Collection - Folder - Request 순으로 생성해보자
왼쪽 사이드바에서 Collections 를 클릭 후 + 를 눌러 새로운 Blank Collection을 만든다.
만든 collection 을 우클릭하여 add folder 를 이용해 새로운 폴더를 만들고,
만든 folder 를 우클릭하여 새로운 request 를 만들면 된다.
(The Cat API 는 참고용으로 가져온 것이니 무시해도 된다)
collection, folder, request 이름을 바꿔주고 고양이 품종을 불러오도록 request를 수정해보겠다.
요청 url 을 적어주고 limit, page 파라미터를 넣어주었다.
Send 버튼을 눌러 요청을 보내면 200 OK statusCode 와 함께 응답데이터를 확인할 수 있다.
Pre-request
이제 이 요청에 Pre-request script 를 작성해서
- 서버주소를 환경변수에 저장
- 환경변수로 가져온 서버주소를 이용해 요청
하도록 변경해보자!
생성한 request 의 Scripts 탭을 누르고 Pre-request 로 들어가면 아래처럼 JavaScript로 작성할 수 있는 코드창이 보인다.
직접 작성해도 되지만, 오른쪽의 Snippets 을 이용하면 편리하게 원하는 코드의 형태를 추가할 수 있다.
SERVER_URL 이라는 환경변수에 기존서버주소값을 저장해주고, 그를 불러와 console 에 찍어 확인하도록 하였다.
또한 하드코딩해두었던 서버주소를 환경변수를 불러와 사용하도록 수정했다.
그럼 이제 Send 하여 실행해 정상적으로 작동되는지 확인해보면~~~~
콘솔에도 잘 찍히고 정상적으로 요청성공했다!
(Postman 의 콘솔창은 상단메뉴바의 View - Show Postman Console 로 열 수 있다.)
Post-response
이제는 Post-response script 를 이용해서
- 200 status code 인지
- 응답데이터의 개수가 10개 인지(요청 limit 10로 했으므로)
를 검증해보자. 아까와 동일하게 Snippets 을 이용하면 쉽게 도움을 받을 수 있다.
작성 후 Send 를 눌러 요청해보면 아래 Test Results 에서 검증결과를 확인할 수 있다.
지금까지 진행해본 테스트는 개별 request 에서 수동으로 진행한 것이기에 자동화라고 할 수 없다.
Collection, Folder 범위에서도 테스트를 Run 할 수 있다. 보다 넓은 범위로 환경변수를 지정하거나, scripts 를 작성하거나, 데이터파일을 불러와 사용하는 등의 기능도 가능하다.
다음 포스팅에서는 Runner 를 이용해 복수개의 요청테스트를 진행해보려고 한다.
출처: Postman docs - https://learning.postman.com/docs/tests-and-scripts/write-scripts/intro-to-scripts/