SOFTMOA TECHNOLOGY

Postman으로 API 테스트 자동화

소프트모아가 정리한 기술 기록입니다.

Contents
작성일 2025. 11. 30.

Postman으로 API 테스트 자동화


Postman은 API 개발과 테스트를 위한 필수 도구입니다. 단순 요청 테스트부터 자동화된 테스트 스크립트, CI/CD 통합까지 다양한 기능을 제공합니다.



언제 사용하나요?



  • REST API 개발 및 디버깅

  • API 문서화와 팀 공유

  • 자동화된 API 테스트

  • CI/CD 파이프라인 통합



기본 요청 보내기


// GET 요청
GET https://api.example.com/users

// POST 요청 (Body - raw JSON)
POST https://api.example.com/users
Content-Type: application/json

{
"name": "홍길동",
"email": "[email protected]"
}

// 헤더 추가
Authorization: Bearer {{token}}
Content-Type: application/json


환경 변수 활용


// 환경 설정 (Development, Production)
{
"base_url": "https://dev-api.example.com",
"api_key": "dev-key-12345"
}

// 변수 사용
GET {{base_url}}/users
Authorization: Bearer {{api_key}}

// 동적 변수
{{$randomInt}} // 랜덤 정수
{{$timestamp}} // 현재 타임스탬프
{{$guid}} // UUID


Pre-request Script


// 요청 전 실행되는 스크립트

// 타임스탬프 생성
pm.environment.set("timestamp", Date.now());

// 서명 생성 (HMAC)
const crypto = require("crypto-js");
const secret = pm.environment.get("secret_key");
const message = pm.request.method + pm.request.url;
const signature = crypto.HmacSHA256(message, secret).toString();
pm.environment.set("signature", signature);

// 토큰 갱신
if (!pm.environment.get("token") || tokenExpired()) {
pm.sendRequest({
url: pm.environment.get("base_url") + "/auth/token",
method: "POST",
body: { mode: "raw", raw: JSON.stringify({...}) }
}, (err, res) => {
pm.environment.set("token", res.json().access_token);
});
}


테스트 스크립트


// 상태 코드 검증
pm.test("상태 코드 200", function() {
pm.response.to.have.status(200);
});

// 응답 시간 검증
pm.test("응답 시간 500ms 이하", function() {
pm.expect(pm.response.responseTime).to.be.below(500);
});

// JSON 구조 검증
pm.test("사용자 목록 반환", function() {
const json = pm.response.json();
pm.expect(json).to.be.an("array");
pm.expect(json.length).to.be.above(0);
pm.expect(json[0]).to.have.property("id");
pm.expect(json[0]).to.have.property("name");
});

// 특정 값 검증
pm.test("특정 사용자 포함", function() {
const json = pm.response.json();
const user = json.find(u => u.email === "[email protected]");
pm.expect(user).to.not.be.undefined;
});

// 스키마 검증
const schema = {
type: "object",
required: ["id", "name", "email"],
properties: {
id: { type: "number" },
name: { type: "string" },
email: { type: "string", format: "email" }
}
};
pm.test("스키마 일치", function() {
pm.response.to.have.jsonSchema(schema);
});

// 환경 변수에 저장
const json = pm.response.json();
pm.environment.set("userId", json.id);


Collection Runner


// 컬렉션 전체 실행
// 1. 순차 실행
// 2. 반복 실행 (iterations)
// 3. 데이터 파일 연동 (CSV/JSON)

// data.json
[
{ "name": "사용자1", "email": "[email protected]" },
{ "name": "사용자2", "email": "[email protected]" }
]

// 테스트에서 데이터 사용
pm.request.body = {
mode: "raw",
raw: JSON.stringify({
name: pm.iterationData.get("name"),
email: pm.iterationData.get("email")
})
};


Newman CLI (CI/CD 통합)


# 설치
npm install -g newman

# 컬렉션 실행
newman run collection.json

# 환경 파일과 함께
newman run collection.json -e environment.json

# 리포트 생성
newman run collection.json -r html,cli

# Jenkins/GitHub Actions에서
newman run collection.json
--environment prod.json
--reporters cli,junit
--reporter-junit-export results.xml


Mock Server


// Mock 응답 설정
// 1. Collection > Mock 생성
// 2. 요청별 Example 정의

// Example 응답
{
"id": 1,
"name": "테스트 사용자",
"status": "active"
}

// Mock URL
GET https://mock-server-id.mock.pstmn.io/users/1


유용한 팁



  • Ctrl+Enter: 요청 전송

  • Workspace로 팀 협업

  • Fork로 컬렉션 버전 관리

  • API 문서 자동 생성

  • 모니터링으로 정기 테스트

Share this

Tool

Have a questions?

견적 및 기술문의

mobile : 010-7931-4813

Contact Form