브루노(Bruno)는 API 테스트를 위한 오픈 소스 도구로, 최근 Postman과 같은 기존 도구들의 대안으로 큰 관심을 받고 있습니다. 이 글에서는 Bruno를 사용한 API 자동화 테스트에 대해 알아보겠습니다.
여러분이 레스토랑에서 주문한 음식을 배달받는 과정을 생각해보세요.
- 주문서(API 요청)를 작성하여 주방(서버)에 전달하고
- 원하는 음식(응답)이 정확하게 배달되는지 확인하는 것
- Bruno는 이 전체 과정을 자동으로 검증해주는 배달 매니저 역할을 합니다!
왜 Bruno가 필요한가?
Bruno가 해결하는 문제들은 다음과 같습니다:
- 복잡한 API 테스트 자동화: 반복적인 API 테스트를 자동화하여 개발자와 테스터의 시간을 절약합니다.
- 효율적인 협업: Git과 통합되어 팀 간의 API 테스트 공유가 용이합니다.
- 데이터 프라이버시: 오프라인 전용으로 설계되어 데이터가 항상 로컬 기기에 저장됩니다.
- CI/CD 파이프라인 통합: 자동화된 테스트를 개발 과정에 통합할 수 있습니다.
기본 원리
Bruno의 핵심 원리를 알아볼까요?
파일 기반 컬렉션 관리
Bruno는 API 컬렉션을 로컬 파일 시스템에 저장하며, 'Bru'라는 마크업 언어를 사용합니다. 이를 통해 Git과 같은 버전 관리 시스템과 쉽게 통합할 수 있습니다.
collection bruno_demo {
auth none
environments dev, prod
}
자바스크립트 기반 테스트 작성
Bruno는 자바스크립트를 사용하여 API 응답을 검증하는 강력한 테스트 스크립트를 작성할 수 있습니다.
// 상태 코드 확인
bru.test("상태 코드가 200인지 확인", function() {
expect(res.status).to.equal(200);
});
// 응답 본문 확인
bru.test("응답 본문에 필요한 데이터가 있는지 확인", function() {
expect(res.body).to.have.property('id');
expect(res.body.title).to.equal('테스트 게시물');
});
실제 예제
실제 비즈니스 환경에서 Bruno를 활용하는 방법을 살펴보겠습니다.
CLI를 사용한 자동화 테스트 실행
# 모든 API 테스트 실행하고 HTML 보고서 생성
bru run --reporter-html results.html
# 여러 형식의 보고서 동시 생성
bru run --reporter-json results.json --reporter-junit results.xml --reporter-html results.html
# 테스트가 실패하면 즉시 중단
bru run --bail
다음은 Bruno와 다른 API 테스트 도구의 비교입니다:
기능 | Bruno | Postman | Insomnia |
---|---|---|---|
가격 | 무료 (오픈소스) | 무료~유료 | 무료~유료 |
데이터 저장 | 로컬 전용 | 클라우드 동기화 | 클라우드 동기화 |
버전 관리 | Git 친화적 | 제한적 | 제한적 |
CLI 지원 | ✅ | ✅ (유료) | ✅ |
환경 변수 | ✅ | ✅ | ✅ |
.env 파일 지원 | ✅ | ❌ | ❌ |
보고서 형식 | JSON, JUnit, HTML | JSON, JUnit, HTML | JSON |
주의사항 및 팁 💡
⚠️ 이것만은 주의하세요!
테스트 데이터 관리
- 민감한 정보는 .env 파일에 저장하고 이를 .gitignore에 추가하세요.
- Bruno의 환경 변수 기능을 활용하여 다양한 환경(개발, 테스트, 운영)에 대한 설정을 관리하세요.
CI/CD 통합 시 고려사항
- CI/CD 환경에서 Bruno CLI를 설치해야 합니다.
- 비밀 정보는 CI/CD 시스템의 환경 변수로 관리하는 것이 좋습니다.
💡 꿀팁
- 환경 변수를 활용하여 기본 URL을 한 번만 정의하고 모든 요청에서 재사용하세요.
- 테스트 스크립트에서
bru.setVar()
와bru.getVar()
를 사용하여 요청 간에 데이터를 전달할 수 있습니다. - CLI에서
--tests-only
옵션을 사용하면 테스트가 있는 요청만 실행할 수 있습니다. - GitHub Actions와 같은 CI/CD 도구와 쉽게 통합할 수 있어 지속적인 API 품질 보장이 가능합니다.
마치며
지금까지 Bruno를 사용한 API 테스트 자동화에 대해 알아보았습니다. Bruno는 단순한 인터페이스, 파일 기반 접근 방식, 강력한 CLI 지원으로 API 테스트를 더 효율적으로 만들어 줍니다. 처음에는 어렵게 느껴질 수 있지만, 기존 Postman이나 Insomnia 사용자라면 쉽게 전환할 수 있을 것입니다.
Bruno의 가장 큰 장점은 데이터 프라이버시에 대한 강한 철학과 Git 통합을 통한 협업 가능성입니다. 오픈 소스이며 무료로 사용할 수 있어 스타트업부터 대기업까지 다양한 규모의 팀에서 활용할 수 있습니다.
혹시 궁금한 점이 있으시거나, 더 알고 싶은 내용이 있으시면 댓글로 남겨주세요!
참고 자료 🔖
- Bruno 공식 문서: https://docs.usebruno.com/
- Bruno GitHub 저장소: https://github.com/usebruno/bruno
- Bruno API 테스트 스타터: https://github.com/Automation-Test-Starter/Bruno-API-Test-Starter
#API테스트 #Bruno #자동화테스트 #개발자도구 #CI/CD