“Bug” dalam bahasa Inggris berarti kutu atau binatang kecil, merupakan istilah populer yang cukup menakutkan dalam pembuatan aplikasi, terutama karena efek kerusakan yang ditimbulkan terkadang tidaklah kecil. Bug merupakan kesalahan atau kerusakan program yang menyebabkan satu atau lebih fungsi tidak berjalan sebagaimana mestinya. Salah satu pencegahan bug adalah dengan melakukan testing pada aplikasi. Testing aplikasi merupakan suatu kegiatan untuk mengidentifikasikan keberhasilan, kelengkapan, keamanan, dan kualitas pada aplikasi yang bersangkutan. Karena itu, testing aplikasi merupakan kegiatan yang sangat penting sebelum Anda memperkenalkan aplikasi Anda pada masyarakat luas. Testing bertujuan untuk menemukan bug, testing merupakan proses membandingkan output nyata dengan out-put yang diharapkan. Sebuah bug menyebabkan kerusakan, walau demikian harus dimengerti bahwa tidak semua kerusakan disebabkan oleh bug. Agar tidak rancu dengan pengertian bug aplikasi, sebelum itu Anda perlu mengenal beberapa istilah kesalahan yang sering terjadi sewaktu aplikasi berjalan, antara lain:
1. Crash.
Yaitu saat sistem atau komponen komputer mengalami gangguan secara tiba-tiba. Aplikasi dapat menutup dengan sendirinya, atau untuk kasus yang lebih parah, dapat terjadi hang pada komputer yang menyebabkan Anda harus melakukan restart. Crash tidak selalu berasal dari bug aplikasi, crash dapat berasal dari permasalahan hardware, operating system, ataupun software lainnya. Tetapi, bug aplikasi dapat saja menyebabkan crash.
2. Anomaly.
Saat sebuah aplikasi menghasilkan sesuatu yang ganjil dan menyimpang dari dokumentasi operasional aplikasi tersebut, maka hal ini disebut anomaly. Hal ini bukan merupakan bug jika fungsi aplikasi berjalan dengan baik, hanya saja
tidak dibuat sesuai dengan dokumentasi atau harapan sebelumnya.
3. Fault.
Kesalahan yang terjadi karena kesalahan urutan langkah, proses, atau definisi data sehingga menyebabkan program melakukan proses yang tidak diantisipasi.Kesalahan ini dapat disebabkan karena kesalahan melakukan prosedur aplikasi.
4. Mistake.
Kegiatan yang dilakukan pengguna sehingga menyebabkan aplikasi mengeluarkan hasil yang salah. Istilah GIGO (Garbage In Garbage Out) menunjukkan bahwa output yang salah dapat disebabkan karena input yang salah. Kesalahan seperti ini bukan merupakan bug aplikasi. Walaupun demikian, aplikasi yang baik melakukan validasi input yang diperlukan untuk mencegah program mengeluarkan hasil dengan kesalahan yang fatal. Dapat diambil kesimpulan, bahwa tidak semua kesalahan yang terjadi berasal dari bug aplikasi. Terkadang kesalahan yang terjadi berada di luar kontrol aplikasi itu sendiri. Testing yang dilakukan tidak mungkin mencakup seluruh aspek seperti operating system, hardware, ataupun pengaruh software-software lainnya terhadap aplikasi. Walaupun untuk beberapa kasus, perlu dilakukan testing terhadap aspek-aspek tersebut. Tetapi hanya jika aplikasi yang Anda buat berhubungan erat dengan aspek tersebut. Testing sebaiknya sudah dilakukan sejak awal pembuatan aplikasi dan terus berlanjut, testing yang hanya dilakukan pada akhir development dapat berisiko besar. Terutama jika aplikasi yang dibuat memiliki skala yang cukup besar.
Sebagai contoh sederhana, Anda melakukan testing suatu aplikasi pada akhir development, kemudian Anda menemukan sebuah bug, yaitu salah satu field penting yang seharusnya memiliki tipe data string, ternyata memiliki tipe data numerik. Sekilas merupakan kesalahan yang sederhana. Tetapi bayangkan, jika seluruh modul atau form pada aplikasi yang menggunakan field tersebut terlanjur memperlakukan field tersebut sebagai numerik, maka Anda harus memeriksa ulang seluruh modul/form yang berhubungan dengan field tersebut. Dan jika perlu melakukan perubahan terhadapnya. Hal ini tentu tidak perlu terjadi jika sedari awal Anda telah melakukan testing dan menyadari kesalahan tersebut sebelum membuat lebih banyak form dan modul yang berhubungan dengan bug tersebut.
Panduan Proses Testing
Terdapat dua panduan utama untuk melakukan proses testing, yaitu:
1. Memeriksa bahwa aplikasi berfungsi sebagaimana mestinya. Misalnya Anda membuat aplikasi pendataan, pastikan bahwa Anda melakukan testing dengan mengisi seluruh field, dan data yang dimasukkan tersimpan dengan benar pada database.
2. Jika bug ditemukan dan telah diperbaiki, pastikan bahwa bagian-bagian lain dari aplikasi (sekalipun yang nampaknya tidak berhubungan dengan bug tersebut) masih berjalan dengan baik. Karena kadang tanpa disadari, perbaikan bug justru mendatangkan bug baru pada bagian yang lain.
Tahapan Testing
Terdapat cukup banyak pendekatan yang dilakukan untuk melakukan testing. Salah satu definisi testing adalah “sebuah proses yang melakukan pertanyaan terhadap sebuah produk untuk dinilai”, di mana “pertanyaan” merupakan segala sesuatu yang diberikan kepada produk sebagai pengujian.
Beberapa tahapan testing yang umum dilalui oleh aplikasi adalah sebagai berikut:
1. Unit/Component Testing.
Terbagi atas testing terhadap unit dan component. Unit testing merupakan proses testing, di mana Anda melakukan testing pada bagian basic dari kode program. Contohnya adalah memeriksa kode program pada event, procedure, dan function. Unit Testing meyakinkan bahwa masing-masing unit tersebut berjalan sebagaimana mestinya.Pada Unit Testing, Anda memeriksa bagian kode program secara terpisah dari bagian yang lain. Anda dapat langsung melakukan Unit Testing setiap kali sebuah kode unit (event, procedure, function) selesai dibuat. Anda dapat memeriksa kode unit dengan menjalankannya baris per baris untuk memastikan bahwa proses yang dilakukan berjalan sebagaimana yang Anda inginkan.
Termasuk di dalamnya adalah memeriksa masing-masing kondisi pada kode program. Sebagai contoh, kode program Anda memiliki statement If… Then… Else…., Anda perlu menyediakan dua set input untuk kondisi true maupun false dan memeriksa hasilnya masing-masing. Jika bagian kode program yang sedang Anda testing memanggil unit yang lain sebagai satu kesatuan, Anda masih dapat melakukan Unit Testing dengan menciptakan sebuah unit sederhana yang bertindak sebagai unit dummy. Metode ini dikenal dengan nama Stub. Jika bagian kode program yang sedang Anda testing perlu dipanggil oleh unit yang lain, Anda dapat menciptakan sebuah unit sederhana yang bertindak sebagai rutin pemanggil. Metode ini dikenal dengan nama Driver. Testing tambahan yang perlu Anda lakukan pada tahap ini adalah Component Testing.Meliputi testing pada fungsi-fungsi yang lebih kompleks yang tercakup menjadi suatu komponen, di mana fungsi-fungsi tersebut dapat dipecah menjadi unit-unit yang lebih kecil.
2. Integration Testing.
Setelah Anda melakukan Unit/Component Testing, langkah berikutnya adalah memeriksa bagaimana unit-unit tersebut bekerja sebagai suatu kombinasi, bukan lagi sebagai suatu unit yang individual. Sebagai contoh, Anda memiliki sebuah proses yang dikerjakan oleh dua function, di mana satu function menggunakan hasil output dari function yang lainnya. Kedua function ini telah berjalan dengan baik secara individu pada Unit Testing. Pada tahap Integration Testing, Anda memeriksa hasil dari interaksi kedua function tersebut, apakah bekerja sesuai dengan hasil yang diharapkan. Anda juga harus memastikan bahwa seluruh kondisi yang mungkin terjadi dari hasil interaksi antarunit tersebut menghasilkan output yang diharapkan.
3. System Testing.
Mencakup testing aplikasi yang telah selesai didevelop. Karena itu, aplikasi harus terlihat dan berfungsi sebagaimana mestinya terhadap end-user atau pengguna akhir. Untuk itu, testing dilakukan dengan menggunakan data yang menggambarkan data yang digunakan oleh pengguna sesungguhnya terhadap aplikasi. Jika aplikasi Anda di-develop untuk lingkungan yang besar,
Anda dapat melakukan testing pada dua komputer yang berbeda. Komputer yang Anda gunakan sebagai komputer testing harus terlebih dahulu dikonfigurasi hanya dengan:
a. Operating system yang dibutuhkan.
b. Driver yang diperlukan oleh aplikasi.
c. Aplikasi yang dites.
Dengan menggunakan konfi gurasi yang paling minimal dan sederhana, maka dapat membantu Anda untuk memastikan bahwa permasalahan yang timbul selama testing berlangsung adalah merupakan kesalahan aplikasi, dan bukan kesalahan yang berasal dari aplikasi atau software lain.
4. Acceptance Testing.
Seperti Integration Testing, Acceptance Testing juga meliputi testing keseluruhan aplikasi. Perbedaannya terletak pada siapa yang melakukan testing. Pada tahap ini, end-user yang terpilih melakukan testing terhadap fungsi-fungsi aplikasi dan melaporkan permasalahan yang ditemukan. Testing yang dilakukan merupakan simulasi penggunaan nyata dari aplikasi pada lingkungan yang sebenarnya. Proses ini merupakan salah satu tahap final sebelum pengguna menyetujui dan menerima penerapan sistem aplikasi yang
baru. Karena itu pada tahap ini sudah tidak difokuskan untuk mengangkat permasalahan kecil seperti kesalahan pengetikan, ataupun kosmetik aplikasi. Hal-hal minor seperti di atas sudah seharusnya ditangani selama Unit/Component Testing dan Integration Testing.
5. Regression Testing.
Merupakan bagian penting dari masing-masing tahap proses testing. Regression Testing mencakup pengujian ulang terhadap unit, component, proses, atau keseluruhan aplikasi setelah perbaikan suatu kesalahan dilakukan.Regression Testing memastikan permasalahan yang terjadi telah ditanggulangi, dan tidak terdapat permasalahan baru yang timbul sebagai efek perbaikan tersebut. Selain itu, tahap ini tidak hanya berguna untuk melakukan pengujian aplikasi, tetapi dapat juga digunakan untuk melakukan pemantauan kualitas dari output yang dihasilkan. Sebagai contoh, Regression Testing memantau ukuran file, waktu yang dibutuhkan untuk melakukan suatu tes, waktu yang dibutuhkan untuk melakukan kompilasi, dan lain sebagainya.
Keamanan
Aspek keamanan (security) menjadi salah satu topik paling hangat semenjak teknologi komputer berkembang pesat, sehingga untuk aplikasi yang memiliki akses terbuka dan mengharuskan tingkat keamanan yang tinggi, testing aplikasi harus mempertimbangkan pengujian keamanan aplikasi tersebut. Sebagai contoh adalah sebuah aplikasi e-commerce yang mengizinkan transaksi melalui kartu kredit. Cukup banyak terjadi kasus pemalsuan credit card dengan memanfaatkan kelemahan aplikasi e-commerce.Testing pada aplikasi internet atau jaringan, memerlukan pengetahuan tersendiri untuk memeriksa apakah terdapat kelemahan aplikasi, beberapa teknik yang digunakan oleh para hacker seperti SQL Injection, XSS, dan lain-lain harus diuji coba terhadap aplikasi Anda.
Untuk aspek keamanan ini, ada kalanya Anda memerlukan konsultan yang kompeten dan mengikuti perkembangan yang terjadi dalam hal keamanan data pada jaringan dan Internet. Konsultan akan memberikan langkah-langkah pencegahan yang perlu diambil, hal ini kadang tidak hanya melibatkan sisi programming aplikasi, tetapi juga dapat melibatkan sisi administrator sistem, mencakup konfigurasi operating system, web server, firewall, router, dan lain sebagainya. Tidak terbatas hanya untuk aplikasi internet seperti e-commerce, aplikasi intranet atau client server sekalipun harus memperhatikan sisi keamanan ini. Terlebih karena aplikasi stand-alone saat ini umumnya semakin ditinggalkan (kecuali untuk alasan-alasan tertentu).Walaupun masalah keamanan merupakan topik tersendiri, tetapi secara nyata sangat berhubungan erat dengan aplikasi. Sebagai contoh, sejak ditemukan teknik SQL Injection maka aplikasi web yang tidak mempedulikan masalah ini akan mendapatkan label aplikasi dengan lubang keamanan dan berisiko tinggi, atau memiliki bug.
Dokumentasi Testing
Dalam segala kegiatan, dokumentasi merupakan hal yang vital. Mungkin Anda pernah menangani aplikasi yang sebelumnya telah dikerjakan oleh orang lain, tetapi tidak menemukan sedikit pun dokumentasi mengenai aplikasi tersebut. Hal itu tentu akan merepotkan Anda. Testing termasuk salah satu kegiatan yang perlu didokumentasikan, bahkan merupakan suatu ide yang baik untuk menuliskan rencana testing sebelum memulai proses testing itu sendiri. Rencana testing tersebut akan menjelaskan semua fungsi-fungsi aplikasi yang diminta, hal ini dapat dijadikan patokan untuk penjadwalan testing. Untuk setiap proses testing, rencana Anda sebaiknya melakukan spesifi kasi untuk:
1. Masing-masing item yang dites.
2. Bagaimana item-item tersebut dites.
3. Hasil yang diharapkan.
4. Kriteria keberhasilan.
Dokumen Anda juga mengidentifikasikan saat Anda memutuskan untuk tidak melakukan testing terhadap fitur tertentu, dan menjelaskan alasannya. Selain itu, Anda perlu menjelaskan lingkungan testing yang digunakan.
Program Testing
Testing tidak selalu harus dilakukan secara manual. Anda dapat menulis sebuah program kecil untuk melakukan testing dengan memberikan input data pada proses unit, component, process, atau aplikasi yang sedang Anda test. Apakah tidak membuang-buang waktu untuk membuat sebuah program khusus untuk melakukan testing? Hal ini menjadi relatif tergantung aplikasi Anda. Terutama Anda harus mempertimbangkan frekuensi kebutuhan aplikasi Anda untuk melakukan Regression Testing.Anda dapat menggunakan kembali program testing tersebut setiap kali dilakukan Regression Testing, dengan demikian justru akan menghemat banyak waktu yang Anda keluarkan untuk melakukan testing.
Sertifikasi?
Sudah umum terjadi bahwa penilaian terhadap sesuatu sering didukung oleh sertifikasi. Sebagai contoh, bukankah terdapat sertifikasi seperti TOEFL untuk kemampuan bahasa inggris, atau sertifi kasisertifi kasi yang dikeluarkan Microsoft seperti MCAD, MSCE, MCSD. Bagaimana dengan sertifikasi testing? Walaupun sertifikasi testing aplikasi masih menjadi perdebatan, sudah terdapat beberapa sertifi kasi, seperti CSQE yang ditawarkan oleh America Society for Quality, CSTE/CSQA oleh Quality Assurance Institute, atau ISTQB oleh International Software Testing Qualifi cation Board. Bagaimanapun, saat ini belum terdapat sertifikasi yang benar-benar dapat diterima oleh berbagai aplikasi yang memiliki variasi dan keunikan masing-masing, yang menunjukkan bahwa lahan testing aplikasi belum siap untuk sertifikasi umum dan dapat diterima oleh aplikasi dan kebutuhan apa saja. Sertifikasi mungkin merupakan suatu bentuk penghargaan, tetapi dalam membuat suatu aplikasi, penghargaan yang paling tinggi datang dari end-user yang menggunakan aplikasi Anda. Kepuasan mereka adalah “sertifikasi” tidak tertulis yang menjadi barometer keberhasilan aplikasi Anda. Dengan melakukan testing aplikasi sejak awal, Anda telah melangkah untuk menciptakan keberhasilan aplikasi.
Tampilkan postingan dengan label error. Tampilkan semua postingan
Tampilkan postingan dengan label error. Tampilkan semua postingan
Selasa, 26 Oktober 2010
ERROR CODE
“ERROR” adalah sebuah kata yang terdengar cukup menakutkan di dunia pemrograman. Programer adalah orang yang akan dilirik dengan alis terangkat jika terjadi kesalahan pada sebuah aplikasi pada saat digunakan. Untuk menghindari hal tersebut, Anda perlu mengenal dan memperbaiki semua jenis kesalahan pada program.
Hampir tidak ada aplikasi yang berjalan sempurna sebelum melewati berbagai rentetan kesalahan, semakin besar aplikasi yang dibuat, semakin banyak kesalahan yang dapat timbul. Sukar dibayangkan jika Anda dapat mengetikkan ratusan baris kode program tanpa ditemukan kesalahan pada saat dijalankan atau dikompilasi untuk pertama kalinya.
Syntax Error
Kesalahan yang paling sering ditemukan pada saat membuat program adalah kesalahan sintaks atau Syntax Error, dimana perintah atau statemen yang diketikkan menyalahi aturan pengkodean yang dimiliki oleh bahasa pemrograman yang Anda gunakan.
Sebuah bahasa pemrograman memiliki aturan pengkodean tersendiri yang harus dipatuhi, sebagai contoh pada bahasa pemrograman Pascal/Delphi, setiap statemen diwajibkan diakhiri dengan tanda titik koma (;). Jika Anda tidak menuliskannya, program akan menampilkan pesan Syntax Error pada saat dijalankan.
Setiap bahasa pemrograman memiliki keyword, yaitu perintah-perintah baku yang digunakan. Sebagai contoh, keyword yang umum adalah kondisi if, perulangan for atau while, penulisan fungsi dan lambang aritmatika seperti modulus, pangkat, dan lain-lain. Kesalahan penulisan keyword juga merupakan Syntax Error.
Kesalahan penulisan parameter pada sebuah function/procedure juga termasuk dalam kategori Syntax Error, misalnya jika function yang Anda gunakan memerlukan parameter sementara Anda lupa menuliskan parameter tersebut.
Syntax Error merupakan jenis kesalahan yang paling sering ditemui, tetapi juga pada umumnya paling mudah untuk ditanggulangi. Syntax Error cukup mudah diketahui dan diperbaiki jika bahasa pemrograman yang Anda gunakan menunjukkan baris kesalahan dengan tepat, dan menampilkan pesan kesalahan yang benar.
Pada beberapa bahasa pemrograman, disediakan fasilitas Auto Syntax Check, dimana muncul sebuah pesan peringatan ketika Anda mengetikkan sintaks yang salah.
Run-time Error
Jenis kesalahan Run-time Error terjadi ketika kode program melakukan sesuatu yang tidak dimungkinkan. Contohnya pada saat sebuah aplikasi mencoba mengakses file yang tidak ada, atau terjadi kesalahan alokasi memory.
Terkadang Run-time Error terjadi karena berbagai aspek dan tidak selalu karena kesalahan pemrograman, sebagai contoh jika Anda sengaja menghapus beberapa file penting yang digunakan oleh suatu aplikasi, maka terdapat kemungkinan akan terjadi Run-time Error pada saat aplikasi tersebut dijalankan.
Walaupun demikian, pencegahan semaksimal mungkin dengan memberikan validasi dan pesan yang user-friendly saat terjadi kesalahan pada aplikasi, akan sangat membantu untuk mengetahui mengapa aplikasi tidak berjalan dengan semestinya.
Logical Error
Logical Error merupakan jenis kesalahan yang cukup sulit untuk ditemukan penyebabnya. Karena aplikasi yang mengandung Logical Error berjalan tanpa pesan kesalahan, tetapi mengeluarkan hasil yang tidak diharapkan, misalnya jika aplikasi Anda menghasilkan perhitungan yang salah.
Logical Error baru dapat diketahui setelah Anda melakukan testing dan meninjau hasilnya. Logical Error dapat diperbaiki dengan memeriksa alur program dan nilai variabel yang dihasilkan.
Programer = Pencari Bug?
Sebuah error pada aplikasi disebut dengan istilah bug, atau dalam Bahasa Inggris berarti kutu atau binatang kecil. Konon istilah bug muncul karena ditemukannya binatang kecil yang menyebabkan kerusakan pada sebuah komputer tabung pada tahun 1945.
Bug aplikasi terdapat pada kode program, yang dapat mengganggu kenyamanan pengguna aplikasi Anda. Pada tingkat tertentu, keberadaan bug cukup memberikan efek yang besar.
Anda mungkin belum melupakan saat dimana orang ramai membicarakan “Y2K Bug” atau bug tahun 2000, atau munculnya istilah “Blue screen of Death” pada sistem operasi Windows, atau “Kernel Panic” pada sistem operasi Linux, semua contoh tersebut menunjukkan sebuah bug serius dapat mengakibatkan dampak negatif yang cukup besar.
Proses mencari penyebab bug disebut dengan debug, yang juga merupakan tugas programer setelah menerima laporan bug. Walaupun demikian, jangan menjadikan pekerjaan Anda sebagai pencari bug, Untuk itu hanya ada satu cara, minimalkan bug pada aplikasi yang Anda buat.
Apa yang harus Anda lakukan untuk menghindari jenis-jenis kesalahan yang telah disebutkan di atas? Bisa jadi tidak ada program yang sempurna, tetapi selalu ada cara untuk mengatasi atau menghindari kesalahan semaksimal mungkin.
Selalu Deklarasikan Variabel
Syntax Error, bahkan Logical Error, mungkin terjadi jika terdapat penulisan variabel yang salah. Sebaiknya Anda mendeklarasikan variabel yang Anda gunakan walaupun bisa jadi bahasa pemrograman yang Anda gunakan mengijinkan untuk tidak melakukan deklarasi variabel.
Visual Basic merupakan salah satu bahasa pemrograman yang mengijinkan penggunaan variabel tanpa deklarasi, walaupun demikian disarankan Anda menggunakan deklarasi variabel. Hal tersebut akan memperkecil kesalahan penulisan variabel.
Masih dengan contoh Visual Basic, Anda dapat menambahkan perintah Option Explicit pada program untuk mencegah kesalahan tulis pada variabel, jika terdapat variabel yang belum dideklarasikan, maka Visual Basic akan menampilkan pesan kesalahan.
Anda sebaiknya memiliki suatu skema standard untuk pemberian nama variabel dan konsisten dengan penggunaannya. Contohnya berikan nama variabel diawali dengan huruf s jika bertipe data string, misalnya sResult, sTemp, dan lain-lain.
Pada Visual Basic maupun beberapa bahasa pemrograman lain yang berorientasi object, kita dapat mendeklarasikan variabel dengan tipe data object. Terdapat berbagai jenis macam object yang dikenal, dan sebaiknya Anda menuliskannya dengan lengkap object yang dimaksud. Misalnya object ListBox, Label, dan lain-lain.
Gunakan Variabel Lokal
Sangat disarankan agar Anda selalu menggunakan variabel lokal. Salah satu manfaatnya adalah jika terjadi kesalahan program (terutama Logical Error), maka penyebab kesalahan dan solusinya akan lebih mudah ditemukan. Hal ini dikarenakan variabel lokal memiliki ruang lingkup penggunaan yang lebih kecil dibandingkan variabel global, yang dapat diakses oleh procedure yang mana saja.
Penggunaan variabel global, sering menimbulkan kerancuan dan memperbesar kemungkinan terjadinya kesalahan tanpa disadari.
Kenali Jenis Bug
Bug yang timbul pada sebuah aplikasi memiliki karateristik. Karena itu selalu baca dan perhatikan baik-baik pesan kesalahan yang timbul. Beberapa jenis bug berdasarkan karakteristiknya adalah sebagai berikut:
1. Divide By Zero.
Jika pada sebuah pembagian, pembagi bernilai 0, maka program akan terhenti dan mengalami error.
2. Infinite Loop.
Pengertian loop adalah perulangan, yang sering digunakan dalam teknik pemrograman. Penggunaan loop yang salah dapat mengakibatkan program menjalankan sebuah procedure tanpa akhir.
3. Arithmatic overflow or Underflow.
Overflow terjadi saat sebuah perhitungan menghasilkan nilai yang lebih besar daripada nilai yang dapat ditampung oleh media/variabel penyimpan. Sementara underflow merupakan kebalikannya. Pada perhitungan aritmatik, hal ini sering ditemukan dan menjadi masalah.
4. Exceeding Array Bounds.
Array merupakan variabel berdimensi yang memiliki indeks. Saat program mengakses indeks diluar array yang ditentukan, maka akan mengakibatkan error.
5. Access Violation.
Hal yang terjadi saat sebuah proses mencoba melewati batas yang diijinkan oleh sistem. Misalnya menulis sebuah nilai pada alamat memory, segmen, atau media yang diproteksi.
6. Memory Leak.
Penggunaan memory yang tidak diinginkan, dapat terjadi karena program gagal melepaskan memory yang sudah tidak digunakan.
7. Stack Overflow or Underflow.
Stack merupakan struktur data dengan prinsip LIFO (Last In First Out), pada program Anda dapat mengimplementasikan logika stack untuk suatu tujuan. Tetapi jika stack melebihi atau dibawah nilai yang diijinkan oleh program, maka akan timbul kesalahan Stack Overflow/Underflow.
8. Buffer Overflow.
Buffer merupakan tempat penyimpanan sementara dalam teknik pemrograman. Buffer Overflow terjadi jika Anda menyimpan terlalu banyak data yang tidak dapat ditampung oleh buffer yang disediakan.
9. Deadlock.
Merupakan suatu kondisi dimana dua atau lebih proses saling menunggu satu sama lain untuk menyelesaikan prosesnya, dan tidak satupun dari proses tersebut yang selesai. Problem deadlock sering ditemukan pada multiprocessing.
10. Off By One Error.
Merupakan istilah untuk menggambarkan perulangan yang terlalu banyak atau terlalu sedikit. Misalnya perulangan yang dikehendaki adalah lima kali, tetapi kenyataan yang terjadi aplikasi mengulang proses tersebut sebanyak empat kali atau enam kali. Kesalahan ini pada umumnya terjadi karena kesalahan logika penulisan kode pada proses perulangan.
Berikan Komentar
Jangan kuatir kode program Anda dipenuhi oleh komentar. Karena akan lebih mudah bagi Anda untuk mempelajari lagi kode-kode program yang pernah Anda buat dengan membaca komentar.
Dengan mengerti kode program dengan baik, maka akan menjadi lebih mudah jika pada suatu saat terdapat Logical Error yang membutuhkan analisa ulang kode program.
Gunakan Log File
Informasi proses yang dijalankan aplikasi dan tersimpan pada sebuah log file (dapat berupa file text atau table) dapat menjadi informasi yang sangat berguna untuk menganalisa bug yang mungkin terjadi. Terutama informasi yang menjelaskan apa yang terjadi sebelum, selama, dan sesudah bug terjadi.
Untuk menghindari log file yang terlalu besar, Anda dapat memisahkan log file terbagi menjadi log untuk komponen-komponen utama pada aplikasi. Jangan lupa untuk selalu mencatat waktu (timestamp) pada setiap record. Anda dapat menghapus atau melakukan backup pada log file secara periodik.
Validasi
Tidak semua orang mematuhi aturan yang Anda terapkan pada aplikasi, karena itu Anda harus melakukan validasi untuk data yang dimasukkan oleh pengguna. Misalnya pada suatu form pendaftaran, Anda sebaiknya melakukan validasi untuk input yang tidak boleh kosong (mandatory/required fields), melakukan pembatasan karakter, dan validasi huruf/angka yang diperlukan.
Mengenal Environment
Saat Anda mengetikkan kode program, menjalankannya, atau melakukan debug pada program, Anda berada pada environment yang berbeda-beda. Terdapat 3 environment yang umum dikenal, yaitu:
1. Design Time.
Aplikasi yang Anda kerjakan dilakukan pada saat design time.
2. Run Time.
Saat menjalankan aplikasi.
3. Break Mode.
Environment saat Anda melakukan proses debug atau melihat kode program saat program tersebut dijalankan, Anda dapat melihat alur program dan perubahan nilai pada variabel, sehingga Anda dapat menelusuri kesalahan yang terjadi. Break Mode terletak diantara Design Time dan Run Time.
Lebih Jauh Mengenal Break Mode
Break Mode merupakan environment favorit programer untuk melacak kesalahan program atau dikenal dengan proses debug, terkadang memerlukan kesabaran dan ketelitian super tinggi, tetapi no pain no gain, bukan?
Dengan menjalankan Break Mode, aplikasi Anda akan dijalankan bertahap dari satu proses ke proses selanjutnya, Anda juga dapat menghentikan proses Break Mode setelah mendapatkan informasi yang cukup dalam proses debug.
Dalam menganalisa kesalahan di dalam kode program yang sangat panjang, akan sangat melelahkan jika Anda melakukan debug per-baris program dari awal hingga akhir. Untuk itu fasilitas breakpoint sangat penting untuk keperluan debug. Breakpoint mengijinkan Anda menandai baris dimana proses debug dimulai.
Posisi breakpoint tidak dapat ditempatkan pada baris:
1. Compiler Directive.
2. Deklarasi Variabel.
3. Baris Konstanta.
4. Baris yang kosong atau berisi komentar.
Pada saat memasuki Break Mode, umumnya terdapat beberapa instruksi yang dapat Anda gunakan untuk melakukan proses debug:
1. Step Into.
Menjalankan kode program baris per baris. Setelah satu baris dieksekusi, maka cursor akan berpindah pada baris dibawahnya. Jika baris yang dieksekusi merupakan suatu procedure, maka proses debug akan berpindah pada procedure tersebut dan akan menjalankan kode program didalamnya.
Dengan eksekusi per-baris ini, Anda dapat memantau nilai-nilai variabel yang dihasilkan, umumnya pada sebuah jendela terpisah yang menampilkan nilai-nilai variabel saat ini.
Setiap kali Anda mengeksekusi baris program, maka program akan dijalankan pada environment Run Time, dan kembali pada Break Mode saat selesai menjalankan baris tersebut.
2. Step Over.
Pada prinsipnya Step Over sama dengan Step Into. Hal yang membedakan hanyalah saat pemanggilan sebuah procedure. Jika pada Step Into, proses debug akan memasuki procedure yang dipanggil dan mengeksekusi kode program didalamnya baris demi baris, maka Step Over menjalankan procedure tersebut tanpa memperlihatkan baris program didalamnya.
Step Over dilakukan jika Anda hanya ingin melakukan proses debug pada satu level, atau jika Anda yakin procedure yang dipanggil telah berjalan dengan baik dan tidak memerlukan proses debug per-baris.
Step Over dan Step Into dapat digunakan bergantian tergantung kebutuhan Anda dalam menganalisa kode program.
3. Step Out.
Jika Anda telah berada pada suatu procedure dan ingin kembali pada baris dimana procedure tersebut dipanggil, maka gunakanlah Step Out. Step Out akan menjalankan semua baris program yang tersisa pada procedure tersebut, dan kembali pada Break Mode saat keluar dari procedure yang bersangkutan.
4. Run To Cursor.
Anda dapat menentukan baris selanjutnya dimana Anda ingin memulai proses debug yang baru. Proses ini mirip dengan breakpoint, hanya Anda tidak perlu menandai baris tersebut terlebih dahulu, tetapi langsung mengarahkan eksekusi program pada posisi tersebut.
Layar Penolong Saat Break Mode
Melakukan proses debug pada Break Mode tidak akan menghasilkan sesuatu yang signifikan jika Anda tidak mengetahui apa saja yang terjadi pada variabel-variabel yang dieksekusi. Untuk itu Anda memerlukan layar penolong, yang dapat dikategorikan sebagai berikut:
1. Layar Immediate.
Jika layar ini diaktifkan, Anda dapat mengetikkan variabel atau perhitungan untuk melihat nilainya. Anda bahkan dapat mengubah nilai variabel yang sedang berjalan sehingga mempengaruhi proses debug selanjutnya.
Anda dapat mengetikkan object debug pada baris program sehingga menampilkan nilai variabel yang ingin Anda monitor pada Layar Immediate, contoh perintah object debug adalah debug.print.
Pada Visual Basic 6.0, Anda dapat mengaktifkan Layar Immediate dengan memilih menu View – Immediate Window.
2. Layar Local.
Layar Local akan menampilkan seluruh nilai variabel pada procedure yang sedang aktif/dijalankan pada saat Break Mode, sehingga Anda dapat memonitor perubahannya tanpa perlu mengetikkan masing-masing variabel atau menggunakan object debug seperti pada Layar Immediate.
Selain itu, Layar Local juga menampilkan hirarki object dan property yang terdapat pada form yang aktif.
Pada Visual Basic 6.0, Anda dapat mengaktifkan Layar Local dengan memilih menu View – Locals Window.
3. Layar Watch.
Digunakan untuk melihat nilai variabel pada konteks yang telah ditentukan, misalnya pada procedure tertentu. Anda harus terlebih dahulu mendefinisikan variabel atau expression yang ingin Anda tampilkan. Expression adalah sebuah instruksi untuk menjalankan sesuatu yang menghasilkan sebuah nilai, x = 1 adalah contoh sebuah expression sederhana.
Terkadang Anda memerlukan Watch jika Anda memiliki nama variabel yang sama tetapi terletak pada procedure/konteks yang berbeda. Layar Watch juga sangat berguna karena Anda dapat menentukan expression, dimana pada saat kondisi nilai expression tersebut terpenuhi atau berubah, maka program akan berada pada Break Mode.
Pada Visual Basic 6.0, Anda dapat mengaktifkan Layar Watch dengan memilih menu View – Watch Window. Untuk menambahkan variabel/expression, pilih menu Debug – Add Watch, atau Debug – Quick Watch.
4. Layar Call Stack.
Sering terjadi pada saat melakukan proses debug, Anda tersesat dan kehilangan alur karena terlalu banyak procedure dan modul yang dieksekusi. Pada saat ini Layar Call Stack sangat diperlukan.
Call Stack menunjukkan alur proses debug dengan menampilkan procedure yang dieksekusi secara berurutan. Sehingga Anda dapat mengetahui procedure pemanggil dan procedure yang dipanggil.
Pada Visual Basic 6.0, Anda dapat mengaktifkan Layar Call Stack dengan memilih menu View – Call Stack.
Langkah Pelaksanaan
Anda telah meminimalkan kesalahan, Anda telah mengenal dan memiliki tools untuk menanggulangi kesalahan, tetapi masih terdapat bug yang ditemukan dan harus ditanggulangi. Berikut adalah langkah mengatasi bug:
1. Kenali Keberadaan Bug.
Programer yang berpengalaman sering telah dapat mengira-ngira penyebab terjadinya bug, beberapa proses yang rumit pada aplikasi dapat menyebabkan kesalahan saat digunakan oleh user. Contohnya saat aplikasi membutuhkan data input dengan format tertentu, tetapi user menyediakan data input dengan format yang salah.
Jika respon aplikasi adalah dengan menampilkan pesan kesalahan dan menghentikan proses, kesalahan akan dapat lebih mudah diperbaiki. Sedangkan kesalahan yang diketahui karena hasil yang tidak diinginkan tidak sesuai dengan hasil yang diharapkan, tetapi aplikasi tetap berjalan dengan baik justru akan lebih sulit diperbaiki.
Tujuan dari langkah ini adalah mengenali penyebab bug, dengan menganalisa dalam kondisi apa bug terjadi, maka akan lebih mudah untuk melangkah ke tahap selanjutnya.
2. Memisahkan Kode Program yang Mengandung Bug.
Setelah menemukan penyebab dan kondisi yang menghasilkan bug, Anda dapat memisahkan kode program yang bermasalah tersebut untuk diperiksa. Langkah ini memerlukan testing yang berulang-ulang untuk memastikan kode program yang bermasalah.
Lakukan testing secara berurutan, misalnya apakah input sudah benar, terbaca dengan benar, diproses dengan benar, dan seterusnya.
Langkah ini akan lebih mudah jika Anda membuat aplikasi dengan konsep pemrograman modular yang membagi-bagi program yang besar ke dalam sub modul atau procedure yang terpisah.
Jika terdapat suatu procedure yang menerima input dengan benar tetapi menghasilkan output yang salah, maka dapat dipastikan letak bug terdapat pada procedure tersebut.
3. Identifikasi Penyebab Bug.
Setelah menemukan lokasi kode program yang mengandung bug, langkah selanjutnya adalah mengidentifikasi penyebab bug. Pemahaman yang baik akan ruang lingkup aplikasi tersebut adalah kunci sukses mencari sumber bug.
Hal yang cukup berbahaya adalah jika Anda kurang memahami alur aplikasi dan mengubah kode program untuk memperbaiki bug yang ada, tetapi ternyata menciptakan bug yang lain.
4. Memperbaiki Bug.
Dengan mengidentifikasi sumber bug dengan tepat, mungkin akan timbul beberapa langkah perbaikan bug, pilihlah yang terbaik dan tidak mengganggu proses lainnya. Terkadang Anda dapat menemukan bug lain yang belum dilaporkan, eliminasi semua bug yang mungkin muncul.
5. Testing.
Setelah bug diperbaiki, adakan testing dengan tujuan memastikan apakah bug telah dapat ditanggulangi dan tidak muncul lagi, dan apakah perbaikan yang dilakukan tidak memiliki efek yang tidak diinginkan.
Basmi Sebelum Dilaporkan
Percaya atau tidak, ada beberapa pengguna aplikasi yang cukup kreatif menyikapi bug dengan cara sendiri dan memiliki resep khusus dengan mempelajari pola dan karakteristik aplikasi, sehingga bug dapat dihindari dengan melakukan langkah-langkah tertentu.
Contohnya ada aplikasi yang tidak dapat berjalan saat aplikasi tertentu aktif pada saat bersamaan, atau aplikasi yang baru berjalan baik pada resolusi layar tertentu. Ada baiknya Anda memperbaiki bug yang Anda temukan dan melakukan update pada pengguna, walaupun bug tersebut tidak dilaporkan.
Hal ini tentu akan menambah kredibilitas Anda, dan yang terpenting, aplikasi Anda akan menjadi lebih nyaman bagi pengguna.
Hampir tidak ada aplikasi yang berjalan sempurna sebelum melewati berbagai rentetan kesalahan, semakin besar aplikasi yang dibuat, semakin banyak kesalahan yang dapat timbul. Sukar dibayangkan jika Anda dapat mengetikkan ratusan baris kode program tanpa ditemukan kesalahan pada saat dijalankan atau dikompilasi untuk pertama kalinya.
Syntax Error
Kesalahan yang paling sering ditemukan pada saat membuat program adalah kesalahan sintaks atau Syntax Error, dimana perintah atau statemen yang diketikkan menyalahi aturan pengkodean yang dimiliki oleh bahasa pemrograman yang Anda gunakan.
Sebuah bahasa pemrograman memiliki aturan pengkodean tersendiri yang harus dipatuhi, sebagai contoh pada bahasa pemrograman Pascal/Delphi, setiap statemen diwajibkan diakhiri dengan tanda titik koma (;). Jika Anda tidak menuliskannya, program akan menampilkan pesan Syntax Error pada saat dijalankan.
Setiap bahasa pemrograman memiliki keyword, yaitu perintah-perintah baku yang digunakan. Sebagai contoh, keyword yang umum adalah kondisi if, perulangan for atau while, penulisan fungsi dan lambang aritmatika seperti modulus, pangkat, dan lain-lain. Kesalahan penulisan keyword juga merupakan Syntax Error.
Kesalahan penulisan parameter pada sebuah function/procedure juga termasuk dalam kategori Syntax Error, misalnya jika function yang Anda gunakan memerlukan parameter sementara Anda lupa menuliskan parameter tersebut.
Syntax Error merupakan jenis kesalahan yang paling sering ditemui, tetapi juga pada umumnya paling mudah untuk ditanggulangi. Syntax Error cukup mudah diketahui dan diperbaiki jika bahasa pemrograman yang Anda gunakan menunjukkan baris kesalahan dengan tepat, dan menampilkan pesan kesalahan yang benar.
Pada beberapa bahasa pemrograman, disediakan fasilitas Auto Syntax Check, dimana muncul sebuah pesan peringatan ketika Anda mengetikkan sintaks yang salah.
Run-time Error
Jenis kesalahan Run-time Error terjadi ketika kode program melakukan sesuatu yang tidak dimungkinkan. Contohnya pada saat sebuah aplikasi mencoba mengakses file yang tidak ada, atau terjadi kesalahan alokasi memory.
Terkadang Run-time Error terjadi karena berbagai aspek dan tidak selalu karena kesalahan pemrograman, sebagai contoh jika Anda sengaja menghapus beberapa file penting yang digunakan oleh suatu aplikasi, maka terdapat kemungkinan akan terjadi Run-time Error pada saat aplikasi tersebut dijalankan.
Walaupun demikian, pencegahan semaksimal mungkin dengan memberikan validasi dan pesan yang user-friendly saat terjadi kesalahan pada aplikasi, akan sangat membantu untuk mengetahui mengapa aplikasi tidak berjalan dengan semestinya.
Logical Error
Logical Error merupakan jenis kesalahan yang cukup sulit untuk ditemukan penyebabnya. Karena aplikasi yang mengandung Logical Error berjalan tanpa pesan kesalahan, tetapi mengeluarkan hasil yang tidak diharapkan, misalnya jika aplikasi Anda menghasilkan perhitungan yang salah.
Logical Error baru dapat diketahui setelah Anda melakukan testing dan meninjau hasilnya. Logical Error dapat diperbaiki dengan memeriksa alur program dan nilai variabel yang dihasilkan.
Programer = Pencari Bug?
Sebuah error pada aplikasi disebut dengan istilah bug, atau dalam Bahasa Inggris berarti kutu atau binatang kecil. Konon istilah bug muncul karena ditemukannya binatang kecil yang menyebabkan kerusakan pada sebuah komputer tabung pada tahun 1945.
Bug aplikasi terdapat pada kode program, yang dapat mengganggu kenyamanan pengguna aplikasi Anda. Pada tingkat tertentu, keberadaan bug cukup memberikan efek yang besar.
Anda mungkin belum melupakan saat dimana orang ramai membicarakan “Y2K Bug” atau bug tahun 2000, atau munculnya istilah “Blue screen of Death” pada sistem operasi Windows, atau “Kernel Panic” pada sistem operasi Linux, semua contoh tersebut menunjukkan sebuah bug serius dapat mengakibatkan dampak negatif yang cukup besar.
Proses mencari penyebab bug disebut dengan debug, yang juga merupakan tugas programer setelah menerima laporan bug. Walaupun demikian, jangan menjadikan pekerjaan Anda sebagai pencari bug, Untuk itu hanya ada satu cara, minimalkan bug pada aplikasi yang Anda buat.
Apa yang harus Anda lakukan untuk menghindari jenis-jenis kesalahan yang telah disebutkan di atas? Bisa jadi tidak ada program yang sempurna, tetapi selalu ada cara untuk mengatasi atau menghindari kesalahan semaksimal mungkin.
Selalu Deklarasikan Variabel
Syntax Error, bahkan Logical Error, mungkin terjadi jika terdapat penulisan variabel yang salah. Sebaiknya Anda mendeklarasikan variabel yang Anda gunakan walaupun bisa jadi bahasa pemrograman yang Anda gunakan mengijinkan untuk tidak melakukan deklarasi variabel.
Visual Basic merupakan salah satu bahasa pemrograman yang mengijinkan penggunaan variabel tanpa deklarasi, walaupun demikian disarankan Anda menggunakan deklarasi variabel. Hal tersebut akan memperkecil kesalahan penulisan variabel.
Masih dengan contoh Visual Basic, Anda dapat menambahkan perintah Option Explicit pada program untuk mencegah kesalahan tulis pada variabel, jika terdapat variabel yang belum dideklarasikan, maka Visual Basic akan menampilkan pesan kesalahan.
Anda sebaiknya memiliki suatu skema standard untuk pemberian nama variabel dan konsisten dengan penggunaannya. Contohnya berikan nama variabel diawali dengan huruf s jika bertipe data string, misalnya sResult, sTemp, dan lain-lain.
Pada Visual Basic maupun beberapa bahasa pemrograman lain yang berorientasi object, kita dapat mendeklarasikan variabel dengan tipe data object. Terdapat berbagai jenis macam object yang dikenal, dan sebaiknya Anda menuliskannya dengan lengkap object yang dimaksud. Misalnya object ListBox, Label, dan lain-lain.
Gunakan Variabel Lokal
Sangat disarankan agar Anda selalu menggunakan variabel lokal. Salah satu manfaatnya adalah jika terjadi kesalahan program (terutama Logical Error), maka penyebab kesalahan dan solusinya akan lebih mudah ditemukan. Hal ini dikarenakan variabel lokal memiliki ruang lingkup penggunaan yang lebih kecil dibandingkan variabel global, yang dapat diakses oleh procedure yang mana saja.
Penggunaan variabel global, sering menimbulkan kerancuan dan memperbesar kemungkinan terjadinya kesalahan tanpa disadari.
Kenali Jenis Bug
Bug yang timbul pada sebuah aplikasi memiliki karateristik. Karena itu selalu baca dan perhatikan baik-baik pesan kesalahan yang timbul. Beberapa jenis bug berdasarkan karakteristiknya adalah sebagai berikut:
1. Divide By Zero.
Jika pada sebuah pembagian, pembagi bernilai 0, maka program akan terhenti dan mengalami error.
2. Infinite Loop.
Pengertian loop adalah perulangan, yang sering digunakan dalam teknik pemrograman. Penggunaan loop yang salah dapat mengakibatkan program menjalankan sebuah procedure tanpa akhir.
3. Arithmatic overflow or Underflow.
Overflow terjadi saat sebuah perhitungan menghasilkan nilai yang lebih besar daripada nilai yang dapat ditampung oleh media/variabel penyimpan. Sementara underflow merupakan kebalikannya. Pada perhitungan aritmatik, hal ini sering ditemukan dan menjadi masalah.
4. Exceeding Array Bounds.
Array merupakan variabel berdimensi yang memiliki indeks. Saat program mengakses indeks diluar array yang ditentukan, maka akan mengakibatkan error.
5. Access Violation.
Hal yang terjadi saat sebuah proses mencoba melewati batas yang diijinkan oleh sistem. Misalnya menulis sebuah nilai pada alamat memory, segmen, atau media yang diproteksi.
6. Memory Leak.
Penggunaan memory yang tidak diinginkan, dapat terjadi karena program gagal melepaskan memory yang sudah tidak digunakan.
7. Stack Overflow or Underflow.
Stack merupakan struktur data dengan prinsip LIFO (Last In First Out), pada program Anda dapat mengimplementasikan logika stack untuk suatu tujuan. Tetapi jika stack melebihi atau dibawah nilai yang diijinkan oleh program, maka akan timbul kesalahan Stack Overflow/Underflow.
8. Buffer Overflow.
Buffer merupakan tempat penyimpanan sementara dalam teknik pemrograman. Buffer Overflow terjadi jika Anda menyimpan terlalu banyak data yang tidak dapat ditampung oleh buffer yang disediakan.
9. Deadlock.
Merupakan suatu kondisi dimana dua atau lebih proses saling menunggu satu sama lain untuk menyelesaikan prosesnya, dan tidak satupun dari proses tersebut yang selesai. Problem deadlock sering ditemukan pada multiprocessing.
10. Off By One Error.
Merupakan istilah untuk menggambarkan perulangan yang terlalu banyak atau terlalu sedikit. Misalnya perulangan yang dikehendaki adalah lima kali, tetapi kenyataan yang terjadi aplikasi mengulang proses tersebut sebanyak empat kali atau enam kali. Kesalahan ini pada umumnya terjadi karena kesalahan logika penulisan kode pada proses perulangan.
Berikan Komentar
Jangan kuatir kode program Anda dipenuhi oleh komentar. Karena akan lebih mudah bagi Anda untuk mempelajari lagi kode-kode program yang pernah Anda buat dengan membaca komentar.
Dengan mengerti kode program dengan baik, maka akan menjadi lebih mudah jika pada suatu saat terdapat Logical Error yang membutuhkan analisa ulang kode program.
Gunakan Log File
Informasi proses yang dijalankan aplikasi dan tersimpan pada sebuah log file (dapat berupa file text atau table) dapat menjadi informasi yang sangat berguna untuk menganalisa bug yang mungkin terjadi. Terutama informasi yang menjelaskan apa yang terjadi sebelum, selama, dan sesudah bug terjadi.
Untuk menghindari log file yang terlalu besar, Anda dapat memisahkan log file terbagi menjadi log untuk komponen-komponen utama pada aplikasi. Jangan lupa untuk selalu mencatat waktu (timestamp) pada setiap record. Anda dapat menghapus atau melakukan backup pada log file secara periodik.
Validasi
Tidak semua orang mematuhi aturan yang Anda terapkan pada aplikasi, karena itu Anda harus melakukan validasi untuk data yang dimasukkan oleh pengguna. Misalnya pada suatu form pendaftaran, Anda sebaiknya melakukan validasi untuk input yang tidak boleh kosong (mandatory/required fields), melakukan pembatasan karakter, dan validasi huruf/angka yang diperlukan.
Mengenal Environment
Saat Anda mengetikkan kode program, menjalankannya, atau melakukan debug pada program, Anda berada pada environment yang berbeda-beda. Terdapat 3 environment yang umum dikenal, yaitu:
1. Design Time.
Aplikasi yang Anda kerjakan dilakukan pada saat design time.
2. Run Time.
Saat menjalankan aplikasi.
3. Break Mode.
Environment saat Anda melakukan proses debug atau melihat kode program saat program tersebut dijalankan, Anda dapat melihat alur program dan perubahan nilai pada variabel, sehingga Anda dapat menelusuri kesalahan yang terjadi. Break Mode terletak diantara Design Time dan Run Time.
Lebih Jauh Mengenal Break Mode
Break Mode merupakan environment favorit programer untuk melacak kesalahan program atau dikenal dengan proses debug, terkadang memerlukan kesabaran dan ketelitian super tinggi, tetapi no pain no gain, bukan?
Dengan menjalankan Break Mode, aplikasi Anda akan dijalankan bertahap dari satu proses ke proses selanjutnya, Anda juga dapat menghentikan proses Break Mode setelah mendapatkan informasi yang cukup dalam proses debug.
Dalam menganalisa kesalahan di dalam kode program yang sangat panjang, akan sangat melelahkan jika Anda melakukan debug per-baris program dari awal hingga akhir. Untuk itu fasilitas breakpoint sangat penting untuk keperluan debug. Breakpoint mengijinkan Anda menandai baris dimana proses debug dimulai.
Posisi breakpoint tidak dapat ditempatkan pada baris:
1. Compiler Directive.
2. Deklarasi Variabel.
3. Baris Konstanta.
4. Baris yang kosong atau berisi komentar.
Pada saat memasuki Break Mode, umumnya terdapat beberapa instruksi yang dapat Anda gunakan untuk melakukan proses debug:
1. Step Into.
Menjalankan kode program baris per baris. Setelah satu baris dieksekusi, maka cursor akan berpindah pada baris dibawahnya. Jika baris yang dieksekusi merupakan suatu procedure, maka proses debug akan berpindah pada procedure tersebut dan akan menjalankan kode program didalamnya.
Dengan eksekusi per-baris ini, Anda dapat memantau nilai-nilai variabel yang dihasilkan, umumnya pada sebuah jendela terpisah yang menampilkan nilai-nilai variabel saat ini.
Setiap kali Anda mengeksekusi baris program, maka program akan dijalankan pada environment Run Time, dan kembali pada Break Mode saat selesai menjalankan baris tersebut.
2. Step Over.
Pada prinsipnya Step Over sama dengan Step Into. Hal yang membedakan hanyalah saat pemanggilan sebuah procedure. Jika pada Step Into, proses debug akan memasuki procedure yang dipanggil dan mengeksekusi kode program didalamnya baris demi baris, maka Step Over menjalankan procedure tersebut tanpa memperlihatkan baris program didalamnya.
Step Over dilakukan jika Anda hanya ingin melakukan proses debug pada satu level, atau jika Anda yakin procedure yang dipanggil telah berjalan dengan baik dan tidak memerlukan proses debug per-baris.
Step Over dan Step Into dapat digunakan bergantian tergantung kebutuhan Anda dalam menganalisa kode program.
3. Step Out.
Jika Anda telah berada pada suatu procedure dan ingin kembali pada baris dimana procedure tersebut dipanggil, maka gunakanlah Step Out. Step Out akan menjalankan semua baris program yang tersisa pada procedure tersebut, dan kembali pada Break Mode saat keluar dari procedure yang bersangkutan.
4. Run To Cursor.
Anda dapat menentukan baris selanjutnya dimana Anda ingin memulai proses debug yang baru. Proses ini mirip dengan breakpoint, hanya Anda tidak perlu menandai baris tersebut terlebih dahulu, tetapi langsung mengarahkan eksekusi program pada posisi tersebut.
Layar Penolong Saat Break Mode
Melakukan proses debug pada Break Mode tidak akan menghasilkan sesuatu yang signifikan jika Anda tidak mengetahui apa saja yang terjadi pada variabel-variabel yang dieksekusi. Untuk itu Anda memerlukan layar penolong, yang dapat dikategorikan sebagai berikut:
1. Layar Immediate.
Jika layar ini diaktifkan, Anda dapat mengetikkan variabel atau perhitungan untuk melihat nilainya. Anda bahkan dapat mengubah nilai variabel yang sedang berjalan sehingga mempengaruhi proses debug selanjutnya.
Anda dapat mengetikkan object debug pada baris program sehingga menampilkan nilai variabel yang ingin Anda monitor pada Layar Immediate, contoh perintah object debug adalah debug.print.
Pada Visual Basic 6.0, Anda dapat mengaktifkan Layar Immediate dengan memilih menu View – Immediate Window.
2. Layar Local.
Layar Local akan menampilkan seluruh nilai variabel pada procedure yang sedang aktif/dijalankan pada saat Break Mode, sehingga Anda dapat memonitor perubahannya tanpa perlu mengetikkan masing-masing variabel atau menggunakan object debug seperti pada Layar Immediate.
Selain itu, Layar Local juga menampilkan hirarki object dan property yang terdapat pada form yang aktif.
Pada Visual Basic 6.0, Anda dapat mengaktifkan Layar Local dengan memilih menu View – Locals Window.
3. Layar Watch.
Digunakan untuk melihat nilai variabel pada konteks yang telah ditentukan, misalnya pada procedure tertentu. Anda harus terlebih dahulu mendefinisikan variabel atau expression yang ingin Anda tampilkan. Expression adalah sebuah instruksi untuk menjalankan sesuatu yang menghasilkan sebuah nilai, x = 1 adalah contoh sebuah expression sederhana.
Terkadang Anda memerlukan Watch jika Anda memiliki nama variabel yang sama tetapi terletak pada procedure/konteks yang berbeda. Layar Watch juga sangat berguna karena Anda dapat menentukan expression, dimana pada saat kondisi nilai expression tersebut terpenuhi atau berubah, maka program akan berada pada Break Mode.
Pada Visual Basic 6.0, Anda dapat mengaktifkan Layar Watch dengan memilih menu View – Watch Window. Untuk menambahkan variabel/expression, pilih menu Debug – Add Watch, atau Debug – Quick Watch.
4. Layar Call Stack.
Sering terjadi pada saat melakukan proses debug, Anda tersesat dan kehilangan alur karena terlalu banyak procedure dan modul yang dieksekusi. Pada saat ini Layar Call Stack sangat diperlukan.
Call Stack menunjukkan alur proses debug dengan menampilkan procedure yang dieksekusi secara berurutan. Sehingga Anda dapat mengetahui procedure pemanggil dan procedure yang dipanggil.
Pada Visual Basic 6.0, Anda dapat mengaktifkan Layar Call Stack dengan memilih menu View – Call Stack.
Langkah Pelaksanaan
Anda telah meminimalkan kesalahan, Anda telah mengenal dan memiliki tools untuk menanggulangi kesalahan, tetapi masih terdapat bug yang ditemukan dan harus ditanggulangi. Berikut adalah langkah mengatasi bug:
1. Kenali Keberadaan Bug.
Programer yang berpengalaman sering telah dapat mengira-ngira penyebab terjadinya bug, beberapa proses yang rumit pada aplikasi dapat menyebabkan kesalahan saat digunakan oleh user. Contohnya saat aplikasi membutuhkan data input dengan format tertentu, tetapi user menyediakan data input dengan format yang salah.
Jika respon aplikasi adalah dengan menampilkan pesan kesalahan dan menghentikan proses, kesalahan akan dapat lebih mudah diperbaiki. Sedangkan kesalahan yang diketahui karena hasil yang tidak diinginkan tidak sesuai dengan hasil yang diharapkan, tetapi aplikasi tetap berjalan dengan baik justru akan lebih sulit diperbaiki.
Tujuan dari langkah ini adalah mengenali penyebab bug, dengan menganalisa dalam kondisi apa bug terjadi, maka akan lebih mudah untuk melangkah ke tahap selanjutnya.
2. Memisahkan Kode Program yang Mengandung Bug.
Setelah menemukan penyebab dan kondisi yang menghasilkan bug, Anda dapat memisahkan kode program yang bermasalah tersebut untuk diperiksa. Langkah ini memerlukan testing yang berulang-ulang untuk memastikan kode program yang bermasalah.
Lakukan testing secara berurutan, misalnya apakah input sudah benar, terbaca dengan benar, diproses dengan benar, dan seterusnya.
Langkah ini akan lebih mudah jika Anda membuat aplikasi dengan konsep pemrograman modular yang membagi-bagi program yang besar ke dalam sub modul atau procedure yang terpisah.
Jika terdapat suatu procedure yang menerima input dengan benar tetapi menghasilkan output yang salah, maka dapat dipastikan letak bug terdapat pada procedure tersebut.
3. Identifikasi Penyebab Bug.
Setelah menemukan lokasi kode program yang mengandung bug, langkah selanjutnya adalah mengidentifikasi penyebab bug. Pemahaman yang baik akan ruang lingkup aplikasi tersebut adalah kunci sukses mencari sumber bug.
Hal yang cukup berbahaya adalah jika Anda kurang memahami alur aplikasi dan mengubah kode program untuk memperbaiki bug yang ada, tetapi ternyata menciptakan bug yang lain.
4. Memperbaiki Bug.
Dengan mengidentifikasi sumber bug dengan tepat, mungkin akan timbul beberapa langkah perbaikan bug, pilihlah yang terbaik dan tidak mengganggu proses lainnya. Terkadang Anda dapat menemukan bug lain yang belum dilaporkan, eliminasi semua bug yang mungkin muncul.
5. Testing.
Setelah bug diperbaiki, adakan testing dengan tujuan memastikan apakah bug telah dapat ditanggulangi dan tidak muncul lagi, dan apakah perbaikan yang dilakukan tidak memiliki efek yang tidak diinginkan.
Basmi Sebelum Dilaporkan
Percaya atau tidak, ada beberapa pengguna aplikasi yang cukup kreatif menyikapi bug dengan cara sendiri dan memiliki resep khusus dengan mempelajari pola dan karakteristik aplikasi, sehingga bug dapat dihindari dengan melakukan langkah-langkah tertentu.
Contohnya ada aplikasi yang tidak dapat berjalan saat aplikasi tertentu aktif pada saat bersamaan, atau aplikasi yang baru berjalan baik pada resolusi layar tertentu. Ada baiknya Anda memperbaiki bug yang Anda temukan dan melakukan update pada pengguna, walaupun bug tersebut tidak dilaporkan.
Hal ini tentu akan menambah kredibilitas Anda, dan yang terpenting, aplikasi Anda akan menjadi lebih nyaman bagi pengguna.
Langganan:
Komentar (Atom)