방식 | 수동 시나리오 테스트 | 스크립트 기반 테스트 |
---|---|---|
검증 방식 | 사용자가 직접 응답(상태 코드, 메시지) 확인 | 코드(Assertion)로 자동 검증 |
자동화 수준 | ❌ 없음 | ✅ 응답 Pass/Fail 자동 판정 |
재사용성 | ❌ 없음 | ✅ 여러 요청에 공통 적용 가능 |
테스트 신뢰성 | 사람에 따라 달라짐 | 항상 일정하고 정확 |
즉, 스크립트를 작성하면 → 수동 확인 없이 자동으로 Pass/Fail이 판단되어 테스트 품질이 향상됨.
수동으로 할 경우, 시간이 오래 걸리며, 테스트 결과 기록이 남지 않는다는 단점이 있다.
예시로 403 응답이 맞는지, 메시지에 "어노테이션"이 들어있는지 직접 확인해야 한다.
반대로 스크립트 사용 시에, 사람이 일일이 확인할 필요 없다. 명세 위반 시 바로 탐지되며, CI/CD 파이프라인(Newman)으로도 재사용 가능하다.
예시로 403 응답인데 메시지가 예상과 다르면 자동으로 Fail 표시된다.
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]);
});
구분 | Pre-request Script | Tests (Post-response) |
---|---|---|
실행 시점 | 요청 전 실행 | 응답 후 실행 |
주요 용도 | 토큰 생성, 변수 설정 등 요청 준비 | 응답 상태 코드, 메시지, JSON 필드 자동 검증 |
예시 | JWT 토큰 자동 발급 | 상태 코드 200인지 검사 |
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");
});
}
}
안에 세부적으로 두 가지 탭이 있는데 테스트는 post-response
에 입력하여 실행하면 된다.
pre-request
와 test (post-response)
의 차이로는
구분 | Pre-request Script | Tests (Post-response) Script |
---|---|---|
실행 시점 | 요청 보내기 전 실행 | 응답 받은 후 실행 |
주요 용도 | - 요청에 동적 값 삽입 |
이며
✅ 정리하면
구분 | 스크립트 미적용 | 스크립트 적용 |
---|---|---|
검증 정확도 | 사람이 눈으로 확인 → 실수 가능 | 자동 검사 → 작은 오류도 즉시 탐지 |
속도 | 느림 | 빠름 |
결과 기록 | 없음 | Pass/Fail 기록 |
테스트 품질 | 일정하지 않음 | 항상 동일하고 신뢰성 높음 |
403 Forbidden
응답이 왔을 때, "어노테이션에 해당 카테고리 이름이 등록되어있어 삭제가 불가합니다."
"어노테이션 연결"
포함 Postman 테스트 스크립트는 응답 검증의 자동화를 통해
지금처럼 Assertion Fail이 표시되는 것도 스크립트가 정상 동작 중이라는 신호이며,
필요 시 메시지 패턴을 조정하여 유연하게 관리할 수 있다.
✅ 향후 확장: Collection Runner + CSV 데이터 파일을 사용하면 요청 변경까지 자동화 가능!