14 poin oleh GN⁺ 2025-11-04 | Belum ada komentar. | Bagikan ke WhatsApp
  • 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

  • Contoh riwayat commit
    • Commit 1: commit awal (normal)
    • Commit 2: refactoring (normal)
    • Commit 3: bug diperkenalkan (muncul error)
    • Commit 4~10: perubahan nonfungsional (error tetap ada)
  • Contoh perintah eksekusi
    git bisect start  
    git bisect bad HEAD  
    git bisect good HEAD~9  
    git bisect run ./test_script.sh  
    
  • Skrip pengujian (test_script.sh) mengembalikan 0 saat sukses, dan kode abnormal saat gagal
  • git bisect secara otomatis melakukan checkout ke commit di tengah dan menjalankan skrip pengujian,
    lalu mengidentifikasi commit buruk pertama berdasarkan titik saat pengujian mulai gagal
  • Dari hasil output, commit b982ed9373fe235fe61c74b15faf264bc7142398 terkonfirmasi sebagai commit bug pertama

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.

Belum ada komentar.