Menguji Skrip Bash dengan Bats
Tulis pengujian otomatis untuk skrip shell Anda menggunakan kerangka pengujian Bats guna menemukan regresi sebelum mencapai produksi.
Menguji Skrip Bash dengan Bats adalah pelajaran DevOps Bootcamp gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar DevOps Bootcamp, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus DevOps Bootcamp mencakup 4 pelajaran total.
Mengapa Menguji Skrip Shell?
Skrip yang berjalan tanpa pengawasan (cron, CI) dapat gagal tanpa terlihat. Pengujian otomatis memverifikasi perilaku agar perubahan tidak merusak kode yang sudah berfungsi.
Memperkenalkan Bats
Bats (Bash Automated Testing System) adalah kerangka kerja yang sesuai dengan TAP untuk menguji kode shell. Pengujian itu sendiri berupa berkas Bash.
# Install on Debian/Ubuntu
sudo apt-get install batsStruktur Berkas Pengujian
Berkas Bats diakhiri dengan .bats dan mendefinisikan pengujian menggunakan kata kunci @test serta deskripsi.
@test "addition works" {
result=$(( 2 + 2 ))
[ "$result" -eq 4 ]
}Menjalankan Pengujian
Jalankan satu berkas atau seluruh direktori dengan perintah bats. Pengujian berhasil jika setiap perintah di dalamnya keluar dengan status 0.
bats test/
bats math.batsPembantu run
Perintah run menjalankan perintah dan menangkap kode keluarnya dalam $status serta keluarannya dalam $output tanpa membatalkan pengujian.
@test "ls succeeds" {
run ls /tmp
[ "$status" -eq 0 ]
}Membuat Pernyataan atas Keluaran
Bandingkan $output dengan teks yang diharapkan. Anda juga dapat mengindeks baris tertentu dengan ${lines[0]}.
@test "echo prints hello" {
run echo hello
[ "$output" = "hello" ]
}Menguji Kasus Kegagalan
Pengujian yang baik juga memeriksa jalur kesalahan. Pastikan $status bernilai bukan nol saat perintah seharusnya gagal.
@test "missing file fails" {
run cat /no/such/file
[ "$status" -ne 0 ]
}Penyiapan dan Pembersihan
Tentukan fungsi setup() dan teardown() yang berjalan sebelum dan sesudah setiap pengujian untuk menyiapkan dan membersihkan perlengkapan pengujian.
setup() {
TMP=$(mktemp -d)
}
teardown() {
rm -rf "$TMP"
}Memuat Kode yang Diuji
Untuk menguji fungsi, muat skrip Anda agar fungsinya tersedia, lalu panggil fungsi tersebut secara langsung di dalam pengujian.
setup() {
source ./lib/utils.sh
}
@test "slugify lowercases" {
run slugify "Hello World"
[ "$output" = "hello-world" ]
}Melewati dan Menunda Pengujian
Gunakan skip untuk menandai pengujian sebagai belum diterapkan atau tidak didukung pada platform saat ini, dengan alasan opsional.
@test "windows-only feature" {
skip "not supported on Linux"
}Mengintegrasikan dengan CI
Karena bats mengembalikan kode keluar bukan nol saat gagal, perintah ini dapat langsung digunakan dalam pipeline CI sebagai gerbang sebelum penerapan.
# CI step
bats --tap test/ || exit 1Pemeriksaan Cepat
Uji pengetahuan Anda tentang Bats.
Ringkasan
Sekarang Anda dapat menguji Bash dengan Bats:
- Tentukan pengujian dengan
@test; berhasil berarti semua perintah keluar dengan status 0 - Gunakan
rununtuk menangkap$statusdan$output - Siapkan perlengkapan pengujian dengan
setup/teardown - Muat skrip untuk menguji fungsi dan menjadikan hasilnya sebagai gerbang CI
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Menguji Skrip Bash dengan Bats” gratis?
Ya — teks lengkap “Menguji Skrip Bash dengan Bats” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus DevOps Bootcamp, upgrade ke CoddyKit PRO. Kursus DevOps Bootcamp mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Menguji Skrip Bash dengan Bats”?
Tulis pengujian otomatis untuk skrip shell Anda menggunakan kerangka pengujian Bats guna menemukan regresi sebelum mencapai produksi. Kamu berlatih DevOps Bootcamp dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai DevOps Bootcamp?
Tidak diperlukan pengalaman sebelumnya. DevOps Bootcamp di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Menguji Skrip Bash dengan Bats” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran DevOps Bootcamp ini?
Ya. Setiap pelajaran DevOps Bootcamp menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Men-debug Skrip Bash (set -x, trap)
- Penanganan Galat & Status Keluar
- Praktik Terbaik Pembuatan Skrip & Linting
- Menguji Skrip Bash dengan Bats