Subyek : Tugas Kelompok Mata Kuliah : Sistem Informasi Manajemen Dosen : Dr. Ir. Arif Imam Suroso, M.Sc (CS)
REAL WORLD CASE 1: THE BUGS WILL ALWAYS SHOW THEMSELVES, BUT OFTEN TOO LATE
Disusun Oleh : 1. 2. 3. 4. 5. 6. 7.
Anggin Indira Syamsi (P.056110753.40E) Ayudea Hapsari (P.056110793.40E) Firdaus Alim Damopolii (P.056110843.40E) Gunawan (P.056110853.40E) Mardeka (P.056110873.40E) Shidiq Tungga Pramana (P.056110963.40E) Widhitomo (P.056110983.40E)
PROGRAM PASCASARJANA MANAJEMEN DAN BISNIS INSTITUT PERTANIAN BOGOR 2011
1. Mengapa pengujian perangkat lunak kelihatannya merupakan sesuatu yang memberatkan? Jawab: Menurut O’Brien dalam artikelnya yang berjudul The Bugs will Always Show Themselves, But Often Too Late, banyak perusahaan yang tidak menerapkan pelaksanaan pengujian perangkat lunak dalam tahap pengembangannya. Salah satu alasannya karena pengujian perangkat lunak membutuhkan waktu dan biaya yang tidak sedikit dalam investasinya. Pencegahan error dalam tahap pengujian perangkat lunak membutuhkan suatu unit khusus, yaitu unit Pengujian. Suatu unit Pengujian membutuhkan investasi yang besar dalam waktu dan tenaga kerja. Berikut ini adalah tugas-tugas yang dilakukan oleh suatu unit Pengujian: • mendesain dan membangun suatu pengaman untuk mencegah error. •
mendesain dan membuat potongan-potongan simulasi external resources dalam suatu pengujian.
•
mendesain dan membuat kasus-kasus pengujian yang akan di tes sebanyak kode yang ada.
•
menampilkan pengujian mundur untuk memastikan tidak adanya error baru yang muncul.
Tujuan Pengujian: 1. Menemukan cacat. 2. Memaksimalkan untuk menemukan eror. 3. Menghalangi pelepasan produk secara prematur. 4. Membantu para manajer membuat keputusan. 5. Menilai mutu. 6. Memperkecil biaya-biaya pendukung teknis. 7. Menepati peraturan. 8. Memperkecil resiko penuntutan perkara yang terkait dengan keselamatan. 9. Menilai kesesuaian perangkat lunak dengan spesifikasi. 10. Menemukan skenario yang aman tentang penggunaan dari produk ( untuk dapat digunakan dalam pekerjaan, kendati masih ada eror). 11. Memverifikasi ketepatan dari produk. 12. Meyakinkan mutu. 13. Pengujian tidak dapat memperlihatkan kerusakan sistem, tetapi hanya dapat memperlihatkan bahwa ada kesalahan perangkat lunak. 14. Kita menguji suatu program untuk menemukan kebeberadaan dari suatu kesalahan. 15. Jika kita tidak menemukan apapun bentuk kesalahan, maka kita telah gagal.
16. Jika suatu kesalahan ditemukan, maka debugging perlu dilaksanakan. Sasaran Pengujian: Glen Myers menyatakan bahwa sasaran dari Pengujian perangkat lunak adalah : 1. Pengujian adalah proses menjalankan suatu program dengan maksud menemukan kesalahan. 2. Pengujian yang baik adalah yang memiliki kemungkinan tinggi untuk menemukan kesalahan yang belum pernah ditemukan sebelumnya. 3. Pengujian yang sukses adalah pengujian yang mengungkap semua kesalahan yang belum pernah ditemukan sebelumnya. Prinsip Pengujian: Agar efektif, pengujian harus dilakukan oleh pihak ketiga yang independent (third party). 1. Pengujian yang memiliki probabilitas tinggi untuk menemukan kesalahan. 2. Pembuat sistem bukanlah orang yang paling tepat untuk melakukan semua pengujian bagi perangkat lunak. Pengujian lebih dari sebuah pemahaman tentang debugging (pandangan sempit tentang pengujian perangkat lunak). Tujuan dari Software Testing dapat berupa quality assurance, verification and validation, dan reliability estimation. Dua area besar dalam Testing adalah correctness testing dan reliability testing. Hal-hal utama yang harus dipertimbangkan dalam menjalankan testing adalah budget, time, dan quality. Berdasarkan bacaan The Bugs will Always Show Themselves, But Often Too Late dapat diketahui bahwa software pengujian memakan banyak waktu dan uang sehingga beberapa perusahaan malas untuk melakukannya dan akhirnya berakibat fatal pada produk yang mereka produksi. Anggaran software pengujian sekitar 30-50 persen dari biaya pengembangan software. Dan kebanyakan tidak dites dengan benar sebelum sampai kepada konsumen, hal itu dikarenakan pengujian software adalah proposition yang sulit dan kedua pengujian biasanya dilakukan tanpa adanya metode yang jelas. Sehingga jauh lebih baik jika pengujian software itu dimulai sedini mungkin dalam proses pengembangan sebuah software, karena menunda-nunda sehingga akan memberikan resiko yang lebih tinggi. Dengan rencana yang straight forward tentang bagaimana pengujian itu dilakukan, bisa membantu menambah coverage, eficiency, dan tentu saja menambah kualitas software itu sendiri. Bugs (error) selalu ada dalam software sehingga proses software pengujian bisa terus berlanjut tanpa waktu yang pasti yang berefek pada bisnis/keuangan perusahaan. Pengujian mungkin bukan metode yang paling efektif untuk meningkatkan kualitas, namun dengan
melakukan pengujian sebelum peluncuran produk sangat memberikan kontribusi yang besar untuk peningkatan kualitas software. Metode alternatif yang dapat digunakan adalah inspection dan clean-room engineering mungkin dapat memberikan kontribusi yang lebih.
Gambar 1. Definisi Pengujian
Di dunia pengembangan software terdapat istilah “Too little testing is a crime, too much testing is a sin”. Kurang pengujian (under testing) maupun pengujian yang berlebihan (over testing) memiliki opportunity cost masing-masing. Under testing akan menyebabkan dampak langsung pada saat software digunakan, sedangkan over testing akan menyebabkan ineffective dan inefficiency, dilihat dari penggunaan sumber daya dan biaya. Masalah yang sering timbul saat pengujian antara lain : a. Gagal mendefinisikan tujuan b. Pengujian dilakukan pada tingkat yang salah pada suatu siklus pengembangan sistem c. Penggunaan teknik pengujian yang tidak efektif Sebagai gambaran dilakukannya full software testing memakan waktu dan biaya, berikut faktor-faktor yang harus diperhatikan dalam software testing: a. Correctness : Jaminan bahwa data dapat dimasukkan, dimasukkan, diproses dan dikeluarkan oleh aplikasi dengan akurat dan lengkap, dengan pengontrolan transaksi dan elemen data. b. Integritas File : Jaminan bahwa data yang dimasukkan ke dalam sistem aplikasi dapat diambil kembali tanpa ada perubahan. c. Authorization : Jaminan bahwa data diproses sesuai dengan keinginan manajemen baik untuk otorisasi umum dan khusus.
d. Audit Trail : Kemampuan untuk melakukan substansi terhadap pemrosesan yang telah dilakukan. Pemrosesan data dapat didukung dengan memperhatikan masalah keakuratan, kelengkapan, timeliness dan otorisasi data. e. Continuity of Processing : Kemampuan untuk menunjang pemrosesan bila muncul suatu kejadian. Dengan demikian akan melibatkan suatu prosedur dan pembuatan back-up untuk mengatasi masalah tersebut sehingga integritas tidak hilang. f. Service Control : Jaminan bahwa hasil yang diharapkan dapat tersedia selama waktu tertentu. g. Access Control : Jaminan bahwa sumber daya sistem diproteksi terhadap modifikasi yang disengaja. h. Compliance : Jaminan bahwa sistem didesain sesuai dengan metodologi organisasi, kebijakan, prosedur dan standard. Kebutuhan itu harus diidentifikasi, diimplementasikan dan dirawat sesuai dengan kebutuhan aplikasi. i. Reliability : Jaminan bahwa aplikasi akan menjalankan fungsinya dengan benar untuk waktu yang lama. j. Easiness to Use : Kemudahan dalam menggunakan aplikasi tersebut k. Perawatan : Usaha mencari dan membetulkan kesalahan selama sistem sudah berjalan. l. Portable : Usaha untuk mengubah program dari suatu konfigurasi perangkat keras / lunak ke konfigurasi lain. Dalam usaha ini akan melibatkan masalah konversi data, perubahan program, sistem operasi dan perubahan dokumentasi m. Coupling : Usaha untuk berinteraksi dari suatu sistem aplikasi ke aplikasi lain dalam lingkungan pemrosesan, baik dalam menerima maupun mengirimkan data. n. Performance : Jumlah sumber daya yang dibutuhkan sistem dalam menjalankan fungsinya. o. Easiness to Operate : Usaha yang dihasilkan untuk mengintegrasikan sistem ke lingkungan yang operasional. Prosedur yang digunakan dapat bersifat manual atau otomatis. Sedangkan menurut Muhamad Yunus, pengujian software terdiri dari pembuktian dinamis dari jalannya program pada sekumpulan tes yang terbatas (finite), yang sesuai dan biasanya dipilih dari domain eksekusi yang tak terbatas, yang bertentangan dengan tingkah laku yang diharapkan (expected). Pengujian tidak lagi dilihat sebagai aktivitas yang hanya dimulai setelah tahap membuat program selesai. Pengujian software sekarang dipandang sebagai aktivitas yang mana harus mencakup seluruh proses pengembangan dan pemeliharaan. Pengujian adalah cara untuk memeriksa apakah pencegahan sudah efektif atau belum dan juga untuk mengidentifikasi kesalahan.
Software testing
Software Testing fundamentals
Test Level
Test Techniques
Test related measures
Test Process
Testing yg berhub.dgn terminologi
Target pengujian (Test)
Berdasarkan intuisi dan pengalaman tester (penguji)
Evaluasi program menurut Test (pengujian)
Pertimbangan praktis
Berbasis spesifikasi
Evaluasi test (pengujian) yang dilakukan
Key Issues Sasaran Testing Hubungan Testing ke aktivitas lain
Aktivitas Test (pengujian)
Berbasis code Berbasis kesalahan Berbasis penggunaan Berdasarkan sifat dasar aplikasi Memilih dan mengkombinasikan teknik
Perincian Topik untuk Software Testing Knowledge Area
Gambar 2. Perincian untuk Software Testing Knowledge Area
Tidak semua pengujian akan berhasil dengan baik. Masih ada beberapa kekurangan yang terdapat pada pengujian suatu perangkat lunak. Banyak istilah yang digunakan dalam literatur rekayasa perangkat lunak (software) untuk mendeskripsikan kegagalan pemakaian. Seperti kesalahan, kegagalan, error dan lainnya. Kriteria seleksi Pengujian/criteria kecukupan Pengujian (atau penghentian aturan): Kriteria seleksi Pengujian adalah hal menentukan apakah sekumpulan Pengujian kasus layak ada. Kriteria seleksi dapat digunakan untuk memilih test yang layak atau tidak, termasuk untuk menentukan apakah pengujian bisa dihentikan atau tidak. Sehingga untuk melakukan Pengujian software bukanlah suatu pekerjaan yang mudah dan memerlukan biaya maupun sumberdaya yang cukup besar sehingga untuk suatu perusahaan hal tersebut tidak efisien. Kekurangan-kekurangan tersebut antara lain : 1. Tidak pernah cukup melakukan banyak ujian yang layak. 2. Pengujian tidak akan menemukan semua kesalahan. 3. Pengujian sulit dan menghabiskan banyak waktu, pengujian software secara menyeluruh dapat menghabiskan waktu 30% – 40% dari total waktu pembuatan software. 4. Pembangunan perangkat lunak.
5. Pengujian secara menyeluruh akan menghabiskan banyak biaya. 6. Pengujian sebagian besar masih merupakan tugas yang tidak resmi. Sumber: Article Info : Why is Error Prevention Important? http://www.stickyminds.com/
2. Dalam pengembangan dan pengujian perangkat lunak, apakah ada saat dimana pengecekan error menyeluruh tidak dibutuhkan? Mengapa? Jawab: Tidak. Pengujian perangkat lunak merupakan serangkaian teknik pengujian yang mencakup proses pelaksanaan sebuah program atau aplikasi dengan tujuan menemukan kerusakan atau error. Pengujian tersebut harus dilakukan secara menyeluruh sehingga suatu perangkat lunak 100% bebas error. Error sekecil apapun dapat menimbulkan bencana bagi end-user. Kegagalan menemukan satu error kecil dalam kode dapat menghabiskan banyak biaya. Sebuah studi yang dilakukan oleh NIST pada tahun 2002 di Amerika Serikat menemukan bahwa kerusakan perangkat lunak menghabiskan biaya $59,5 milyar USD setiap tahunnya. Pengeluaran biaya tersebut terjadi lebih dari tiga kali dan seharusnya dapat dicegah apabila dilakukan pengujian perangkat lunak yang lebih baik. Disamping itu, faktor utama dari pengujian software adalah kadar kritis serta resiko yang ditimbulkannya. Kadar kritis ini dalam pengujian akan memvalidasi cara mengatasinya. Sistem komputer untuk pengaturan pendaratan pesawat atau aplikasi transfer keuangan memerlukan perhatian ekstra dibandingan sistem parkir mobil, karena pada program semacam itu jika terjadi error dapat menyebabkan kerugian yang fatal. Resiko adalah kondisi yang dapat menyebabkan kerugian. Dalam hal ini resiko berhubungan dengan kemungkinan terjadinya kehilangan. Seperti kasus rudal kendali perang Teluk, pemerintah AS harus siaga terhadap serangan rudal kendali dari negara lawan dan mengantisipasinya dengan sistem anti rudal kendali. Walaupun resiko tidak dapat dihilangkan, tapi dapat diminimalkan dengan sistem anti rudal kendali. Seperti dipaparkan di artikel, ketika sistem antirudal sedang melakukan reboot, rudal kendali negara lawan berhasil lolos dan mengenai sasaran. AT&T long distance call error menyebabkan kerugian 60 milyar Dollar bagi AT&T. Therac 25 menyebabkan racun radiasi dan kematian. Beberapa peristiwa tersebut menunjukkan betapa perlunya pengecekan eror menyeluruh pada suatu software.
Software bugs dapat muncul pada setiap pengembangan software module dengan ukuran yang moderate, bukan karena kekurang hati-hatian dan kurangnya programmer responsibilities, melainkan karena kompleksitasnya software tersebut dan keterbatasan manusia untuk mengatur kekompleksitasan tersebut. Sebuah metodologi yang menarik dalam software testing adalah sama halnya dengan penggunaan pestisida, yang lebih dikenal dengan nama Pesticide Paradox. Segala metode yang digunakan untuk mencegah ataupun mencari bugs pada sebuah software dapat menimbulkan bugs halus kepada metode-metode lainnya yang tidak efektif. Sekali lagi walaupun telah dilakukan pengujian terhadap sebuah software, namun tidak dapat menjamin bahwa software tersebut akan 100% aman, hal ini karena adanya “Complexity Barrier” .
Sumber: http://blog.its.ac.id/justascrap http://blog.aslingga.com/2009/12/15/software-Pengujian/ 3. Apakah keuntungan bisnis dari melaksanakan rencana pengujian error yang diharuskan dalam tahap pengembangan software? Klasifikasikan keuntungankeuntungan tersebut ke dalam peningkatan efektifitas dan efisiensi dalam pengembangan proses pengujian. Jawab : Melakukan pengujian error secara berkala kepada sebuah software merupakan agenda yang wajib dilaksanakan, terutama untuk sebuah Perusahaan Pengembang Software (Software Developer). Bagi sebuah perusahaan pengembang software pengujian error ini dapat digunakan untuk menyempurnakan produknya di versi berikutnya, sebagai ilustrasi Perusahaan pengembang Browser seperti Mozilla Firefox dan Opera, selalu mempublikasikan versi Beta nya sebelum versi fullnya, hal ini merupakan bagian dari testing sekaligus pengujian error yang dapat dilakukan oleh End User selain dari pengembang itu sendiri, sehingga tiap versi baru yang diluncurkan merupakan penyempurnaan dari versiversi sebelumnya. Efektivitas pengujian error yang didapatkan oleh perusahaan adalah perusahaan tidak memerlukan waktu yang lama untuk mengetahui kegagalan softwarenya dan “hanya satu kali kerja”. Karena jika terdapat suatu kesalahan dalam pengembangan software dan baru diketahui setelah software tersebut selesai seluruhnya. Maka untuk memperbaiki kesalahan tersebut juga akan merubah sistem-sistem yang ada setelahnya. Dengan demikian pengujian error dalam jangka pendek akan membuat perusahaan tetap mampu bersaing dengan
kompetitornya. Sedangkan dari sisi efisiensi perusahaan adalah adanya dapat meminimalisir sumberdaya yang harus dikeluarkan baik dalam bentuk uang, waktu maupun tenaga yang jumlahnya mungkin tidak sedikit apabila tidak dilakukan pengecekan saat tahap pengembangan karena tidak perlu melakukan pekerjaan yang berulang.
Biaya Pengujian
Jumlah kesalahan
Jumlah Pengujian yang Optimum
Under test
Over test
Jumlah pengujian
Gambar 3. Grafik Pengujian Error
Pada gambar diatas terlihat bahwa ketika jumlah pengujian bertambah seiring dengan meningkatnya biaya pengujian, jumlah kesalahan atau dampak yang tidak terdeteksi menurun. Pada sisi kiri menggambarkan situasi under test dimana jumlah pengujian sedikit, biaya pengujian pun sedikit. Pada kondisi ini jumlah kesalahan atau dampak yang tidak terdeteksi dalam jumlah yang banyak. Pada titik dimana kedua kurva bertemu adalah titik pengujian optimum. Titik pertemuan dua kurva ini merupakan titik yang efektif dan efisien melakukan software testing, baik dari sisi tujuan, jumlah pengujian dan biaya. Titik ini juga merupakan titik dimana dimulainya kondisi over test, kondisi dimana tambahan biaya pengujian lebih besar daripada tambahan temuan jumlah kesalahan pada software (Marginal biaya pengujian > Marginal temuan kesalahan software). Keuntungan dari penerapan standar pengujian perangkat lunak sebelum dipasarkan adalah:
1. Penghematan Biaya. Semakin awal ditemukannya kerusakan dalam suatu perangkat lunak, semakin murah biaya yang dikeluarkan untuk memperbaikinya. Dengan pengujian perangkat lunak, akan diketahui kekurangan dan kesalahaan-kesalahan prosedur kerja dari suatu perangkat lunak. Hal ini juga dapat menghindari kerugian yang lebih besar, jika terjadi complain atau permintaan ganti rugi akibat dari kesalahan fatal / error terjadi ketika perangkat udah diluncurkan ke pasar dan telah digunakan konsumen untuk kegiatan operasi perusahaan atau bisnisnya. Tabel di bawah ini menunjukkan biaya yang dibutuhkan untuk memperbaiki kerusakan jika dilihat berdasarkan tahap kapan ditemukannya kerusakan tersebut. Sebagai contoh, jika suatu kerusakan ditemukan pada tahap post-release, maka akan memakan biaya 10 hingga 100 kali lebih untuk memperbaikinya dibandingkan jika kerusakan tersebut ditemukan pada tahap awal/requirements. Tabel 1. Biaya perbaikan kerusakan
Time detected Cost to fix a defect
Time introduced
Requirements Architecture Construction
System test
Postrelease
Requirements
1×
3×
5–10×
10×
10–100×
Architecture
-
1×
10×
15×
25–100×
Construction
-
-
1×
10×
10–25×
2. Brand Awareness Dengan pengujian yang teliti dan serius, dapat dihasilkan produk/perangkat lunak yang handal (mendekati sempurna) dan kecil kemungkinan terjadi error, sehingga konsumen puas memanfaatkan suatu produk perangkat lunak dari suatu merk tertentu. Berdsarkan hal tesebut, maka sebaiknya sebuah perusahaan pengembang perangkat lunak menginvestasikan dananya cukup besar untuk divisi pengujian suatu produk perangkat lunaknya, guna menghasilkan produk perangkat lunak yang handal, yang akhirnya menghasilkan kepercayaan dari konsumen/pasar dan dapat membangun good will atau brand awareness terhadap suatu merk.
Sumber : http://en.wikipedia.org/wiki/Software_Pengujian