Bats로 Bash 스크립트 테스트하기
Bats 테스트 프레임워크를 사용해 셸 스크립트의 자동화된 테스트를 작성하고, 문제가 운영 환경에 도달하기 전에 회귀를 발견하는 방법을 배웁니다.
Bats로 Bash 스크립트 테스트하기은(는) CoddyKit의 무료 DevOps Bootcamp 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 DevOps Bootcamp 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
셸 스크립트를 테스트하는 이유
사람의 개입 없이 실행되는 스크립트(cron, CI)는 조용히 실패할 수 있습니다. 자동화된 테스트는 동작을 검증하므로 변경 사항이 정상적으로 작동하던 코드를 망가뜨리지 않습니다.
Bats 소개
Bats(Bash 자동화 테스트 시스템)는 셸 코드를 테스트하기 위한 TAP 호환 프레임워크입니다. 테스트 자체도 Bash 파일입니다.
# Install on Debian/Ubuntu
sudo apt-get install bats테스트 파일의 구성
Bats 파일의 확장자는 .bats이며 @test 키워드와 설명으로 테스트를 정의합니다.
@test "addition works" {
result=$(( 2 + 2 ))
[ "$result" -eq 4 ]
}테스트 실행하기
bats 명령으로 파일 하나 또는 전체 디렉터리를 실행합니다. 내부의 모든 명령이 0으로 종료되면 테스트가 통과합니다.
bats test/
bats math.batsrun 도우미
run 명령은 명령을 실행하고 종료 코드는 $status에, 출력은 $output에 저장하면서 테스트를 중단하지 않습니다.
@test "ls succeeds" {
run ls /tmp
[ "$status" -eq 0 ]
}출력 검증하기
$output을 예상 텍스트와 비교합니다. ${lines[0]}으로 특정 줄을 인덱싱할 수도 있습니다.
@test "echo prints hello" {
run echo hello
[ "$output" = "hello" ]
}실패 사례 테스트하기
좋은 테스트는 오류 경로도 확인합니다. 명령이 실패해야 할 때 0이 아닌 $status를 검증합니다.
@test "missing file fails" {
run cat /no/such/file
[ "$status" -ne 0 ]
}설정과 정리
각 테스트 전에 실행할 setup() 함수와 후에 실행할 teardown() 함수를 정의해 테스트 픽스처를 준비하고 정리합니다.
setup() {
TMP=$(mktemp -d)
}
teardown() {
rm -rf "$TMP"
}테스트 대상 코드 불러오기
함수를 테스트하려면 스크립트를 불러와 해당 함수들을 사용할 수 있게 한 다음, 테스트 내부에서 직접 호출합니다.
setup() {
source ./lib/utils.sh
}
@test "slugify lowercases" {
run slugify "Hello World"
[ "$output" = "hello-world" ]
}테스트 건너뛰기 및 보류하기
skip을 사용하면 테스트를 아직 구현되지 않았거나 현재 플랫폼에서 지원되지 않는 것으로 표시할 수 있으며, 선택적으로 이유를 덧붙일 수 있습니다.
@test "windows-only feature" {
skip "not supported on Linux"
}CI와 통합하기
bats는 실패 시 0이 아닌 종료 코드를 반환하므로 배포 전에 통과 여부를 확인하는 CI 파이프라인에 바로 연결할 수 있습니다.
# CI step
bats --tap test/ || exit 1빠른 확인
Bats에 대한 지식을 확인해 보십시오.
요약
이제 Bats로 Bash를 테스트할 수 있습니다.
@test로 테스트를 정의하며 모든 명령이 0으로 종료되면 통과합니다run으로$status와$output을 캡처합니다setup/teardown으로 픽스처를 준비합니다- 스크립트를 불러와 함수를 테스트하고 결과에 따라 CI를 진행하거나 중단합니다
자주 묻는 질문
“Bats로 Bash 스크립트 테스트하기” 강의는 무료인가요?
네 — “Bats로 Bash 스크립트 테스트하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 DevOps Bootcamp 강의 전체를 잠금 해제할 수 있습니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
“Bats로 Bash 스크립트 테스트하기”에서 뭘 배우나요?
Bats 테스트 프레임워크를 사용해 셸 스크립트의 자동화된 테스트를 작성하고, 문제가 운영 환경에 도달하기 전에 회귀를 발견하는 방법을 배웁니다. 브라우저에서 직접 실행하는 실습 코드로 DevOps Bootcamp을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
DevOps Bootcamp을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 DevOps Bootcamp은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“Bats로 Bash 스크립트 테스트하기” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 DevOps Bootcamp 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 DevOps Bootcamp 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Bash 스크립트 디버깅(set -x, trap)
- 오류 처리와 종료 상태
- 스크립트 작성 모범 사례와 린팅
- Bats로 Bash 스크립트 테스트하기