rss
email
twitter
facebook

Monday, April 11, 2011

Pengertian BUG

BUG pasti bagi anda yang sering menggunakan software baru sering mendengar kata – kata bug atau software ini masih ada bug-nya atau software ini masih dalam debugging.

Namun apakah anda tahu apasih itu bug?

Dalam bahasa bug sendiri adalah serangga yang biasa kita lihat ditaman lalu apa hubungannya dengan software???

Penamaan bug sendiri dipilih karena pada tahun 1945 komputer yang bernama “Mark 1” tidak berfungsi sebagaimana mestinya, setelah dilakukan pemeriksaan, ternyata pada suatu bagian perangkat keras terdapat serangga yang tersangkut. Setelah serangga itu dikeluarkan, komputer sudah bisa berfungsi normal kembali. Maka sejak saat itulah kata bug dipilih dengan permasalahan pada komputer. Jadi bisa saya simpulkan bahwa BUG adalah suatu kesalahan pada sebuah software atau hardware yang menyebabkan software atau hardware tersebut tidak jalan sebagaimana mestinya. Sedangkan Debugging adalah suatu proses menghilangkan bug dari suatu program.

Berikut ini adalah beberapa istilah yang terdapat dalam bug:

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.

sumber:
http://barus.blogdetik.com/2009/05/18/seluk-beluk-testing-aplikasi/
http://lietomy89.blogspot.com/2009/09/sedikit-tentang-bug.html

No comments:

Post a Comment