쉘 스크립트 테스트, Brat으로 간편하게!

by DD
3개월 전
조회수 18

Brat은 POSIX 쉘, awk, 유닉스 파이프라인을 활용한 병렬 TAP 테스트 도구

의존성 최소화를 목표로 하며, 쉘 스크립트 기반 프로젝트에 적합함

Brat은 병렬 테스트 실행을 지원하여 테스트 속도를 향상시킴

Bats와 비교하여 단순함과 간결함을 강조하며, 쉘 스크립트 환경에 특화됨

Brat의 핵심 아키텍처: POSIX 쉘, awk, 파이프라인

Brat은 POSIX 쉘(Shell)과 awk, 유닉스 파이프라인(Unix Pipeline)을 기반으로 구축되어 외부 의존성(External Dependency)을 최소화한다. 특히, POSIX.1-2024 표준을 준수하여 다양한 유닉스 환경에서 높은 이식성(Portability)을 보장한다. Brat은 쉘 스크립트(Shell Script) 개발자들이 기존에 사용하던 도구와 유사한 방식으로 테스트를 작성하고 실행할 수 있도록 설계되었다.

Brat vs. Bats: 비교 분석

Brat은 Bash Automated Testing System(Bats)의 정신적 후계자로서, Bats에 비해 더욱 간결한(Spartan) 설계를 채택했다. Brat은 쉘(Shell) 환경에 특화되어 있으며, 별도의 라이브러리(Library) 없이 테스트를 수행할 수 있다. 반면, Bats는 Bash에 의존하며, 다양한 헬퍼 함수(Helper Function)확장된 기능(Extended Feature)을 제공한다. Brat은 쉘 스크립트의 단순함(Simplicity)을 유지하면서 테스트 자동화를 구현하고자 하는 개발자에게 적합하다.

병렬 테스트 실행 및 TAP 형식 지원

Brat은 `-j` 옵션 또는 `$BRAT_JOBS` 환경 변수를 통해 병렬 테스트 실행(Parallel Test Execution)을 지원한다. 이를 통해 테스트 실행 시간을 단축하고, 개발 생산성을 향상시킬 수 있다. Brat은 테스트 결과를 TAP(Test Anything Protocol) 형식으로 출력하며, 터미널(Terminal) 환경에서는 실패한 테스트를 빨간색으로 강조 표시(Highlight)하여 가독성을 높인다. 또한, Brat은 테스트 실행 시 `$stdout` 및 `$stderr` 변수를 통해 표준 출력 및 표준 에러를 파일 경로로 제공하여, 데이터 격리 아키텍처(Data Isolation Architecture)를 구현한다.

테스트 작성 및 실행 방법

Brat을 사용하여 테스트를 작성하려면 `.brat` 확장자를 가진 파일에 테스트 케이스를 정의해야 한다. 각 테스트 케이스는 `@test` 지시어를 사용하여 정의되며, `run`, `match`, `compare` 등의 헬퍼 함수를 활용하여 테스트를 수행한다. 테스트 실행 시에는 `brat test/*.brat` 명령어를 사용하며, 특정 테스트 파일 또는 라인 번호를 지정하여 실행할 수도 있다. 또한, `-n` 및 `-e` 옵션을 사용하여 테스트를 필터링할 수 있다.

Brat, a parallel TAP testing harness for the POSIX shell