Mengidentifikasi dan Memperbaiki Kesalahan
Diperkenalkan| English | Makna |
|---|---|
| bug/bʌɡ/ | bug |
| debugging/ˈdiːbʌɡɪŋ/ | debugging |
| syntax error/ˈsɪntæks ˈerə/ | syntax error |
| logic error/ˈlɒdʒɪk ˈerə/ | logic error |
| runtime error/ˈrʌntaɪm ˈerə/ | runtime error |
| overflow error/ˌəʊvəˈfləʊ ˈerə/ | overflow error |
| edge case/edʒ keɪs/ | edge case |
| expected output/ekˈspektɪd ˈaʊtpʊt/ | expected output |
Setiap program memiliki kesalahan
- Tidak peduli seberapa hati-hati timnya, program tetap mengandung kesalahan.
- Kesalahan dalam program disebut bug (kecicilan).
- Menemukan dan memperbaiki bug disebut debugging (pelacakan kesalahan).
- Keahlian dalam debugging merupakan salah satu kemampuan paling berharga yang dapat dimiliki seorang programmer.
Jenis kesalahan apa?
Kesalahan sintaks menghentikan program berjalan; kesalahan logika berjalan tetapi memberikan jawaban salah; kesalahan runtime membuatnya crash di tengah jalan; kesalahan overflow melebihi penyimpanan.
Kegiatan menemukan dan memperbaiki kesalahan dalam program disebut ______.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Kesalahan adalah bug; memperbaiki bug adalah debugging.
Kurung yang hilang yang menghentikan program berjalan adalah sebuah:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Melanggar aturan bahasa adalah kesalahan sintaksis.
Mengapa kesalahan logika sering kali yang paling sulit ditemukan?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Tidak ada yang jelas rusak, jadi Anda harus membandingkan output dengan apa yang Anda harapkan.
Jenis-jenis kesalahan utama
- Kesalahan sintaksis melanggar aturan bahasa pemrograman (misalnya kurung yang hilang)—program menolak untuk dijalankan.
- Kesalahan logika berjalan tetapi menghasilkan hasil yang salah, karena instruksi tidak sesuai dengan rencana.
- Kesalahan waktu eksekusi membuat program crash (hancur) saat sedang berjalan—seperti membagi dengan nol.
- Kesalahan overflow terjadi ketika nilai terlalu besar untuk muatan ruang penyimpanannya.
Pengujian dengan kasus batas (input kosong, angka sangat besar) membantu menemukan bug tersembunyi.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Bug sering bersembunyi di batas-batas apa yang diharapkan program.
Untuk mendeteksi bug dalam pengujian, Anda membandingkan output aktual dengan:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Perbedaan antara output aktual dan yang diharapkan mengindikasikan adanya bug.
Cara menemukannya
- Uji dengan banyak input, termasuk yang tidak biasa—angka yang sangat besar, input kosong, atau kasus batas di ambang batas.
- Bandingkan output aktual dengan output yang diharapkan; perbedaan mengindikasikan adanya bug.
- Tambahkan perintah cetak sementara untuk melihat nilai internal, sehingga Anda tahu di mana hal pertama kali menjadi salah.
- Bagi dan periksa: pastikan satu bagian benar, lalu sempitkan pencarian pada bagian lainnya.
Anda harus menguji ulang seluruh program setelah memperbaiki bug, karena perbaikan dapat menciptakan bug baru.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Pengujian ulang yang teliti membuat perangkat lunak dapat dipercaya.
Perbaiki, lalu uji ulang
- Kesalahan logika adalah yang paling sulit—tidak ada yang "rusak" secara nyata, jawabannya hanya saja salah.
- Memperbaiki satu bug bisa menciptakan bug baru.
- Oleh karena itu, setelah setiap perbaikan, uji ulang seluruh program.
- Pengujian yang teliti dan berulang mengubah prototipe kasar menjadi perangkat lunak yang bisa dipercaya orang.
"Berjalan" bukan berarti "benar." Kesalahan logika berjalan tanpa crash dan tanpa pesan—program terlihat baik-baik saja tetapi jawabannya salah. Satu-satunya cara untuk mendeteksinya adalah membandingkan output dengan apa yang Anda harapkan, bukan sekadar memastikan program berhasil dijalankan.
Sebuah bug adalah kesalahan; memperbaiki bug adalah debugging. Kesalahan sintaksis menghentikan program, kesalahan logika berjalan tapi memberi jawaban salah, kesalahan waktu eksekusi membuatnya crash di tengah jalan, dan kesalahan overflow melebihi kapasitas penyimpanan. Temukan bug dengan menguji banyak input (terutama kasus batas) berbanding output yang diharapkan, dan selalu uji ulang setelah perbaikan.