Postman 테스트 스크립트 개념 및 활용 정리

Sue·2025년 8월 5일
0
post-thumbnail

✅ Postman 테스트 스크립트 개념 및 활용 정리

1. Postman에서 테스트 방법 비교

방식수동 시나리오 테스트스크립트 기반 테스트
검증 방식사용자가 직접 응답(상태 코드, 메시지) 확인코드(Assertion)로 자동 검증
자동화 수준❌ 없음✅ 응답 Pass/Fail 자동 판정
재사용성❌ 없음✅ 여러 요청에 공통 적용 가능
테스트 신뢰성사람에 따라 달라짐항상 일정하고 정확

즉, 스크립트를 작성하면 → 수동 확인 없이 자동으로 Pass/Fail이 판단되어 테스트 품질이 향상됨.

수동으로 할 경우, 시간이 오래 걸리며, 테스트 결과 기록이 남지 않는다는 단점이 있다.

예시로 403 응답이 맞는지, 메시지에 "어노테이션"이 들어있는지 직접 확인해야 한다.

반대로 스크립트 사용 시에, 사람이 일일이 확인할 필요 없다. 명세 위반 시 바로 탐지되며, CI/CD 파이프라인(Newman)으로도 재사용 가능하다.

예시로 403 응답인데 메시지가 예상과 다르면 자동으로 Fail 표시된다.


2. Postman 스크립트의 구조

Postman 스크립트는 JavaScript로 작성되며,
Postman의 pm 객체와 내장 Chai Assertion 라이브러리를 사용하여 응답을 검증한다.

pm.test("Check status code", function () {
    pm.expect(pm.response.code).to.be.oneOf([200, 204, 400, 403, 404]);
});

3. Pre-request vs Tests (Post-response) 차이

구분Pre-request ScriptTests (Post-response)
실행 시점요청 전 실행응답 후 실행
주요 용도토큰 생성, 변수 설정 등 요청 준비응답 상태 코드, 메시지, JSON 필드 자동 검증
예시JWT 토큰 자동 발급상태 코드 200인지 검사

4. 강화된 Postman Test Script 예시

if (pm.response) {
    const statusCode = pm.response.code;
    const json = statusCode !== 204 ? pm.response.json() : null;

    // ✅ [1] 상태 코드 검증
    pm.test("Status code is valid", function () {
        pm.expect(statusCode).to.be.oneOf([200, 204, 400, 401, 403, 404, 409, 500]);
    });

    // ✅ [2] 응답 시간 검증
    pm.test("Response time < 500ms", function () {
        pm.expect(pm.response.responseTime).to.be.below(500);
    });

    // ✅ [3] 204 응답 → 바디가 비어있는지 체크
    if (statusCode === 204) {
        pm.test("No body for 204", function () {
            pm.expect(pm.response.text()).to.eql("");
        });
    } else {
        pm.test("Response is JSON", function () {
            pm.expect(json).to.be.an("object");
        });

        pm.test("Message field exists", function () {
            pm.expect(json.message).to.be.a("string");
        });

        // ✅ [4] 상태 코드별 기대 메시지 확인
        if (statusCode === 400) pm.expect(json.message).to.match(/잘못된 요청|유효하지 않음/);
        if (statusCode === 403) pm.expect(json.message).to.include("어노테이션");
        if (statusCode === 404) pm.expect(json.message).to.match(/찾을 수 없음|존재하지 않음/);
        if (statusCode === 409) pm.expect(json.message).to.match(/중복|이미 존재/);
        if (statusCode === 500) pm.expect(json.message).to.match(/서버 오류|내부 오류/);

        // ✅ [5] 추가 JSON 필드 검증
        pm.test("JSON should have timestamp", function () {
            pm.expect(json).to.have.property("timestamp");
        });
    }
}

5. 스크립트 작성 방법

  1. Postman에서 요청 열기
  2. Scripts 탭 선택
  3. 위 코드를 붙여넣기
  4. 요청 실행 → Tests 탭에서 Pass/Fail 확인

안에 세부적으로 두 가지 탭이 있는데 테스트는 post-response에 입력하여 실행하면 된다.

pre-requesttest (post-response)의 차이로는

구분Pre-request ScriptTests (Post-response) Script
실행 시점요청 보내기 전 실행응답 받은 후 실행
주요 용도- 요청에 동적 값 삽입

이며

  • 환경 변수 설정
  • 인증 토큰 갱신 | - 응답 값 검증
  • 상태 코드, 바디, 헤더 검사
  • 결과에 따른 후속 변수 설정
  • | 예시 |JWT 토큰 자동 발급 후 요청 헤더에 추가 | ✅ 응답 코드가 200인지 검사

✅ 정리하면

  • 지금처럼 scripts(Tests)를 작성하면, API 응답이 명세를 따르는지 자동으로 확인 가능
  • Pre-request는 요청 전 필요한 준비 작업, Post-response(Test)는 응답 검증에 사용

6. 스크립트 적용 시 효과 vs 미적용 차이

구분스크립트 미적용스크립트 적용
검증 정확도사람이 눈으로 확인 → 실수 가능자동 검사 → 작은 오류도 즉시 탐지
속도느림빠름
결과 기록없음Pass/Fail 기록
테스트 품질일정하지 않음항상 동일하고 신뢰성 높음

7. 실제 에러 발생 시 동작 (예시)

  • 예: 403 Forbidden 응답이 왔을 때,
    • API 메시지: "어노테이션에 해당 카테고리 이름이 등록되어있어 삭제가 불가합니다."
    • 스크립트 기대값: "어노테이션 연결" 포함
    • Assertion Fail 발생
    • 결과: 테스트 결과에 Fail 표시 → 문제 즉시 확인 가능

7. 결론

  • Postman 테스트 스크립트는 응답 검증의 자동화를 통해

    • 테스트 속도 ✅
    • 정확도 ✅
    • 품질 ✅
      를 높인다.
  • 지금처럼 Assertion Fail이 표시되는 것도 스크립트가 정상 동작 중이라는 신호이며,
    필요 시 메시지 패턴을 조정하여 유연하게 관리할 수 있다.


향후 확장: Collection Runner + CSV 데이터 파일을 사용하면 요청 변경까지 자동화 가능!

profile
AI/ML Engineer

0개의 댓글