이 글에서 다루는 내용

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