Apa itu bug?

Dalam teknologi komputer, bug adalah kesalahan dalam penulisan kode pada sebuah program komputer. (Program di sini juga mencakup microcode yang dibuat langsung di dalam mikroprosesor.) Proses untuk menemukan bug — sebelum ditemukan oleh pengguna — disebut debugging. Debugging dimulai setelah kode ditulis dan terus dilakukan secara bertahap saat kode digabungkan dengan unit pemrograman lainnya untuk membentuk produk perangkat lunak seperti sistem operasi atau aplikasi.

Bug sering kali baru ditemukan setelah produk dirilis atau saat beta testing publik. Kalau itu terjadi, pengguna biasanya harus mencari cara untuk menghindari penggunaan kode yang bermasalah atau menunggu patch dari pengembang perangkat lunak.

Bug cuma salah satu jenis masalah yang bisa muncul dalam sebuah program. Kadang program berjalan tanpa bug, tapi tetap sulit digunakan atau gagal mencapai tujuan utamanya. Masalah kayak gini biasanya lebih sulit untuk dites. Program yang dirancang dengan baik dan dikembangkan menggunakan proses yang terkendali bakal menghasilkan lebih sedikit bug per ribu baris kode. Makanya, pengujian untuk aspek usability juga penting banget.

Jenis-jenis bug perangkat lunak

Berbagai jenis bug bisa bikin komputer ngadat. Ini beberapa jenis bug yang paling umum:

  • Aritmatika. Kadang disebut juga kesalahan perhitungan, bug jenis ini muncul dari kesalahan dalam operasi matematika di kode yang menyebabkan fungsi program tidak berjalan sebagaimana mestinya.
  • Antarmuka. Bug ini muncul ketika sistem yang tidak kompatibel dihubungkan ke komputer. Bisa dari perangkat keras atau perangkat lunak. Salah satu contoh bug antarmuka adalah yang terjadi pada application programming interface.
  • Logika. Kesalahan ini terjadi saat logika dalam script menyebabkan program menghasilkan output yang salah atau malah tidak memberikan output sama sekali. Contoh bug logika adalah infinite loop di mana suatu kode berjalan terus-menerus tanpa henti.
  • Sintaks. Bug ini muncul karena kode ditulis dengan karakter yang salah. Setiap bahasa pemrograman punya sintaks yang beda-beda, jadi kalau pakai sintaks dari bahasa lain, bisa muncul bug.
  • Kerja tim. Bug ini muncul akibat miskomunikasi antar programmer. Misalnya, dokumentasi produk beda dengan kenyataan, atau komentar dalam kode tidak sesuai dengan fungsinya.

Cara lain yang lebih sederhana untuk mengkategorikan bug adalah berdasarkan sudut pandang pengguna. Jenis-jenisnya meliputi:

  • Visual. Fungsi aplikasi bisa digunakan, tapi tampilannya ada yang aneh. Ini biasanya masalah pada desain responsif aplikasi.
  • Fungsional. Bug fungsional berarti program tidak berjalan sesuai harapan. Contohnya, pengguna klik tombol Save, tapi datanya tidak tersimpan.

Bug juga bisa diklasifikasikan berdasarkan seberapa besar dampaknya bagi pengguna:

  • Bug berdampak rendah hanya memberi efek kecil terhadap pengalaman pengguna.
  • Bug berdampak tinggi memengaruhi sebagian fungsi, tapi aplikasi masih bisa digunakan.
  • Bug kritis menghambat fungsi utama dari aplikasi.

Cara lain untuk mengklasifikasikan bug adalah berdasarkan lokasi terjadinya:

  • Bug level unit adalah bug sederhana dalam satu unit kode. Biasanya berasal dari kesalahan perhitungan atau logika dan hanya memengaruhi satu bagian software. Bug jenis ini relatif mudah diperbaiki.
  • Bug level sistem lebih kompleks, disebabkan oleh interaksi antar beberapa bagian perangkat lunak yang menimbulkan masalah.
  • Bug out-of-bound muncul saat pengguna berinteraksi dengan program secara tak terduga. Misalnya, mengisi form dengan parameter yang tidak dikenali program. Bug jenis ini bisa jadi celah keamanan. Contohnya, eksploitasi vulnerabilitas Infra:Halt yang bisa dipakai untuk melakukan serangan cache poisoning pada teknologi operasional.

Cara mencegah bug

Ada berbagai cara buat mengatasi bug, tergantung jenis dan kapan serta di mana bug itu ditemukan.

Proses pengembangan

Cara terbaik mengatasi bug adalah dengan mencegahnya sejak awal. Penggunaan proses pengembangan perangkat lunak yang baik, seperti metode Agile dan DevOps, bisa membantu mencegah bug sebelum terjadi. Pengujian kualitas sudah jadi bagian dari metodologi ini.

Salah satu praktik terbaiknya adalah test-driven development, yaitu menulis tes dulu sebelum menulis fitur, biar ada standar pengujian saat menulis kodenya.

Praktik lainnya adalah behavior-driven development, yang mendorong pengembang untuk membuat kode dan dokumentasi berdasarkan cara pengguna akan berinteraksi dengan aplikasi.

Pengujian perangkat lunak

