DEV Community

Cover image for 무료 오픈 소스 CLI 도구: API 테스트용
Rihpig
Rihpig

Posted on • Originally published at apidog.com

무료 오픈 소스 CLI 도구: API 테스트용

대부분의 API 테스트 튜토리얼은 GUI를 중심으로 설명합니다. 하지만 터미널에서 작업하거나 CI에서 테스트를 실행하고, 코드와 함께 테스트 정의를 검토·버전 관리하려면 CLI가 더 적합합니다. 오픈소스 CLI 도구를 사용하면 감사 가능한 라이선스, 자체 네트워크에서 실행 가능한 바이너리, 리포지토리에 커밋할 수 있는 설정 파일을 확보할 수 있습니다.

지금 Apidog 사용해 보기

핵심은 “가장 빠른 도구”나 “가장 작은 바이너리”가 아닙니다. 계정 없이 자체 머신과 CI 러너에서 실행할 수 있는지, GitHub 소스가 실제 OSI 승인 라이선스를 따르는지, 공급업체 정책이나 가격 변경과 무관하게 계속 사용할 수 있는지가 중요합니다.

이 글에서는 REST, GraphQL, HTTP API 테스트에 사용할 수 있는 무료 오픈소스 CLI 도구 8가지를 설치 명령, 실행 예시, 라이선스, 적합한 사용 사례와 함께 정리합니다. 호스팅 도구까지 포함한 비교가 필요하다면 최고의 무료 API 테스트 도구를 참고하세요. 엔드포인트를 터미널에서 직접 호출하는 방법은 REST API 테스트를 위한 curl 대안에서 확인할 수 있습니다.

API 테스트 CLI 도구가 “오픈소스”여야 하는 이유

무료 다운로드가 가능하다고 해서 오픈소스는 아닙니다. 이 목록은 다음 기준으로 도구를 선정했습니다.

  • 실제 오픈소스 라이선스: MIT, Apache-2.0, MPL-2.0, AGPL-3.0, BSD처럼 OSI 승인 라이선스로 소스가 공개되어 있어야 합니다.
  • 자체 실행 가능, 계정 불필요: 가입 없이 로컬 머신이나 CI 러너에서 전체 기능을 실행할 수 있어야 합니다.
  • 유지보수 상태 확인 가능: GitHub에서 커밋, 이슈, 릴리스 이력을 확인할 수 있어야 합니다.

아래 도구는 모두 첫 두 기준을 충족합니다. 유지보수가 중단된 도구는 별도로 표시했습니다.

라이선스는 실제 도입 과정에서 중요합니다. 예를 들어 k6의 AGPL-3.0은 이를 기반으로 네트워크 서비스를 제공할 때 카피레프트 의무가 발생할 수 있습니다. 반면 MIT와 Apache-2.0은 상대적으로 허용적인 라이선스입니다. 제품이나 내부 플랫폼에 도구를 포함하기 전에 반드시 라이선스 전문을 확인하세요.

Hurl: 플레인 텍스트 HTTP 테스트용 단일 Rust 바이너리

Hurl은 텍스트 파일로 HTTP 요청과 응답 단언을 작성하는 CLI 도구입니다. Rust로 작성되었고 내부적으로 libcurl을 사용하며, 테스트 파일이 요청 자체와 유사해서 PR에서 검토하기 쉽습니다.

설치 및 실행

brew install hurl
# 또는
cargo install --locked hurl
Enter fullscreen mode Exit fullscreen mode

login.hurl 파일을 만듭니다.

POST https://api.example.com/login
{ "user": "acme", "pass": "s3cret" }

HTTP 200
[Asserts]
jsonpath "$.token" exists
Enter fullscreen mode Exit fullscreen mode

테스트를 실행합니다.

hurl --test login.hurl
Enter fullscreen mode Exit fullscreen mode

적합한 경우

  • Git에 저장할 수 있는 읽기 쉬운 HTTP 스모크 테스트가 필요한 경우
  • 요청과 응답 단언을 간단한 텍스트 형식으로 관리하려는 경우
  • CI에서 단일 명령으로 계약 스타일 검사를 실행하려는 경우

