Episode ini membahas kesiapan operasional test suite: runbook untuk suite gagal dan flaky test, pengelolaan debugging dan kepemilikan test, strategi maintenance skala besar, serta pemulihan dari test regressions.

Suite test adalah sistem yang juga perlu dioperasikan: dia bisa sakit, flaky, dan mengalami regresi seperti halnya aplikasi produksi. Episode 19 membahas operational readiness & runbooks — dokumen prosedur yang siap pakai saat suite gagal, pengelolaan debugging dan kepemilikan test, strategi maintenance untuk skala besar, serta pemulihan dari test regressions.
Bedakan dua cara menangani masalah: reaktif, yang baru bergerak setelah masalah terjadi, dan prosedural, yang punya langkah siap pakai sejak awal. Runbook mengubah tim dari mode reaktif menjadi mode prosedural.
Tim yang tangguh tidak menghafal cara menangani kegagalan; mereka punya runbook. Episode ini mengajarkan kalian menyusunnya.
Runbook pertama yang dibutuhkan: apa yang dilakukan saat suite gagal. Prosedur standarnya:
npx jest --runInBand --silent=false 2>&1 | tee test-output.logPerintah npx jest --runInBand --silent=false menjalankan suite serial dan menyalin semua output ke file log — artefak yang berguna untuk investigasi atau diskusi tim.
Flaky test memiliki runbook tersendiri karena polanya khas: terkadang lulus, terkadang gagal. Langkahnya:
--runInBand; jika lulus, kemungkinan race kondisi paralel.Debug test yang gagal bukan tebak-tebakan. Mulai dari assertion yang paling spesifik, lalu persempit:
npx jest --runInBand -t "nama test yang gagal"Perintah npx jest --runInBand -t "nama test yang gagal" menjalankan hanya test yang dicurigai dalam satu proses. Kombinasikan dengan console.log di dalam test — output muncul di terminal dan membantu memahami nilai aktual.
Setiap kali kalian memecahkan kegagalan yang tidak biasa, catat langkah-langkahnya ke runbook tim. Temuan seperti "gagal hanya saat --maxWorkers di atas 4" atau "snapshot berubah karena timezone" adalah pengetahuan yang sangat berharga — dan akan hilang jika hanya tersimpan di kepala. Runbook yang hidup tumbuh setiap kali tim memecahkan masalah nyata.
Setiap area test harus punya pemilik yang jelas: tim atau orang yang bertanggung jawab saat test area itu gagal. Tanpa kepemilikan, kegagalan berlarut-larut karena semua orang menganggap bukan bagiannya. Tandai kepemilikan di struktur direktori atau konvensi penamaan, dan pastikan alert dari CI menyebutkan kontak pemilik.
Semakin besar suite, semakin penting memisahkan jenis test dan frekuensi menjalankannya:
Dengan pemisahan ini, feedback cepat tetap terjaga sementara pengujian menyeluruh tetap berjalan sebelum produksi. Konfigurasi testMatch yang dipisah per jenis atau label project memudahkan penjadwalan ini. Pada tahap inilah project mode dan --selectProjects dari episode 17 benar-benar bersinar.
Jadikan pemeriksaan suite sebagai rutinitas otomatis: coverage trend di CI, deteksi flaky dengan menjalankan suite ganda di malam hari, dan laporan mingguan ke tim. Data rutin ini membuat masalah terdeteksi kecil-kecilan, bukan menumpuk jadi krisis. Mulailah dari satu metrik yang paling mudah diukur — misalnya persentase suite yang lulus dalam seminggu — lalu perluas saat prosesnya sudah berjalan mulus.
Saat sebuah test yang tadinya lulus mulai gagal, langkah pertama adalah menemukan kapan perubahannya. Git adalah alat utamanya:
git log --oneline -- src/kalkulator.test.jsgit log --oneline -- <file> menampilkan riwayat commit file test. Periksa diff pada commit tempat test berubah — itu biasanya tempat regresi muncul. Jika perlu, gunakan git bisect untuk menemukan commit penyebab secara otomatis.
Ketika banyak test yang terdampak sekaligus, periksa pola umumnya: apakah semuanya menyentuh satu helper yang sama, satu fungsi utilitas, atau satu perubahan konfigurasi? Pola tersebut sering kali menunjuk ke satu akar penyebab yang lebih besar daripada sekadar satu file yang salah.
Ketika regresi ditemukan, dua jalur penyembuhan: revert perubahan yang memecahkan, atau perbaiki ke depan. Pilih revert jika perubahannya kecil dan bisa dibatalkan; pilih perbaikan ke depan jika perubahan itu disengaja dan harus tetap ada. Setelah sembuh, dokumentasikan di runbook agar kejadian serupa ditangani lebih cepat berikutnya.
Kegagalan suite yang berkepanjangan menggerus kepercayaan tim, jadi komunikasikan dengan jujur. Saat suite rusak, beri tahu tim secepatnya, sebutkan area yang terdampak, dan berikan estimasi perbaikan. Jangan membungkam kegagalan dengan me-skip test atau menurunkan threshold coverage hanya untuk membuat build hijau — solusi itu menggeser masalah ke masa depan dengan harga yang mahal.
Episode 19 membahas kesiapan operasional: runbook untuk suite gagal dan flaky test, debugging terstruktur dengan kepemilikan test yang jelas, strategi maintenance skala besar dengan pemisahan jenis test, serta pemulihan dari regresi memakai Git.
Inti yang harus dibawa pulang:
--runInBand -t "nama test" mengisolasi satu test untuk debugging.git log dan git bisect untuk menemukan sumber regresi.Di episode 20 selanjutnya kita akan membahas use cases & testing patterns — contoh nyata untuk frontend app, API client, dan library package, pola behavior-driven testing, data-driven test dengan parameterized cases, serta best practices pengorganisasian test.