Testing adalah cara buat nemuin bug dalam perangkat lunak. Tiga jenis utama pengujian software antara lain:

  1. Functional testing ngetes bagian inti dari program sebelum lanjut ke tahap pengujian berikutnya. Ini buat memastikan semua bagian berfungsi dengan benar. Functional testing juga dikenal sebagai smoke testing.
  2. Exploratory testing ngetes jalur program yang tidak umum atau yang mungkin terlewat saat tes fungsional biasa. Contohnya, coverage test yang memastikan aplikasi berjalan di berbagai perangkat, browser, atau sistem operasi.
  3. Regression testing ngecek apakah perubahan sebelumnya menyebabkan masalah baru. Regression testing biasanya mencakup:

Selain pengujian, review kode oleh sesama developer atau tim QA (quality assurance) juga bisa bantu cegah bug sampai ke pengguna akhir.

Benchmarking

Benchmarking atau benchmark testing dipakai buat menetapkan standar performa dasar dari software di bawah berbagai beban kerja. Benchmark bisa mengevaluasi stabilitas, kecepatan respons, performa, dan efektivitas software.

Bug yang ngumpet dalam kondisi normal bisa muncul saat kondisi berubah. Pengujian benchmark bisa bantu mendeteksi bug seperti ini. Beberapa jenis benchmarking antara lain:

  • Load benchmarking mengetes sistem software di bawah beban tertentu, biasanya beban lalu lintas normal aplikasi.
  • Spike benchmarking mengetes performa saat terjadi lonjakan beban secara tiba-tiba.
  • Breakpoint benchmarking mendorong sistem sampai batasnya untuk melihat seberapa besar stres yang bisa ditahan sebelum crash.

Cara memperbaiki bug

Debugging

Kalau ada bug ditemukan, langkah selanjutnya adalah debugging. Debugging biasanya melibatkan tiga langkah:

  1. mengisolasi bug-nya
  2. menentukan akar penyebab
  3. memperbaiki masalah tersebut

Kadang susah buat programmer untuk melacak ulang kode yang mereka tulis, apalagi kalau kodenya rumit. Salah satu cara untuk membantu adalah lewat program bug bounty, yang ngajak komunitas untuk bantu nyari bug. Peneliti keamanan dan hacker etis bisa dapet hadiah kalau berhasil nemuin dan ngelaporin bug dengan bukti yang valid.

Perbaikan berkelanjutan

Organisasi yang pengen ngurangin jumlah bug perlu seimbang dalam melakukan rilis dan rollback perangkat lunak. Tujuannya biar proses debugging nggak ganggu jadwal rilis rutin, seperti yang biasa dilakukan dalam pengembangan Agile.

Tapi ya, tetap aja bakal ada bug yang lolos ke versi rilis. Tim pengembang bisa anggap rilis sebagai bagian dari proses debugging, dengan ngumpulin feedback, gagal cepat, lalu langsung diperbaiki.

Tim bisa menjadwalkan waktu khusus tiap hari untuk nanganin bug. Ini bantu proses debugging jadi rutinitas. Data dari proses ini bisa dipakai buat ngukur estimasi waktu perbaikan dan alokasi tenaga kerja.

Nggak semua bug bisa diperbaiki sekaligus, dan perlu waktu buat ngumpulin data estimasi. Kemampuan programmer beda-beda, dan waktu perbaikan juga bisa berbeda tergantung lokasi. Tapi lama-lama, tim bisa nyusun standar estimasi, misalnya berapa bug yang bisa mereka tangani per bulan.

Debugging itu proses yang nggak pernah selesai. Selalu ada bug baru. Yang penting, tim pengembang bisa nangani bug secara efisien dan kasih nilai tambah dengan tiap rilis software.

Sejarah bug perangkat lunak

Kata bug awalnya berasal dari dunia teknik. Istilah ini mulai populer di dunia komputer berkat Grace Hopper, seorang programmer pionir. Tahun 1944, Hopper yang saat itu bertugas di Angkatan Laut AS kerja di komputer Mark I di Harvard. Dia kemudian cerita soal kejadian di mana seorang teknisi menarik seekor serangga — ternyata ngengat — dari antara dua relay listrik di komputer Mark II. Ngengat itu sempat dipajang oleh Angkatan Laut, dan sekarang disimpan oleh Smithsonian.

Meskipun bug biasanya cuma ganggu komputer glitch biasa, dampaknya bisa serius. Artikel Wired tahun 2005 tentang 10 bug terburuk dalam sejarah nyebut bug yang menyebabkan ledakan besar, membuat misi luar angkasa gagal, bahkan menyebabkan kematian. Misalnya, pada tahun 1982, sistem yang katanya ditanam oleh CIA di pipa gas Trans-Siberia menyebabkan ledakan non-nuklir terbesar dalam sejarah.

Artikel itu juga nyebut bahwa antara tahun 1985 sampai 1987, bug race condition di perangkat terapi radiasi menyebabkan overdosis yang membunuh lima orang dan melukai yang lain. Di tahun 2005, Toyota menarik 160.000 unit Prius karena bug yang bikin lampu peringatan menyala dan mesin mati tiba-tiba.

Kasus bug lain yang terkenal terjadi tahun 2016, saat fitur Autopilot Tesla gagal mengenali truk putih yang melintas di depan mobil karena latar langit yang terang. Mobil akhirnya menabrak dan menyebabkan korban jiwa.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *