Skip to content

제1.5장: Postman을 통한 API 테스트

학습 시간: 50분


1. 왜 API를 테스트해야 할까요? 발사 전 점검

상상해보세요: 로켓 발사 전에 엔지니어들은 시스템 테스트 가동을 수행합니다. 점검을 건너뛰면 임무가 실패할 수 있습니다!

API 테스트는 당신의 통제 시험입니다:

  • ✅ "도킹 노드"의 작동 여부 확인

  • 🛡️ 실제 사용 전에 취약점 발견

  • 📊 데이터가 손상 없이 전송되는지 확인

💡 우주 비유: Postman은 모든 시나리오를 시뮬레이션하는 비행 관제 센터의 테스트 콘솔과 같습니다: "존재하지 않는 행성에 대한 데이터를 요청하면 어떻게 될까? 서버가 초당 1000개의 요청을 견딜 수 있을까?"


2. Postman: API를 위한 "비행 관제 센터"

기능:

  • 📡 모든 HTTP 요청 전송 (GET, POST, PUT, DELETE)

  • 🔍 응답 분석 (상태 코드, 헤더, JSON 본문)

  • 🧪 자동 테스트 작성 (JavaScript)

  • 🌐 환경 변수 사용 (테스트 vs 운영)

👉 Postman 다운로드


3. 첫 실행: 행성 API 테스트

1단계: 요청 생성

  1. Postman 열기 → New → Request

  2. URL 입력: https://api.spacexdata.com/v4/rockets

  3. 메서드 선택: GET

2단계: "신호" 전송

[비행 관제 센터] -- GET /planets --> [SpaceX 서버]

3단계: 원격 측정 분석: - 상태: 200 OK - 응답 본문 (JSON): 매개변수가 포함된 로켓 목록

[
  {
    "name": "Falcon 1",
    "type": "rocket",
    "active": false,
    "stages": 2,
    "id": "5e9d0d95eda69955f709d1eb"
  },
  {
    "name": "Falcon 9",
    "type": "rocket",
    "active": true,
    "id": "5e9d0d95eda69973a809d1ec"
  }
]


4. 다이어그램: Postman 구성 요소

[작업 공간]
├── "Params" 탭 (쿼리 매개변수)
├── "Headers" 탭 (헤더)
├── "Body" 탭 (POST/PUT 요청 본문)
├── "Tests" 탭 (확인 스크립트)
└── 응답 패널 (상태, 시간, 크기, 본문)

5. 복잡한 시나리오 생성: 미션 시작

테스트: 카탈로그에 새 행성 추가

  1. 메서드: POST

  2. URL: https://jsonplaceholder.typicode.com/posts (예시)

  3. Headers에:

     { "Content-Type": "application/json" }
    

  4. Body (raw → JSON)에:
    {
     "title": "New Exoplanet Found",
     "body": "Proxima Centauri b shows signs of a stable atmosphere.",
     "userId": 1
     }
    

Tests에서의 자동 확인:

// 상태 확인
pm.test("Post created successfully", () => {
    pm.response.to.have.status(201);
});

// 응답의 구조 및 데이터 확인
pm.test("Response contains the new post data", () => {
    const response = pm.response.json();
    pm.expect(response).to.have.property("id"); // 서버가 ID를 할당했는지 확인
    pm.expect(response.title).to.eql("New Exoplanet Found");
});


6. 환경 변수: 지구 vs 화성

다른 서버(테스트/운영)에서 어떻게 테스트할까요?

  1. 환경 생성:
  2. Localhttp://localhost:3000
  3. Productionhttps://api.nasa.gov

  4. 요청에서 변수 사용:

    {{base_url}}/planets  # 현재 URL을 대체
    

⚠️ 중요! 운영 서버에서 DELETE를 절대로 테스트하지 마세요!


7. 컬렉션: 우주 임무 라이브러리

요청 그룹화:

    📂 "NASA" 컬렉션
    ├── GET 행성
    ├── POST 새 행성
    └── DELETE 행성 (테스트 모드)
장점:

  • 🚀 모든 테스트를 한 번의 버튼 클릭으로 실행
  • 📤 구성 내보내기/가져오기
  • 👨‍🚀 팀 공동 작업

8. 자동화: 위성 정기 점검

Postman을 통해 API 모니터링 설정:

  1. Schedule → 2시간마다

  2. 테스트:

    pm.test("위성 온라인", () => {
      pm.response.to.have.status(200);
      pm.expect(pm.response.json().signal).above(50); // 신호 >50%
    });
    

  3. 고장 시 Slack/이메일 알림


복습 퀴즈

1. Postman은 다음 용도로 사용됩니다:

2. 객체 생성 성공 시 예상되는 상태는?

3. Postman에서 자동 테스트는 어디에 작성하나요?

4. 환경 변수가 필요한 이유는:

5. 정기 모니터링은 무엇을 확인하나요?


🚀 요약: Postman은 API 테스트를 위한 만능 "제어판"입니다. Postman을 사용하면 다음을 수행할 수 있습니다: - 출시 전에 "온보드 시스템"의 작동을 확인 - 테스트 시나리오 라이브러리 생성 - 우주 서비스 모니터링 자동화

📌 실습 과제:

  1. Postman 설치
  2. SpaceX API에 요청 생성: GET https://api.spacexdata.com/v4/launches/latest
  3. 다음을 확인하는 테스트 작성:
  4. 응답 상태 200
  5. name 필드에 "Falcon"이라는 단어 포함
  6. 응답 시간 < 500ms

1장 완료를 축하합니다!

API의 기본 사항을 익히셨습니다. 다음 장에서는 우주 API를 사용하는 "우주선"인 웹 애플리케이션을 구축할 것입니다!

🌌 추가 자료: