TESTING SW
20092006
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. 20092006
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.
20092006
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.
20092006
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:
20092006
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
20092006
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
20092006
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
20092006
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:
20092006
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:
Stub
20092006
Driver
Test Cases
Modul yang diuji
Test Results
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
Modul Subordinat 20092006
Test Results
Stub
SE6161 Perancangan dan Analisis Perangkat Lunak
Stub 11
Strategi Pengujian - Pengujian Integrasi
Jenis stub:
Stub A Display a trace message
20092006
Stub B Display passed parameter
Stub C
Stub D
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: Mc
Ma
D1
Mb
D2
D3
Cluster
Cluster
Cluster
20092006
SE6161 Perancangan dan Analisis Perangkat Lunak
13
Strategi Pengujian - Pengujian Integrasi
Jenis driver Driver A
Invoke subordinate modules
20092006
Driver B
Send parameter from a table (or external file)
Driver C
Display parameter
Driver D
A Combination of driver B and driver C
SE6161 Perancangan dan Analisis Perangkat Lunak
14
Strategi Pengujian - Pengujian Validasi
Proses: Test Plan
Test Procedure
Software Documentation
Software Requirement
Validation Test Software developed for one customer Acceptance Test
Software developed for mass production Alpha Test (Developer's site)
Beta Test (Developer's site)
TO-BE RELEASED SOFTWARE
Software Documentations
20092006
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:
20092006
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:
20092006
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
Data Flow Testing
cara menguji berdasarkan lokasi dari pendefinisian dan penggunaan suatu peubah dalam modul program
Loop Testing
20092006
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
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
Equivalence Partitioning
pemilihan kasus uji dengan mencari batas-batas ekstrim dari kelas data
Comparison Testing
20092006
pembagian domain masukan dari program menjadi kelas data yang dapat dibuatkan kasus ujinya
Boundary Value Analysis
geraf yang mewakili hubungan antar objek pada modul sehingga tiap objek dan hubungannya tersebut dapat diuji
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:
Brute-force
Backtracking
perunutan balik mulai kesalahan ketahuan hingga sampai lokasi sumber
Cause elimination
memory dump, run-time trace, WRITE statements
dengan induksi atau deduksi: isolasi kemungkinan penyebab kesalahan
Proses: Eksekusi
Kasus Uji
20092006
Hasil
Debugging
Penyebab Dicurigai
Penyebab Diketahui
Pengujian Tambahan
Pengujian Regresi
SE6161 Perancangan dan Analisis Perangkat Lunak
20