REST API 테스트 방법 정리
이 글에서 다루는 내용
REST API를 테스트하는 방법은 Postman 하나만 있는 게 아니다. GUI 툴부터 CLI, IDE 내장 클라이언트, Swagger 같은 문서 겸 테스트 도구, 그리고 코드 기반 자동화 테스트까지 목적과 상황에 따라 선택지가 다양하다. 이 글에서는 현업에서 자주 쓰이는 7가지 방법을 비교하고, 각 방법의 장단점과 실제 사용 예시를 함께 정리한다.
1. Postman
가장 대중적인 GUI 기반 API 테스트 툴이다. 직관적인 UI 덕분에 백엔드 개발자뿐 아니라 QA, 기획자도 쉽게 사용할 수 있다.
장점
- UI가 직관적이고 학습 비용이 낮다
- Environment Variable로 dev / staging / prod 환경을 분리할 수 있다
- Collection 단위로 API를 묶어 팀과 공유할 수 있다
- Collection Runner를 활용한 시나리오 테스트가 가능하다
- Pre-request Script와 Tests 탭에서 JavaScript로 자동 검증 로직을 작성할 수 있다
단점
- 애플리케이션 자체가 무거운 편이다
- 최근 정책 변경으로 로그인 및 계정 연동이 필수가 됐다
2. IntelliJ HTTP Client (.http 파일)
IntelliJ IDEA에 내장된 HTTP 클라이언트로, IDE를 벗어나지 않고 바로 API를 테스트할 수 있다. .http 확장자 파일에 요청을 작성하면 되며, 이 파일은 Git으로 커밋하고 팀과 공유할 수 있어 개발자 친화적이다.
### 로그인
POST {{baseUrl}}/api/auth/login
Content-Type: application/json
{
"email": "test@test.com",
"password": "1234"
}
> {%
client.global.set("token", response.body.token);
%}
### 유저 조회
GET {{baseUrl}}/api/users/me
Authorization: Bearer {{token}}
응답에서 토큰을 추출해 다음 요청에 자동으로 주입하는 흐름도 지원하며, .env.http 파일로 환경 변수를 분리할 수 있다.
3. Swagger UI (OpenAPI)
Spring Boot의 springdoc-openapi나 Django REST Framework 등 다양한 백엔드 프레임워크에서 자동으로 생성되는 API 문서 겸 테스트 도구다. 별도 설치 없이 서버를 실행하면 바로 UI에 접근할 수 있다.
접속 URL 예시: http://localhost:8080/swagger-ui.html
장점
- 별도 설치 불필요
- API 문서와 테스트가 동시에 가능
- QA, 기획자 등 비개발 직군도 활용 가능
단점
- 인증 토큰 설정이 번거롭다
- 복잡한 시나리오 테스트에는 적합하지 않다
4. curl
가장 범용적인 CLI 기반 HTTP 클라이언트다. 리눅스 서버, CI/CD 파이프라인, 셸 스크립트 어디서든 사용할 수 있어 자동화에 필수적이다.
# GET 요청
curl -X GET "http://localhost:8080/api/users" \
-H "Authorization: Bearer $TOKEN"
# POST 요청
curl -X POST "http://localhost:8080/api/users" \
-H "Content-Type: application/json" \
-d '{"name": "홍길동", "email": "hong@test.com"}'
5. HTTPie
curl과 동일하게 CLI 기반이지만 문법이 훨씬 간결하고 출력이 보기 좋게 포매팅된다. 빠른 로컬 테스트나 터미널 친화적인 환경에서 유용하다.
http POST localhost:8080/api/login email=test@test.com password=1234
http GET localhost:8080/api/users "Authorization:Bearer $TOKEN"
6. Bruno
Postman의 오픈소스 대안으로 주목받고 있는 툴이다. 로그인 없이 사용 가능하고, 컬렉션을 파일 시스템 기반으로 저장하기 때문에 Git으로 버전 관리하기에 적합하다.
장점
- 완전 무료 & 오픈소스
- 계정 로그인 불필요
- Git 친화적 구조
- 빠른 실행 속도
단점
- Postman에 비해 생태계와 플러그인이 아직 작다
7. 코드 기반 테스트 (자동화)
CI/CD 파이프라인에 통합하거나 회귀 테스트를 자동화할 때는 코드로 API 테스트를 작성하는 것이 가장 안정적이다.
Spring Boot — MockMvc / RestAssured
// MockMvc 예시
mockMvc.perform(post("/api/login")
.contentType(MediaType.APPLICATION_JSON)
.content("{\"email\":\"test@test.com\"}"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.token").exists());
JavaScript / TypeScript — supertest
const res = await request(app)
.post('/api/login')
.send({ email: 'test@test.com', password: '1234' });
expect(res.status).toBe(200);
expect(res.body.token).toBeDefined();
상황별 추천 정리
| 상황 | 추천 도구 |
|---|---|
| 빠른 로컬 테스트 | IntelliJ HTTP Client / curl |
| 팀 공유 & 컬렉션 관리 | Postman / Bruno |
| API 문서 겸 테스트 | Swagger UI |
| CI/CD 자동화 | MockMvc / supertest / curl |
| Postman 무료 대체 | Bruno |
| 터미널 중심 작업 | HTTPie |