한계

Hurl은 HTTP 중심 도구입니다. gRPC를 실행하거나 대규모 부하를 생성하는 용도에는 적합하지 않습니다. 복잡한 분기나 반복 로직이 필요하면 .hurl 파일이 많아질 수 있습니다.

Step CI: CI용 YAML API 워크플로우

Step CI는 CI 환경에서 API 워크플로우를 선언적으로 실행하기 위한 YAML 기반 러너입니다. REST, GraphQL, gRPC, tRPC, SOAP를 다루며 OpenAPI 스키마 검증과 부하 테스트도 지원합니다.

설치 및 실행

npm install -g stepci
Enter fullscreen mode Exit fullscreen mode

workflow.yml에 API 호출 단계, 검증 조건, 값 캡처를 정의한 뒤 실행합니다.

stepci run workflow.yml
Enter fullscreen mode Exit fullscreen mode

적합한 경우

  • 로그인 → 토큰 추출 → 보호된 API 호출 같은 다단계 흐름을 YAML 하나로 관리하려는 경우
  • 로컬과 CI에서 동일한 테스트 정의를 실행하려는 경우
  • 여러 API 프로토콜을 하나의 워크플로우 도구로 다루려는 경우

한계

MPL-2.0은 약한 카피레프트 라이선스입니다. Step CI 자체 파일을 수정해 배포하면 수정 사항 공유 의무가 발생할 수 있습니다. 단순히 애플리케이션 테스트에 사용하는 경우에는 해당하지 않습니다.

Schemathesis: 스키마 기반 속성 테스트

Schemathesis는 OpenAPI 또는 GraphQL 스키마를 읽고, Python의 Hypothesis 기반 속성 테스트로 많은 입력 조합을 생성합니다. 직접 모든 테스트 케이스를 작성하는 대신 퍼징을 통해 500 오류, 스키마 위반, 문서와 다른 응답을 찾습니다.

설치 및 실행

uv pip install schemathesis
# 또는
pip install schemathesis
Enter fullscreen mode Exit fullscreen mode

OpenAPI 문서 URL을 지정해 실행합니다.

schemathesis run https://api.example.com/openapi.json
Enter fullscreen mode Exit fullscreen mode

적합한 경우

  • 릴리스 전에 사람이 생각하지 못한 경계 조건 버그를 찾고 싶은 경우
  • OpenAPI 스키마를 실제 테스트 자산으로 활용하려는 경우
  • API 응답이 문서화된 계약을 계속 준수하는지 확인하려는 경우

한계

정확한 OpenAPI 또는 GraphQL 스키마가 필요합니다. API 규모가 크면 생성되는 테스트 케이스가 많아질 수 있으므로, 훅과 옵션으로 대상 엔드포인트·파라미터를 필터링해야 합니다.

Dredd: API 설명 기반 계약 테스트

Dredd는 라이브 API가 API 설명 문서와 일치하는지 검증합니다. OpenAPI 또는 API Blueprint 파일과 실행 중인 백엔드 주소를 전달하면, 문서에 정의된 요청을 재생하고 실제 응답을 사양과 비교합니다.

설치 및 실행

npm install -g dredd
Enter fullscreen mode Exit fullscreen mode
dredd apiary.apib http://127.0.0.1:3000
Enter fullscreen mode Exit fullscreen mode

적합한 경우

  • API 문서와 구현이 서로 어긋나지 않았음을 CI에서 검증하려는 경우
  • 문서화된 요청을 실제 백엔드에 자동으로 재생하려는 경우
  • 테스트 전후 설정을 훅으로 처리해야 하는 경우

한계

Dredd 리포지토리는 2024년 11월에 보관되어 읽기 전용 상태입니다. 현재도 실행할 수 있지만 더 이상 유지보수되지 않습니다. 활발하게 유지되는 스키마 기반 도구가 필요하면 Schemathesis가 더 안전한 선택입니다.

k6: JavaScript 기반 부하 테스트

k6는 Grafana의 부하·성능 테스트 도구입니다. JavaScript 또는 TypeScript로 시나리오를 작성하면 Go 기반 엔진이 많은 가상 사용자를 시뮬레이션합니다.

