TESTING SW SE6161 Perancangan dan Analisis Perangkat Lunak 1
Pengujian Perangkat Lunak Pengujian perangkat lunak mencakup: Strategi = mengintegrasikan metode perancangan kasus uji dlm sekumpulan langkah yg direncanakan Teknik/Metode = perancangan kasus uji White-box Black-box Pengujian perangkat lunak seharusnya menghabiskan 30% - 40% dari total biaya pembangunan perangkat lunak. Testing (pengujian) tidak sama dengan debugging Pengujian perangkat lunak merupakan salah satu tugas yang dilakukan dalam software verification and validation Verifikasi dan validasi perangkat lunak adalah bagian dari software quality assurance. SE6161 Perancangan dan Analisis Perangkat Lunak 2
Tujuan Pengujian Pengujian adalah proses menjalankan program dengan maksud untuk mencari kesalahan (error) Kasus uji yang baik adalah kasus yang memiliki peluang untuk mendapatkan kesalahan yang belum ketahuan Pengujian dikatakan berhasil bila dapat memunculkan kesalahan yang belum ketahuan Jadi, pengujian yang baik bukan untuk memastikan tidak ada kesalahan tetapi untuk mencari sebanyak mungkin kesalahan yang ada di program Pengujian tidak dapat menunjukkan ke-tidak-hadir-an defect, pengujian hanya menunjukkan bahwa kesalahan perangkat lunak ada. SE6161 Perancangan dan Analisis Perangkat Lunak 3
Prinsip Dasar Pengujian Semua pengujian harus dapat dirunut ke requirement Pengujian harus direncanakan jauh sebelum dilakukan Prinsip Pareto berlaku pada pengujian perangkat lunak 80 persen dari keseluruhan kesalahan yang didapat saat pengujian dapat dirunut ke 20 persen dari keseluruhan modul persoalannya: bagaimana menemukan 20% modul tersebut Pengujian harus dimulai dari lingkup kecil ke lingkup besar Tidak mungkin ada pengujian yang exhaustive Supaya efektif, pengujian harus dilakukan oleh pihak lain yang independen. SE6161 Perancangan dan Analisis Perangkat Lunak 4
Testability Perancangan perangkat lunak harus mempunyai kualitas: Operability Observability Controllability Decomposability Simplicity Stability Understandibility Kualitas pengujian yang baik: Memiliki peluang yang besar dalam menemukan kesalahan Tidak berganda (redundant) Cukup mewakili semua kemungkinan Tidak terlalu sederhana dan tidak terlalu rumit SE6161 Perancangan dan Analisis Perangkat Lunak 5
Strategi Pengujian Pengujian Modul/Unit umumnya dilakukan oleh pengembang sendiri atau antar pengembang menguji modul/unit metode: white-box Pengujian Integrasi lebih baik menggunakan penguji independen (ITG = Independent Test Group) menguji perancangan perangkat lunak metode: white-box dan black-box Pengujian Validasi menguji kesesuaian dengan requirement metode: black-box Pengujian Sistem menguji perangkat lunak dan elemen sistem lain sebagai suatu kesatuan SE6161 Perancangan dan Analisis Perangkat Lunak 6
Strategi Pengujian Spesifikasikan kebutuhan (requirement) produk dalam bentuk yang dapat diukur (quantifiable) jauh sebelum pengujian dimulai Nyatakan tujuan pengujian secara eksplisit Pahami pengguna perangkat lunak dan buatlah profil dari tiap kategori pengguna Buat rencana pengujian yang menekankan pada rapid cycle testing Buat perangkat lunak robust yang dapat menguji dirinya sendiri Gunakan formal technical review sebagai penyaring sebelum pengujian dilakukan Gunakan formal technical review untuk menilai strategi pengujian dan kasus uji Kembangkan ancangan peningkatan berlanjut untuk proses pengujian SE6161 Perancangan dan Analisis Perangkat Lunak 7
Strategi Pengujian - Pengujian Modul/Unit Hal-hal yang diujikan: Antarmuka modul memastikan bahwa informasi yang berasal dari dan keluar dari modul yang diuji mengalir dengan benar Struktur data lokal memastikan bahwa data yang disimpan sementara menjaga integritasnya selama eksekusi perintah dalam modul mencari kesalahan-kesalahan dalam bentuk: Kondisi batas Penggunaan tipe yang tidak tepat atau nirtaatasas Inisialisasi yang salah atau nilai pasti (default) yang salah Nama peubah yang salah Tipe data yang nirtaatasas Underflow, overflow, dan addressing exceptions memastikan bahwa modul beroperasi dengan benar pada batas-batas pemrosesan yang ditentukan SE6161 Perancangan dan Analisis Perangkat Lunak 8
Strategi Pengujian - Pengujian Modul/Unit Jalur-jalur bebas memastikan bahwa semua kemungkinan jalur kontrol yang mungkin dieksekusi dengan benar paling tidak sekali mencari kesalahan-kesalahan dalam bentuk: penghitungan/pemrosesan yang salah pembandingan yang salah alur kontrol yang tidak tepat Jalur-jalur penanganan kesalahan perancangan perangkat lunak yang baik menuntut agar kondisi salah dapat diantisipasi dan memiliki penanganan kesalahan agar pemrosesan dapat berhenti dengan bersih (antibugging) - Yourdon mencari kesalahan-kesalahan dalam bentuk: Perian kesalahan tidak dapat dipahami Pemberitahuan kesalahan tidak sesuai dengan kesalahan yang dialami Kondisi kesalahan menyebabkan intervensi sistem sebelum penanganan kesalahan dilakukan Penanganan kesalahan tidak benar Perian kesalhan tidak memberikan informasi yang cukup untuk mencari sumber kesalahan SE6161 Perancangan dan Analisis Perangkat Lunak 9
Strategi Pengujian - Pengujian Modul/Unit Prosedur Pengujian: Driver Test Cases Modul yang diuji Test Results Stub Stub SE6161 Perancangan dan Analisis Perangkat Lunak 10
Strategi Pengujian - Pengujian Integrasi Ada dua ancangan dalam pengujian integrasi secara incremental: Top-Down modul diintegrasikan dengan menurun dilihat dari hirarki kontrol, dimulai dari modul pengendali utama (main program) pengintegrasian modul-modul di bawah digabungkan dengan cara: breadth-first depth-first proses integrasi: Driver = Main Program Test Cases Regression Test Test Results Modul Subordinat Stub Stub SE6161 Perancangan dan Analisis Perangkat Lunak 11
Strategi Pengujian - Pengujian Integrasi Jenis stub: Stub A Stub B Stub C Stub D Display a trace message Display passed parameter Return a value from a table (or external file) Do a table search for input parameter and return associated output parameter SE6161 Perancangan dan Analisis Perangkat Lunak 12
Strategi Pengujian - Pengujian Integrasi Bottom-up modul diintegrasikan dengan menaik dilihat dari hirarki kontrol, dimulai dari modul atomik (modul di tingkat paling bawah) yang membentuk cluster (build) proses integrasi: M c M a M b D 1 D 2 D 3 Cluster Cluster Cluster SE6161 Perancangan dan Analisis Perangkat Lunak 13
Strategi Pengujian - Pengujian Integrasi Jenis driver Driver A Driver B Driver C Driver D Invoke subordinate modules Send parameter from a table (or external file) Display parameter A Combination of driver B and driver C SE6161 Perancangan dan Analisis Perangkat Lunak 14
Strategi Pengujian - Pengujian Validasi Proses: Test Plan Test Procedure Validation Test Software developed for one customer Acceptance Test Software Documentation Software developed for mass production Alpha Test (Developer's site) Software Requirement Beta Test (Developer's site) TO-BE RELEASED SOFTWARE Software Documentations Configuration Review (Audit) SE6161 Perancangan dan Analisis Perangkat Lunak 15
Strategi Pengujian - Pengujian Sistem Persiapkan masalah: Saling Tuding Rancang penanganan kesalahan untuk semua kemungkinan masuknya informasi dari elemen sistem di luar perangkat lunak Lakukan pengujian yang mensimulasikan masuknya data jelek dan salah Catat semua hasil pengujian untuk bukti Ikut andil dalam perencanaan dan perancangan pengujian sistem untuk memastikan bahwa pengujian perangkat lunak sudah cukup Jenis sistem test: Pengujian pemulihan (recovery testing) Pengujian keamanan (security testing) Pengujian kekuatan (stress testing) Pengujian kinerja (performance testing) SE6161 Perancangan dan Analisis Perangkat Lunak 16
Teknik Pengujian - White Box Jenis teknik white-box: Basis Path Testing Buat Flow Graph Notation Hitung Cyclomatic Complexity = salah satu dari: Jumlah region V(G) = E - N + 2 E = jumlah busur pada flow graph N = jumlah simpul pada flow graph V(G) = P + 1 P = simpul predikat (simpul yang memiliki kondisi = 2 atau lebih busur yang keluar) Tentukan jalur bebas (independent path) = jalur program yang merupakan satu kumpulan perintah pengolahan atau satu kondisi pengolahan Siapkan kasus uji untuk setiap jalur bebas Graph Matrices = Connection Matrices = representasi lain dari FGN SE6161 Perancangan dan Analisis Perangkat Lunak 17
Teknik Pengujian - White Box Control Structure Testing Condition Testing cara merancang kasus uji untuk kondisi logika yang ada pada suatu modul program: kondisi sederhana = peubah boolean ekspresi relasional kondisi bentukan (compound) = gabungan dari beberapa kondisi sederhana Data Flow Testing cara menguji berdasarkan lokasi dari pendefinisian dan penggunaan suatu peubah dalam modul program Loop Testing cara menguji berdasarkan validitas dari konstruksi pengulangan yang digunakan dalam modul program: sederhana bercabang bersambung (concatenated) takterstruktur SE6161 Perancangan dan Analisis Perangkat Lunak 18
Teknik Pengujian - Black Box Jenis pengujian black-box: Graph-based Testing geraf yang mewakili hubungan antar objek pada modul sehingga tiap objek dan hubungannya tersebut dapat diuji Equivalence Partitioning pembagian domain masukan dari program menjadi kelas data yang dapat dibuatkan kasus ujinya Boundary Value Analysis pemilihan kasus uji dengan mencari batas-batas ekstrim dari kelas data Comparison Testing digunakan untuk sistem yang menganut redundancy kasus uji yang dirancang untuk satu versi perangkat lunak dijadikan masukan pada pengujian versi perangkat lunak lainnya hasil kedua versi perangkat lunak harus sama SE6161 Perancangan dan Analisis Perangkat Lunak 19
Debugging Ancangan: Proses: Brute-force memory dump, run-time trace, WRITE statements Backtracking perunutan balik mulai kesalahan ketahuan hingga sampai lokasi sumber Cause elimination dengan induksi atau deduksi: isolasi kemungkinan penyebab kesalahan Eksekusi Hasil Debugging Kasus Uji Penyebab Dicurigai Pengujian Tambahan Penyebab Diketahui Pengujian Regresi SE6161 Perancangan dan Analisis Perangkat Lunak 20