- Konsep pencarian biner (binary search) tidak hanya dipakai dalam soal wawancara, tetapi juga dimanfaatkan dalam Git sebagai alat pengembangan nyata
- Di lingkungan monorepo berskala besar, ketika pengujian tiba-tiba gagal, ada situasi di mana penyebabnya sulit dilacak hanya dari log
- Seorang rekan menentukan commit baik dan commit buruk lalu menjalankan pencarian otomatis dengan
git bisect, sehingga berhasil menemukan dengan tepat commit bermasalah tempat bug mulai muncul
- Pada setiap tahap, skrip dijalankan untuk mengklasifikasikan commit secara otomatis berdasarkan hasil pengujian, lalu mengidentifikasi commit pertama yang gagal
- Dengan memanfaatkan prinsip pencarian biner,
git bisect adalah alat yang sangat kuat untuk melacak penyebab bug dengan cepat di codebase berskala besar
Algoritme dan kasus nyata
- Algoritme pencarian biner (binary search) tidak berhenti sebagai soal wawancara sederhana, tetapi juga menjadi prinsip inti dalam alat debugging nyata
git bisect dapat digunakan sebagai alat yang memakai pencarian biner untuk menemukan “commit pertama yang memperkenalkan bug (first bad commit)”
- Bekerja dengan prinsip yang mirip dengan soal “First Bad Version” di Leetcode
Situasi masalah di lingkungan kerja nyata
- Dalam lingkungan yang menggunakan monorepo besar, ratusan hingga ribuan commit bisa terjadi setiap hari
- Penyebab kegagalan pengujian tertentu sulit dilacak hanya dari log
- Penyebab kegagalan adalah perubahan string dalam file konfigurasi untuk mendapatkan token yang dibutuhkan untuk pemanggilan jarak jauh, sehingga mengacu ke akun lain dan membuat pengujian gagal
- Perubahan ini lolos pengujian integrasi, tetapi sebenarnya menimbulkan masalah, dan sulit menemukan pada titik mana di antara begitu banyak commit hal itu mulai terjadi
Menyelesaikan masalah dengan git bisect
- Seorang rekan dari tim lain menggunakan perintah
git bisect untuk dengan cepat mengidentifikasi commit bermasalah
- Setelah menentukan commit baik (good) dan commit buruk (bad), alat ini secara otomatis melakukan checkout ke commit-commit di tengah, menjalankan pengujian, dan mempersempit sumber masalah
- Setiap eksekusi pengujian memang memerlukan waktu, tetapi pada akhirnya berhasil menemukan commit yang tepat yang memperkenalkan masalah
- Setelah commit tersebut dibatalkan, semua pengujian kembali normal
Proses menjalankan git bisect
Kesimpulan
git bisect adalah alat praktis yang menerapkan prinsip pencarian biner pada penelusuran riwayat kode
- Bahkan dalam repositori besar atau riwayat perubahan yang kompleks, alat ini dapat dengan cepat melacak kapan bug mulai diperkenalkan
- Jika dikombinasikan dengan otomatisasi pengujian, debugging yang stabil tetap memungkinkan bahkan di codebase berskala besar
Belum ada komentar.