설치 및 실행

brew install k6
Enter fullscreen mode Exit fullscreen mode

초기 스크립트를 생성하고 실행합니다.

k6 new script.js
k6 run script.js
Enter fullscreen mode Exit fullscreen mode

적합한 경우

  • 수백~수천 명의 가상 사용자 환경에서 API 동작을 측정하려는 경우
  • 기능 테스트와 성능 테스트를 같은 리포지토리에서 관리하려는 경우
  • 응답 시간, 오류율, 처리량을 기준으로 배포 조건을 만들려는 경우

한계

k6는 세밀한 API 계약 단언보다 부하와 성능 측정에 초점을 둡니다. 또한 AGPL-3.0 라이선스이므로 k6 코드를 기반으로 서비스를 구축·배포한다면 라이선스 의무를 검토해야 합니다.

Newman: GUI 없이 Postman 컬렉션 실행

Newman은 Postman 컬렉션을 터미널이나 CI에서 실행하는 명령줄 러너입니다. 이미 Postman 컬렉션에 요청과 테스트를 저장해 두었다면, 데스크톱 앱 없이 같은 컬렉션을 자동 실행할 수 있습니다.

설치 및 실행

npm install -g newman
Enter fullscreen mode Exit fullscreen mode

컬렉션과 환경 파일을 지정합니다.

newman run my-collection.json -e staging-environment.json
Enter fullscreen mode Exit fullscreen mode

적합한 경우

  • 기존 Postman 컬렉션을 CI 파이프라인에 연결하려는 경우
  • 팀이 이미 Postman 기반 테스트 자산을 보유한 경우
  • 환경별 변수 파일을 사용해 staging, production-like 환경을 검증하려는 경우

한계

Postman 컬렉션 포맷에 의존합니다. API 설계나 목 서버 제공이 목적이 아니라, 기존 컬렉션을 실행하는 러너라는 점을 고려해야 합니다.

Tavern: pytest 플러그인 기반 API 테스트

Tavern은 YAML로 API 테스트를 작성하는 Python 라이브러리이자 CLI, pytest 플러그인입니다. pytest 생태계의 픽스처, 보고, 병렬 실행, CI 통합을 그대로 활용할 수 있으며 REST, MQTT, gRPC를 지원합니다.

설치 및 실행

pip install tavern
Enter fullscreen mode Exit fullscreen mode

다른 테스트 파일과 함께 test_login.tavern.yaml을 저장하고 pytest로 실행합니다.

pytest test_login.tavern.yaml
Enter fullscreen mode Exit fullscreen mode

적합한 경우

  • 이미 pytest를 사용 중인 Python 팀
  • API 테스트를 단위 테스트와 같은 테스트 스위트에서 실행하려는 경우
  • pytest fixture와 리포팅 기능을 API 테스트에도 적용하려는 경우

한계

pytest와 Python 테스트 환경에 익숙해야 합니다. Python 중심 스택이 아니라면 pytest 의존성이 장점보다 마찰이 될 수 있습니다.

Venom: 다중 실행기 통합 테스트

OVHcloud의 Venom은 HTTP 요청뿐 아니라 셸 스크립트, IMAP, 웹, 데이터베이스 등 여러 실행기 유형을 하나의 YAML 테스트 스위트에서 실행합니다. Go로 작성되었으며 CI가 읽을 수 있는 xUnit 결과 파일을 내보냅니다.

설치 및 실행

GitHub Releases에서 바이너리를 내려받은 뒤 실행합니다.

venom run testsuite.yml
Enter fullscreen mode Exit fullscreen mode

적합한 경우

  • API 호출 뒤 데이터베이스 상태를 확인해야 하는 경우
  • HTTP 테스트와 셸 스크립트 단계를 하나의 E2E 흐름으로 묶으려는 경우
  • CI 결과를 xUnit 형식으로 수집하려는 경우

한계

지원하는 실행기 수가 많아 YAML이 길고 복잡해질 수 있습니다. 실제 구성 시에는 리포지토리의 실행기별 예시를 조합해야 할 수 있습니다.

Apidog의 위치와 고려할 점

