API 테스팅은 애플리케이션 프로그래밍 인터페이스(API)가 기능, 성능, 보안 측면에서 기대대로 동작하는지 검증하는 테스팅 기법이다. Postman과 Newman이 가장 널리 사용되는 도구다.
API 테스팅 레이어
UI 테스트: 브라우저/앱 → HTTP 요청/응답
API 테스트: HTTP 요청/응답 직접 검증 ← 비용 효율적
단위 테스트: 함수/메서드 단위
API 테스트 유형:
- 기능 테스트: CRUD 정확성
- 계약 테스트: 스키마 일치
- 통합 테스트: 서비스 간 흐름
- 성능 테스트: 응답 시간, 처리량
- 보안 테스트: 인증, SQL 인젝션
Postman 컬렉션 구조
json
{
"info": { "name": "User API Tests" },
"item": [
{
"name": "Create User",
"request": {
"method": "POST",
"url": "{{baseUrl}}/users",
"body": {
"raw": "{ "name": "Alice", "email": "alice@example.com" }"
}
},
"event": [{
"listen": "test",
"script": {
"exec": [
"pm.test('Status 201', () => pm.response.to.have.status(201));",
"pm.test('Has id', () => {",
" const body = pm.response.json();",
" pm.expect(body.id).to.be.a('number');",
" pm.environment.set('userId', body.id);",
"});"
]
}
}]
}
]
}
Newman (CLI 실행)
bash
# 설치
npm install -g newman newman-reporter-htmlextra
# 실행
newman run collection.json --environment env.json --reporters cli,htmlextra --reporter-htmlextra-export results.html --delay-request 100 --iteration-count 3
# CI에서 실패 시 종료 코드 1 반환
echo $? # 0 = 성공, 1 = 실패
주요 도구 비교
| 도구 | 특징 |
|---|
| Postman | GUI, 협업, 모킹 |
| Newman | Postman CLI 실행기 |
| REST Assured | Java DSL |
| Supertest | Node.js 통합 테스트 |
| HTTPie | 간단한 CLI |
| k6 | 성능+기능 동시 |
| Karate DSL | BDD 스타일 API 테스트 |
테스트 자동화 팁
환경 변수: {{baseUrl}}, {{token}} 분리
사전 요청 스크립트: 토큰 갱신 자동화
데이터 파일: CSV/JSON으로 파라미터화
체이닝: 응답 값을 다음 요청에 사용
모니터링: Postman Monitor로 주기적 실행
관련 문서
- •[[contract-testing|계약 테스팅]]
- •[bdd|[BDD]]
- •[[load-testing|부하 테스팅]]