3) Bandingkan tujuan dan partisipan dari metode review tiga tim !
9.2. Strategi Testing Software
Meskipun metodologi testing sangat beragam, tapi metodologi ini bisa diterapkan dalam sebuah framework tentang dua strategis dasar testing yaitu :
Melakukan testing secara keseluruhan, sekali paket lengkap maka software siap, jika tidak dikenal sebagai “big bang testing”.
Melakukan testing pada bagian software seperti modul atau unit.
Incremental testing juga dilakukan berdasarkan 2 basic strategi : bottom-up dan top-down. Keduanya berasumsi bahwa sebuat software dibangun secara hierarkikal modul. Pada top-down testing, modul
112
pertama yang ditest merupakan modul utama dan merupakan level tertinggi dari struktur software, sedangkan modul yang diuji terakhir kali adalah level yang terrendah. Pada bottom-up testing, yang pertama kali diuji adalah level yang terrendah, sedangkan bagian utamanya diuji paling akhir.
Gambar 9.1 menggambarkan tenteng top-down dan bottom-up testing pada pengembangan software dengan 11 modul. Pada gambar 9.1(a) merupakan testing menggunakan bottom-up, dimana prosesnya sebagai berikut :
Tahap 1 : Unit test modul 1-7
Tahap 2 : Menguji kesatuan dari modul 1 dan 2 yang terintegrasi dalam modul 8
Tahap 3: Menguji modul 3,4,5 dan 8 yang terintegrasi dalam modul 9, dan menguji modul 6 dan 7 yang terintegrasi dalam modul 10
113
Gambar 9.1 bottom-up (a) dan top-down(b) testing – ilustrasi(gambaran)
Pada gambar 9.1(b), merupakan pengujian software menggunakan top-down dalam 6 tingkatan. Tampak nyata bahwa perubahan strategi testing menunjukkan adanya perubahan pada penjadwalan test pula. Proses top-down testing, sebagai berikut :
Tahap 1 : Unit test modul 11
114
Tahap 3 : Tes penyatuan B, A disatukan dengan modul 8 Tahap 4 : Tes penyatuan C, B disatukan dengan modul 6 dan 7 Tahap 5 : Tes penyatuan D, C disatukan dengan modul 1 dan 2 Tahap 6 : Sistem D diintegrasikan dengan modul 3,4 dan 5.
Incremental testing yang ditunjukkan pada gambar 9.1 merupakan dua bagian. Bagian dari contoh tersebut adalah “horizontally sequenced” (“breadth first”), dan “vertically squenced” (“depth first”). Jika kita mengubah horizontal path dari top-down sequence yang ditunjukkan pada gambar 9.1(b) ke vertical sequence, testing akan menjadi seperti :
Tahap 1 : Unit tes modul 11
Tahap 2 : Integrasi A, modul 11 dan 9
Tahap 3 : Integrasi B, modul A dengan modul 8 Tahap 4 : Integrasi C, modul B dengan modul 1 dan 2 Tahap 5 : Integrasi D, modul C dengan modul 10 Tahap 6 : Integrasi E, modul D dengan modul 6 dan 7
Tahap 7 : Sistem tes setelah test E mengintegrasikan dengan modul 3,4 dan 5.
Stubs dan drivers untuk incremental testing
Stubs dan driver adalah simulator pengganti software yang diperlukan jika modul tidak tersedia saat melakukan test. Stub (sering disebut dengan “dummy module”) menggantikan modul terrendah yang tudak tersedia. Stub dibutuhkan untuk top-down testing. Dalam kasus ini, stub menyediakan hasil kalkulasi(perhitungan) modul yang berlevel rendah. Sebagai contoh, pada stage 3 pada gambar top- down testing (gambar 9.1 b), modul 9, yang mengaktifkan modul 8, tersedia; dan telah diuji dan diperbaiki pada stage 2 dalam testing. Stub diperlukan untuk menggantikan level modul yang lebih rendah, yaitu modul 1 dan 2, yang belum lengkap. Testing tersebut terlihat pada gambar 9.1.
115
Gambar 9.2 penggunaan stub dan driver pada incremental testing – contoh
Seperti stub, driver menggantikan modul namun modul yang levelnya lebih tinggi yang mengaktifkan modul yang akan diuji. Driver melewati data test menuju ke modul test dan menerima hasil dari perhitungannya. Driver dibutuhkan pada bottom-up testing hingga modul dengan level tertinggi didevelop. Contohnya, pada stage 2 dalam bottom-up testing (gambar 9.1 a), level yang lebih rendah, modul 1 dan 2 tersedia, modul-modul tersebut diuji dan diperbaiki pada stage 1 dalam testing. Driver dibutuhkan untuk menggantikan modul dengan level yang lebih tinggi, yaitu modul 9, yang belum lengkap. Keadaan seoerti ini dapat dilihat pada gambar 9.2 (b).
Tips implementasi
Sumber daya yang substansial dapat diperoleh dengan memelihara library stub dan driver untuk kebutuhan yang akan datang.
116
Bottom-up versus top-down strategi
Keuntungan dari bottom-up strategi adalah meringankan performa dari pengujian tersebut sedangkan kerugiannya adalah keterlambatan dalam mengamati program secara keseluruhan. Keuntungan dari top-down strategi adalah memungkinkan untuk mengetahui keseluruhan fungsi program tak lama setelah pengujian level tertinggi selesai. Dalam beberapa kasus karakteristik ini memungkinkan untuk mengidentifikasi analisis dan design eror, permintaan fungsional, dll. Dan kerugiannya adalah kesulitan dalam membagi menjadi modul-modul untuk pengujian lebih lanjut dan sulit untuk menganalisa hasil pengujian. Para pakar testing masih mendiskusikan tentang strategi mana yang terbaik antara top-down dan bottom-up. Walaupun keputusannya berubah-ubah, namun sejauh ini keputusan masih ada pada tengan developer. Tim penguji harus mengikuti keputusan dari developer karena pengujian merupakan sesuatu yang sangat penting yang dilaksanakan tak lama setelah modul dibuat(dicoding). Pengimplementasian strategi testing yang berbeda dengan strategi pengembangan dapat menyebabkan penundaan jadwal test.
Big bang versus top-down strategi
Kecuali jika program sangat kecil dan sederhana, strategi big bang sangat tidak menguntungkan. Pengidentifikasian eror sangat tidak praktis. Disamping penginvestasian sumber daya yang tinggi, efektivitas dari pendekatan ini relative sangat kecil. Pengidentifikasian eror dengan menggunakan metode ini juga sangat kecil. Selain itu jika dihadapkan dengan suatu paket software, pengenalan error dapat menjadi suatu tugas yang berat karena menyangkut dengan modul yang lain. Batasan seperti inilah yang membuat perkiraan/estimasi dari testing menjadi tidak jelas. Berbeda dengan strategi big bang, incremental testing menawarkan sejumlah keuntungan, yang utama adalah :
Incremental testing biasanya dilakukan pada modul-modul kecil sebagai unit kesatuan dari test. Karena memudahkan untuk mengidentifikasi presentase eror yang lebih tinggi dibandingkan dengan pengujian software secara keseluruhan
Lebih sederhana dalam pengidentifikasian dan pengkoreksian eror dan membutuhkan sedikit tenaga kerja karena dilakukan pada volume software yang terbatas
Secara singkat, dalam incremental testing, pengenalan dan pengoreksian eror dilakukan pada tahap lebih awal pada pengembangan dan pengujian, yang mencegah luputnya dalam menemukan eror. Kekurangan dari incremental testing adalah memerlukan banyak programmer untuk mempersiapkan
117
modul-modul terkecil hingga terbesar dan pengintegrasiannya. Serta kerugian yang lain adalah membutuhkan pengujian yang berulang-ulang untuk program yang sama. (big bang testing hanya memerlukan sekali pengujian).