Postman HTTP API 테스트 문서
Postman에서는 GraphQL, gRPC, Socket 통신 등 여러 통신 기능을 사용할 수 있습니다. 이 문서는 그중 HTTP 통신 기반 API 테스트를 기준으로 정리합니다.
1. Postman이란?
Postman은 API 개발 및 테스트를 위한 협업 애플리케이션입니다.
주요 용도는 API 테스트, API 문서화, 팀 협업, 테스트 자동화입니다.
2. 주요 개념
2-1. Workspace
Workspace는 Postman의 모든 기능을 담고 있는 작업 공간입니다.
Public workspace와 Team workspace를 생성할 수 있습니다.
Manage access에서 초대받은 사용자만 사용할 수 있도록 설정할 수 있습니다.
무료 플랜에서는 최대 3명까지 Team workspace를 사용할 수 있습니다.
2-2. Collection
Collection은 서버에 보내기 위한 API Request들을 논리적으로 그룹화한 폴더 개념입니다.
관련 API 요청들을 하나의 단위로 묶어 관리할 수 있습니다.
컬렉션을 선택하면 설명, 인증 방식, 스크립트 등을 추가할 수 있습니다.
테스트 자동화나 모니터링도 컬렉션 단위로 실행할 수 있습니다.
2-3. Environment
Environment는 환경별 변수를 관리하는 기능입니다.
로컬, 개발, 스테이징, 운영 환경별 값을 분리할 수 있습니다.
전역 변수와 환경 변수를 설정할 수 있습니다.
요청에서 환경 변수를 사용할 때는
{{environment}}처럼 중괄호 두 개로 감싸서 사용합니다.
3. 요청 보내기
3-1. GET 요청 생성
Postman에서 HTTP 요청을 보내기 위해서는 먼저 새로운 요청을 생성합니다.
New 버튼을 클릭합니다.
생성할 요청 유형을 선택합니다.
요청 URL 입력 영역에 호출할 API 주소를 입력합니다.
Send 버튼을 누르면 Postman이 API 서버로 요청을 보냅니다.
예시 URL은 다음과 같습니다.
https://jsonplaceholder.typicode.com/posts/1
응답은 하단 영역에서 확인할 수 있습니다. 응답 본문, 헤더, 상태 코드, 응답 시간 등 여러 정보를 함께 확인할 수 있습니다.
3-2. 응답 시간 확인
응답 하단의 시간 영역에 커서를 올리면 해당 API 요청에 대한 성능 지표를 확인할 수 있습니다.
예를 들어 148 ms처럼 표시된 응답 시간에 마우스를 올리면,
요청 준비 시간, DNS 조회 시간, 서버 응답 시간 등 세부 정보를 확인할 수 있습니다.
3-3. 요청 저장
요청을 저장하려면 Save 버튼을 누르거나 Ctrl/Cmd + S 단축키를 사용할 수 있습니다.
저장 시에는 요청 이름과 저장할 컬렉션 또는 폴더를 지정합니다.
요청 이름은 REST API 형식이나 실제 사용 목적이 명확히 드러나도록 작성하는 것이 좋습니다.
/posts/posts/:id게시글 목록 조회
게시글 단건 조회
4. 변수 사용
Postman에서는 API 요청에 사용할 값을 변수로 관리할 수 있습니다.
변수는 로컬 변수, 데이터 변수, 환경 변수, 컬렉션 변수, 전역 변수 등으로 나뉩니다.
4-1. 변수 종류
| 변수 종류 | 설명 | 스크립트 접근 방식 |
|---|---|---|
| 로컬 변수 | 현재 요청 또는 컬렉션 범위에서만 사용하는 임시 변수입니다. | pm.variables |
| 데이터 변수 | Collection Runner 실행 시 CSV 또는 JSON 파일에서 가져오는 변수입니다. | 스크립트에서 직접 접근하지 않음 |
| 환경 변수 | 로컬, 스테이징, 운영 등 환경별 값을 관리합니다. | pm.environment |
| 컬렉션 변수 | 특정 컬렉션 내부 요청에서만 사용할 수 있는 변수입니다. | pm.collectionVariables |
| 전역 변수 | 워크스페이스 전체에서 접근할 수 있는 가장 넓은 범위의 변수입니다. | pm.globals |
4-2. Environment 활용하기
Environment를 사용하면 환경에 따라 API URL, 토큰, 사용자 ID 같은 값을 다르게 관리할 수 있습니다.
예를 들어 요청 URL에서 특정 값을 변수로 사용하려면 다음처럼 작성합니다.
https://jsonplaceholder.typicode.com/posts/{{postId}}
이때 선택된 Environment에 postId 값이 있어야 정상적으로 요청이 전송됩니다.
4-3. Request 전에 변수 적용하기
요청을 보내기 전에 랜덤 값을 생성해서 변수로 넣고 싶다면 Pre-request Script를 사용할 수 있습니다.
예를 들어 postId에 1부터 10 사이의 랜덤 값을 넣고 싶다면 다음처럼 작성합니다.
const random = Math.floor(Math.random() * 10) + 1;
pm.variables.set('postId', random);
이렇게 설정하면 요청 전 로컬 변수가 만들어지고,
URL의 {{postId}} 부분에 해당 값이 적용됩니다.
4-4. Response 데이터로 환경 변수 변경하기
응답 이후에 환경 변수를 변경하려면 Post-response Script를 사용할 수 있습니다.
예를 들어 환경 변수 postId 값을 요청이 끝날 때마다 1씩 증가시키려면 다음처럼 작성합니다.
const postId = pm.environment.get('postId');
const newPostId = Number(postId) + 1;
pm.environment.set('postId', newPostId.toString());
이 스크립트를 사용하면 요청을 보낼 때마다 postId 값이 증가하며,
다음 요청에 변경된 값이 사용됩니다.
5. 테스트
Postman에서는 Collection 단위로 테스트 자동화를 작성하거나, 스케줄러를 등록해 모니터링을 수행할 수 있습니다.
5-1. Collection Runner
Collection Runner는 컬렉션에 포함된 요청들을 일괄 실행하고 테스트 결과를 확인하는 기능입니다.
Collections 탭에서 실행할 Collection을 선택합니다.
상세 화면 우측 상단의 Run 버튼을 클릭합니다.
실행할 Request를 체크박스로 선택합니다.
Iterations, Delay 등 실행 옵션을 설정합니다.
Run 버튼을 눌러 테스트를 실행합니다.
5-2. Functional 테스트
Functional 테스트는 정해진 횟수와 딜레이를 설정해 요청을 반복 실행하는 방식입니다.
Iterations: 요청 반복 횟수Delay: 각 요청 사이의 대기 시간
예를 들어 Iterations를 10으로 설정하면 컬렉션 요청이 10번 반복 실행됩니다.
5-3. Performance 테스트
Performance 테스트는 가상 사용자를 설정해 여러 요청을 동시에 보내며 성능을 확인하는 방식입니다.
| 유형 | 설명 |
|---|---|
| Fixed | 일정 시간 동안 사용자 수를 동일하게 유지합니다. |
| Ramp up | 사용자 수를 점진적으로 늘려갑니다. |
| Spike | 특정 시간대에 사용자를 급격히 증가시킵니다. |
| Peak | 높은 부하를 일정 시간 유지하며 시스템이 견딜 수 있는지 확인합니다. |
6. 테스트 자동화와 모니터링
6-1. Monitors
Postman에는 Monitors라는 기능이 있습니다.
Monitors는 컬렉션을 정기적으로 실행하여 API의 성능과 응답 상태를 확인할 수 있도록 도와줍니다.
무료 플랜 기준으로 최소 1시간, 최대 주 1회 단위로 실행 주기를 설정할 수 있으며, 최대 월 1000건까지 무료로 제공됩니다.
6-2. Monitor 생성 과정
사이드바에서 Monitors 탭을 활성화합니다.
Create a Monitor 버튼을 클릭합니다.
모니터 이름, Collection, Environment 등을 설정합니다.
실행 주기와 알림 설정을 지정합니다.
Create Monitor 버튼을 클릭합니다.
생성된 Monitor에서 Run 버튼을 눌러 최초 실행을 확인합니다.
6-3. Monitor 설정 항목
| 항목 | 설명 |
|---|---|
| Monitor name | 생성할 모니터의 이름입니다. |
| Collection | 테스트할 Collection을 선택합니다. |
| Environment | 테스트에 사용할 Environment를 선택합니다. |
| Data file | 데이터 변수로 사용할 JSON 또는 CSV 파일을 지정 |

댓글 0