Apidog은 오픈소스가 아닙니다. 무료 티어를 제공하는 상업용 제품이므로, 위의 소스 사용 가능 도구 목록과는 구분해야 합니다.

다만 여러 도구를 조합해 설계, 테스트, 목킹, 문서화를 운영하는 비용이 크다면 통합 플랫폼을 고려할 수 있습니다. Apidog은 설계, 테스트, 목킹, 문서화를 하나의 플랫폼으로 제공하며, apidog-cli를 통해 테스트를 터미널과 CI에서 실행할 수 있습니다.

npm install -g apidog-cli

apidog login --with-token <YOUR_TOKEN>
apidog run --access-token <TOKEN>
Enter fullscreen mode Exit fullscreen mode

모든 테스트가 통과하면 종료 코드 0을 반환하고, 실패하면 non-zero 코드로 종료합니다. 출력에는 agentHints.nextSteps를 포함한 구조화된 JSON이 포함되어 있어 스크립트나 AI 에이전트에 전달하기 쉽습니다.

명령어와 실행 옵션은 전체 apidog-cli 가이드에서 확인할 수 있습니다.

감사 가능한 오픈소스 라이선스가 필수라면 앞서 소개한 8개 도구 중 하나를 선택하세요. 설계부터 테스트, 목킹, 문서화까지 통합된 워크플로우가 더 중요하다면 Apidog과 CLI를 대안으로 검토할 수 있습니다.

선택 방법

도구 가장 적합한 용도 설치 오픈소스? 라이선스
Hurl Git에 저장하는 플레인 텍스트 HTTP 단언 brew install hurl Apache-2.0
Step CI 선언적 CI 워크플로우 npm i -g stepci MPL-2.0
Schemathesis 스키마 기반 속성 퍼징 pip install schemathesis MIT
Dredd 문서-구현 간 계약 테스트 npm i -g dredd 예 (보관됨) MIT
k6 부하 및 성능 테스트 brew install k6 AGPL-3.0
Newman CI에서 Postman 컬렉션 실행 npm i -g newman Apache-2.0
Tavern pytest 내부 API 테스트 pip install tavern MIT
Venom 다중 실행기 통합 스위트 GitHub Releases BSD
apidog-cli 설계-테스트 통합 워크플로우 npm i -g apidog-cli 아니요 (무료 티어) 상업용

빠르고 읽기 쉬운 요청 검증이 필요하면 Hurl 또는 Newman을 선택하세요. OpenAPI나 GraphQL 스키마가 있고 엣지 케이스를 찾고 싶다면 Schemathesis가 적합합니다. 트래픽 규모에서의 동작이 문제라면 k6를 사용하세요. API 테스트가 더 큰 테스트 스위트에 포함되어야 한다면 Tavern 또는 Venom을 고려할 수 있습니다.

더 큰 테스트 프로세스 안에서 각 도구의 역할을 정리하려면 API 테스트 전략을 참고하세요. UI 없이 테스트를 실행하는 방식은 헤드리스 API 테스트 도구에서 다룹니다.

마무리

오픈소스 CLI 도구를 사용하면 API 테스트 환경을 직접 읽고, 포크하고, 원하는 방식으로 실행할 수 있습니다.

  • 일상적인 요청 검증: Hurl, Newman
  • 스키마·계약 검증: Schemathesis, Dredd
  • 성능과 부하 측정: k6
  • 더 넓은 테스트 스위트 통합: Tavern, Venom

라이선스와 해결하려는 문제를 기준으로 선택하세요. 하나의 도구만 써야 하는 것은 아닙니다. 예를 들어 Hurl로 스모크 테스트를 실행하고, Schemathesis로 스키마 퍼징을 수행하며, k6로 배포 전 부하 테스트를 추가할 수 있습니다.

툴체인을 직접 유지보수하는 대신 한곳에서 설계, 테스트, 목킹, 문서화를 처리하고 싶다면 Apidog과 CI용 apidog-cli를 함께 사용할 수 있습니다. Apidog 다운로드 후 위 도구들과 함께 실행해 보고, 현재 파이프라인에 가장 적합한 조합을 선택하세요.

Top comments (0)