...
포스트맨 (POSTMAN)
POSTMAN은 API를 개발, 테스트, 공유 및 문서화하는 데 사용되는 API 클라이언트 이다.
엔드 포인트 URL을 입력하는 테스트에 사용되며 서버로 요청을 보내고 서버에서 응답을 받아 api가 잘 동작하는지 확인할 수 있다.
사실 그냥 브라우저에서 URL을 통해 응답이 잘 왔는지 정도는 체크는 할 수 있다.
하지만 보다 체계적으로 시나리오 테스트를 하려면 api 툴을 사용해야 한다.
편리하게 쿼리스트링을 보낼수있는 것은 덤이고, 브라우저 도구에서는 하지못하는 Authorization이나 Header, Body 값 수정 헤더값 수정 등 도구를 이용하면 해당 작업을 할 수 있도록 인터페이스가 있기 때문에 가능하다.
그중에서 postman은 api 테스트 도구 부동의 1위를 차지하고 있다.
postman은 모바일 개발, 프론트엔드, 백엔드 모두 유용하게 쓰이며, 개발된 API를 테스트하여 문서화 또는 공유 할 수 있도록 해주고, 또한 컬렉션(collection)에 내가 사용했던 API들을 모아 볼 수 있어서 따로 홈페이지를 재방문 할 필요 없이 재사용 가능한 API를 만들 수 있다는 특징도 있다.
포스트맨 가입 & 설치
포스트맨은 설치형과 클라우드형 모두 쓸수 있지만, 개인적으로 설치형을 추천한다.
자주 사용하는 만큼 웹보다는 어플리케이션으로 다운로드 받아 편하게 사용하는 것이 좋기 때문이다.
아래 링크로 들어가서 운영체제에 맞는 파일을 설치하고, 회원가입(구글 로그인)을 진행하면 정말 손쉽게 이용할 준비를 마칠수 있다.
포스트맨 다크 모드
상단의 FIle → settings 탭에서 theme 변경이 가능하다.
포스트맨 요청 테스트
포스트맨을 사용해 보기에 앞서 요청하고 응답받을 서버가 필요한데, 만일 따로 서버가 준비되어 있지 않아도 간단하게 HTTP request와 response의 동작을 확인할 수 있도록 서비스를 제공해 주는 도메인이 있다.
이 서비스를 이용하여 포스트맨으로 REST API를 테스트 하는 법을 알아보고자 한다.
포스트맨을 단순하게 api 요청/응답 테스트 용도로 가볍게 사용할수도 있겠지만, 본 강의는 api 테스트를 보다 체계적으로 관리할수 있는 방안을 따라 소개해볼 예정이다.
1. Workspaces 생성
새로 워크스페이스를 생성하거나 기본적으로 만들어져있는 My Workspace에 진입한다.
[Workspaces 용도]
Workspaces는 포스트맨의 모든 기능을 담고 있는 뷰라고 보면 된다. 프로젝트 용도에 따라 Personal workspace와 Team workspace로 구분된다.
workspace의 단위는 목적에 따라 자유롭게 지정할 수 있다.
예를들어 QA는 테스트 작성을 위한 workspace를 가지고, 기술자는 API를 문서화하기 위한 workspace를 가지는 식으로 분업이 가능하다.
제품이나 프로젝트별로 구성하게 되면 해당 서비스와 관련된 모든 것들이 해당 workspace 내에 있으므로, 해당 제품에 대한 작업을 시작했을 때 맞춤 view를 볼 수 있다.
외부 파트너나 고객과 통합하여 구축하는 경우 권한을 제어하여 workspace에 참여할 수 있도록 할수 있다.
2. Colleciton 생성
[Collection 용도]
Collection은 request를 그룹화한 단위이다. 모든 HTTP 요청은 Collection에 포함되어 있다.
Collection에 속한 모든 요청에 대해 통합 테스트를 실행할 수 있다.
여러 request를 모아서 관리하고 공유함으로써 API 사용 설명서 역할을 하는 것이라 이해하면 된다.
3. folder 생성
위에서 Collection 이름을 게시판 테스트로 지정했다.
그러면 이 Collection의 api 샘플들은 게시판의 정보(글쓴이, 게시글, 댓글 ..등)를 다루게 되니 체계적으로 관리하기위해 폴더별로 나누어 보자.
4. Request 생성
실제로 API에 대한 테스트를 진행하기 위해서는 Request를 생성해주어야 한다.
api 테스트 프로젝트 디렉토리 구조가 짜여졌으니 본격적으로 실제 api 요청을 보내보자
게시글 정보를 조회하는 테스트를 하기 위해 posts 폴더에 request 하나를 생성한다.
5. GET 요청 보내기
전체 게시글 갯수를 조회해보자
이번엔 쿼리 파라미터에 값을 넣어, 유저 아이디가 10인 사용자가 쓴 게시글만 조회해보자.
6. POST 요청 보내기
게시글들을 가져오는 것 뿐만 아니라, 게시글을 작성하고 발행하는 api도 테스트해야 하는 경우가 있다.
그럴경우에는 인터페이스가 잘 갖춰진 포스트맨으로 간편하게 POST 요청이 가능하다.
예를 들어 쌩코딩으로 POST 요청 해야 할 경우, 다음과 같다.
fetch('https://jsonplaceholder.typicode.com/posts', {
method: 'POST',
body: JSON.stringify({
title: '테스트 게시물',
body: '안녕하세요 테스트 내용입니다',
userId: 1,
}),
headers: {
'Content-type': 'application/json; charset=UTF-8',
},
})
.then((response) => response.json())
.then((json) => console.log(json));
일일히 KEY-VALUE 값을 치기 귀찮으면, raw 항목에 가서 JSON을 복붙해도 된다.
7. 성능 지표 보기
응답 크기 및 응답 시간과 같은 응답 매개 변수에 대한 세부 정보를 얻으려면 각 값 위로 마우스를 가져 가기 만하면 Postman이 각 속성에 대한 세부 정보가 포함 된 세부보기를 표시해준다.
예를 들면 아래와 같이 요청 시간에 대해-연결 시간, 소켓 시간, DNS 조회, 핸드 셰이크 등과 같은 개별 구성 요소로 추가 분석이 가능하다.
8. 전체 테스트 실행
위에서 Collection 별로 get과 post request를 생성했었다.
만일 request 리스트들이 엄청 많을 경우, 이들을 하나하나씩 눌러 테스트 해야 될까?
그럴 필요없이 다음과 같이 Collection에 등록된 모든 request를 폴더별로 실행이 가능하다.
포스트맨 인증키 설정
만일 이용하고자 하는 api 서비스가 인증키(api-key)를 필요로 한다면, 다음과 같이 그냥 request를 때리면 FORBIDDEN 에러를 응답 받게 된다.
따라서 보통 이렇게 헤더 파라미터에, 서비스에서 발급받은 api key 값을 넣고 요청하는 식으로 하면 해결되지만 매번 request마다 헤더키를 설정해주어야 하는게 번거롭다.
그래서 아예 Collection 탭에서 전역 API KEY를 설정함으로서 간편하게 api 인증을 하고 api 테스트를 이어나갈 수 있다.
테스트 주기 자동화 (Monitor Collection)
컬렉션 기반 모니터를 만들면 API 상태를 지속적으로 확인하고, 테스트 suite를 실행하거나 중요한 workflows를 검증할 수 있다.
모니터명과 그 외 구성을 설정해준다.
요청 반복 주기를 Hour Time - Every Hour 로 바꿔주었다. 무료 버전에서는 몇분 주기는 사용할순 없다.
Create Monitor 클릭하면 모니터 컬렉션이 생성된다.
이렇게 생성된 모니터 컬렉션은 Postman을 종료해도 계속 모니터링은 진행된다.
한 가지 유의할 점이 있다면, Postman 모니터링을 제대로 작동하기 위해서는 요청 URL이 localhost, 127.0.0.1 처럼 로컬 호스트로 설정했다면, 외부에서 접속할수 있는 고정 IP로 변경해주어야한다. (일반 API 테스트는 localhost 가능)
모니터는 Postman 클라우드에서 실행되는 URL을 인터넷에서 공개적으로 사용할 수 있어야한다.
로컬호스트에 직접 액세스하거나 방화벽 뒤에서 요청을 실행할 수 없기 때문이다.
코드 스니펫 (Code snippet)
포스트맨의 유용한 점은 바로 작성한 request를 프로그래밍 코드로 추출할수 있다는 점이다.
Code snippet 에서 사용자에 고른 언어에 맞춰 샘플 코드가 생성된다.
자신이 사용하는 개발 언어에 맞춰 테스트 request에 사용된 코드를 재활용해 활용할 수 있다.
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.