-
Hurl은 간단한 플레인 텍스트 형식으로 정의된 HTTP 요청을 실행하고 검증할 수 있는 오픈소스 커맨드라인 툴임
- REST, SOAP, GraphQL 등 다양한 API와 HTML, XML, JSON 기반 콘텐츠를 손쉽게 테스트·검증할 수 있음
-
체이닝, 값 추출, 다양한 검증 구문을 통해 복잡한 시나리오 테스트가 가능하며, CI/CD 통합 및 테스트 리포트 출력도 지원함
- Rust로 작성되어 빠르고 가벼운 단일 바이너리로 배포되며, 내부적으로 libcurl을 사용해 신뢰성과 호환성을 확보함
- 경쟁 도구 대비 간결한 문법 및 확장성, 다양한 기능을 갖춘 현대적 HTTP 테스트 자동화 도구로 평가받음
소개 및 장점
Hurl은 오픈소스 커맨드라인 기반의 HTTP 요청 실행 및 자동화 테스트 도구임. 플레인 텍스트 기반의 스크립트 파일(.hurl)로 여러 HTTP 요청을 순차적으로 실행할 수 있고, 각 요청의 결과에서 값을 추출(capture)해 다음 요청에 변수로 활용하거나, 응답 내용(헤더/바디/상태코드 등)에 대해 다양한 검증(assert)을 수행할 수 있음.
다음은 다른 HTTP 테스트 도구(예: Postman, curl 등) 대비 Hurl만의 중요한 강점임:
- 플레인 텍스트로 작성 가능해 버전 관리 및 협업에 용이함
- Rust로 작성된 단일 경량 바이너리 제공, 별도 런타임 불필요
- curl과 동일한 네트워크 엔진(libcurl) 기반으로 신뢰성 및 다양한 프로토콜 지원
- REST, SOAP, GraphQL, HTML 등 다양한 형식 지원 및 복잡한 시나리오 세팅 가능
- CI/CD, 테스트 자동화, 상세 리포트(JUnit, HTML, TAP 등)와의 손쉬운 통합
주요 기능 요약
기본 동작
- Hurl 파일(.hurl) 안에 여러 HTTP 요청을 순차적으로 작성해 실행
- 각 요청의 응답에서 값 추출, 조건 검증, 다음 요청으로의 데이터 전달 가능
- REST/JSON, SOAP/XML, GraphQL, HTML 등 다양한 형식 대응
체이닝 및 변수 활용
- 여러 요청을 한 파일 내에 체인으로 작성
- Captures 구문으로 응답에서 값 추출, 이후 요청에 변수로 주입
- Xpath, JSONPath, 정규표현식, 바디 구조 등을 통한 데이터 추출 및 활용
다양한 요청 및 검증 방식
- 쿼리파라미터, 헤더, 인증 등 다양한 요청 사양 설정 지원
- [Asserts] 구문 또는 암시적 구문으로 상태코드, 바디, 헤더, 쿠키, 응답시간, 해시 등 검증
- XPath, JSONPath 사용, REST/GraphQL/SOAP 과 HTML 콘텐츠도 테스트 가능
- 다중 값 검증, 응답 본문/해시/인증서 속성, 요청/응답 지연, 바이너리 데이터 처리 지원
테스트 리포트와 자동화 연동
- 실행 결과를 텍스트, HTML, JUnit, TAP, JSON 등 다양한 형식의 리포트로 출력
- CI/CD 파이프라인에 손쉽게 통합 가능함
고급 제어 및 유용 기능
- 요청 간 데이터 전달(캡처·변수화)
- 동적 데이터 생성 함수(newUuid, newDate 등)
- 요청별 옵션 커스터마이즈
- 폴링/재시도, 요청 딜레이, 스킵, 비밀 값 마스킹(redact)
- curl과 동일한 옵션 지원(curl 옵션 그대로 사용 가능)
- AWS Sigv4 인증 등 클라우드 전용 기능 내장
상세 사용 예시 및 구조
예제 파일 실행
- sample.hurl 파일 작성
-
$ hurl sample.hurl 명령 실행으로 해당 요청 일괄 실행
-
--test 옵션 활용 시 테스트 오리엔티드 출력 활성화
- 특정 응답 저장 등 옵션 활용 가능
- 디렉터리 전체 또는 여러 파일(.hurl)을 재귀적으로 실행 가능
데이터 요청 및 전달
- GET, POST, HEAD 등 다양한 HTTP 메서드 지원
- 헤더/쿼리파라미터/Basic 인증/옵션/폼데이터/멀티파트/로컬파일 바디 등 세팅
- 응답 데이터 추출 및 변수 처리, 이후 요청에 삽입
응답 검증/테스트
- 상태코드, 바디, 헤더, 쿠키, 응답 소요 시간 등 검증
- REST, JSON, XML, HTML, GraphQL 응답 바디 구조적 검증
- 세트 쿠키 속성, 바이트 해시, SSL 인증서, 전체 바디 매칭 등 고급 검증
리포트 및 출력
- HTML/JSON/JUnit/TAP 리포트 출력 지원
- 테스트 목적에 맞게 다양한 출력 방식 제공
기타
- HTTP/2, HTTP/3 등 네트워크 스택 지원 현황 검사
- IP주소, AWS Sigv4 인증 등 특화 시나리오 지원
- 요청 재시도 및 폴링, 딜레이와 스킵, 비밀값 관리 등 각종 편의 기능 내장
- curl 옵션 그대로 사용, Hurl 파일 내 옵션 세부 제어 가능
Hurl 파일 구조
- 각 줄마다 HTTP 요청이나 명령, 옵션, 검증 구문 등을 작성
- [Captures], [Asserts], [Options], [Form], [Multipart], [Query] 등 다양한 섹션 존재
- 플레인텍스트 기반이라 git 등 버전관리와 협업에 유리함
결론
Hurl은 복잡한 HTTP 테스트/자동화 요구에 효과적으로 대응하는 최신 오픈소스 도구이며, git 기반 협업, CI/CD, 다양한 HTTP API 테스트에서 높은 생산성과 신뢰성을 제공함. Rust 및 libcurl 기반 경량 실행파일로, 환경 구애 없이 빠르게 적용해볼 만함.