Rekayasa Perangkat Lunak TI1153 TEKNIK PENGUJIAN Restyandito e-mail : dito@ukdw.ac.id website : http://lecturer.ukdw.ac.id/~dito TI1153 Teknik Pengujian Restyandito - 2 Jenis Pengujian Jenis Pengujian Verifikasi Proses menentukan apakah suatu fase telah dilaksanakan dengan benar Are we building the product right? [Boehm, 1984] Validasi Evaluasi secara intensif terhadap produk sebelum diberikan kepada klien Are we building the right product? [Boehm, 1984] TI1153 Teknik Pengujian Restyandito - 3 TI1153 Teknik Pengujian Restyandito - 4 Restyandito Teknik Pengujian - 1
Kualitas Produk Kualitas Produk Kualitas suatu perangkat lunak ditentukan oleh terpenuhi atau tidaknya spesifikasi yang diharapkan. (Bandingkan dg coca cola!) SOFTWARE QUALITY ASSURANCE (SQA) - Memastikan kualitas dari software process sehingga kualitas produk terjamin - Kelompok SQA harus independence terhadap kelompok pengembang Contoh Kasus: Suatu perusahaan software development mempekerjakan 78 orang software professional (termasuk 14 orang manager), semua melakukan proses verifikasi dan validasi. Hasil penelitian menunjukkan bahwa 28% waktu mereka digunakan untuk proses pengujian. Seorang manager dibayar Rp. 13.000.000,-/th dan seorang Rp. 9.400.000,-/th Gunakanlah analisa cost-benefit untuk menentukan apakah sebaiknya satu tim dikhususkan untuk SQA? TI1153 Teknik Pengujian Restyandito - 5 TI1153 Teknik Pengujian Restyandito - 6 Non - Blind-spot - Pekerjaan me-review dilakukan oleh orang lain selain pembuat dokumen - Dokumen diteliti oleh orang-orang dengan berbagai ketrampilan yang luas. - Pelaksanaan: walkthrough inspection Non Walkthrough terdiri dari 4-6 terdapat perwakilan dari masing-masing tim pembuat spesifikasi, klien, SQA dan tim yang akan bekerja pada fase selanjutnya Masing-masing reviewer mempelajari materi yg akan dievaluasi, selanjutnya membuat 2 macam daftar, yaitu daftar hal-hal yang tidak dipahami oleh reviewer dan daftar kesalahan yang ditemukan oleh reviewer. TI1153 Teknik Pengujian Restyandito - 7 TI1153 Teknik Pengujian Restyandito - 8 Restyandito Teknik Pengujian - 2
Non Walkthrough Tugas kelompok ini hanyalah menemukan kesalahan (bukan memperbaiki kesalahan) keterbatasan waktu mengakibatkan mutu perbaikan yg dihasilkan tidak sebaik jika perbaikan dilakukan oleh seseorang yang terlatih dalam hal itu. perbaikan yg dilakukan oleh 5 orang kelompok walkthrough memakan setidaknya memakan waktu yg sama jika perbaikan dilaukan oleh 1 orang biaya lebih besar tidak semua hal yang dianggap kesalahan, benar-benar salah Ada 2 cara: participant-driven dan documentdriven Non Inspection Terdiri dari 5 langkah : 1. Overview: orang yg bertanggungjawab atas pembuatan dokumen (spesifikasi, perancangan, pengkodean, rencana) membuat/memberikan overview. 2. Preparation: anggota mencoba memahami dokumen secara detil. 3. Inspection: salah seorang anggota (moderator) memimpin pemeriksaan, mencari kesalahan yg ada dan membuat laporan tertulis. TI1153 Teknik Pengujian Restyandito - 9 TI1153 Teknik Pengujian Restyandito - 10 Non 4. Rework: orang yang bertanggungjawab atas dokumen melakukan perbaikan berdasarkan laporan tertulis 5. Follow-up: moderator memeriksa apakah semua masalah telah ditangani. Kelompok inspection terdiri dari 4 orang: moderator, perancang, implementor, dan tester Kesalahan dicatat berdasarkan tingkat (serius/ tidak) dan tipe (logika/interface) permasalahan. Non Beberapa acuan yang dipakai untuk mengukur efektivitas inspection: - fault density, jumlah kesalahan per halaman (KLOC) - fault detection rate, jumlah kesalahan yang dapat dideteksi per jam - fault detection efficiency, jumlah kesalahan per orang per jam yang terdeteksi. TI1153 Teknik Pengujian Restyandito - 11 TI1153 Teknik Pengujian Restyandito - 12 Restyandito Teknik Pengujian - 3
Program testing, cara yang efektif untuk menemukan keberadaan bug, tetapi tidak untuk sebaliknya. EBT adalah suatu proses pengujian suatu produk berdasarkan hasil eksekusi pada suatu lingkungan yang diketahui. TI1153 Teknik Pengujian Restyandito - 13 Sifat-sifat suatu produk dapat diukur berdasar: Kegunaan (utility), apakah kebutuhan pengguna terpenuhi jika produk dijalankan pada kondisi yang diijinkan oleh spesifikasi program. Keandalan (reliability), jumlah frekuensi terjadinya kesalahan Kekuatan (robustness), jangkauan kondisi operasi, kemungkinan hasil yang salah untuk masukan yang valid, kemungkinan hasil yang benar untuk masukan yang tidak valid. Performa (performance), mis: kecepatan, jumlah memori yang dibutuhkan, dll. Kebenaran (correctness), apakah hasil keluaran sesuai dengan spesifikasi output. TI1153 Teknik Pengujian Restyandito - 14 Contoh 1: Procedure Ngurutke Spesifikasi input p: array dari n buah integer n > 0 Spesifikasi output q: array dari n buah integer, q[0] q[1] q[n-1] void Ngurutke (int p[ ], int q[ ]) { int i ; for ( i = 0 ; i < n ; i++ ) q[i] = 0 ; } Contoh 1: Procedure Ngurutke Spesifikasi input p: array dari n buah integer n > 0 Spesifikasi output q: array dari n buah integer, q[0] q[1] q[n-1] elemen-elemen array q merupakan hasil permutasi dari array p. TI1153 Teknik Pengujian Restyandito - 15 TI1153 Teknik Pengujian Restyandito - 16 Restyandito Teknik Pengujian - 4
Contoh 2: int k, s; int y[ ] = new int[n]; k = 0; s = 0; while (k < n) { s = s + y[k]; k = k + 1; } Contoh 2: TI1153 Teknik Pengujian Restyandito - 17 TI1153 Teknik Pengujian Restyandito - 18 Contoh 3: suatu file teks berisi serangkaian kata-kata yang dipisahkan oleh karakater blank atau new line, akan dirubah dalam bentuk line-by-line form dengan aturan sebagai berikut: - line break hanya boleh terjadi jika teks mengandung karakter blank atau newline. - tiap baris diisi sejauh mungkin (dg memindahkan kata yang dibaca ke dalam baris), selama - tidak ada baris yg melebihi jumlah karakter maxpos Contoh 3: - kata pertama selalu didahului dengan blank, kecuali panjang kata pertama sama dengan maxpos [Leavenworth, 1970] - prosedur tidak berhenti sampai menemukan kata yang lebih panjang dari maxpos - kata terakhir tidak ditampilkan kecuali kata tersebut diikuti oleh blank atau newline [Goodenough and Gerhart, 1975] TI1153 Teknik Pengujian Restyandito - 19 TI1153 Teknik Pengujian Restyandito - 20 Restyandito Teknik Pengujian - 5
Modul Testing Sistematika Testing Informal testing dilakukan oleh programmer pada saat mengkodekan program. Kesalahan perbaikan yang terjadi tidak didokumentasikan Formal testing dilakukan oleh tim SQA setelah programmer selesai mengimplimentasikan suatu modul. Test ini meliputi non-execution based test dan execution based test. Setiap kesalahan yang terjadi, perbaikan yg dilakukan harus didokumentasikan Testing to Spesification disebut juga blackbox test, structural, data-driven, functional, I/O-driven test Pengujian dilakukan terhadap spesifikasi produk. Testing to Code, disebut juga glass-box test / white-box test, behavioral, logc-design, path oriented test. Pengujian dilakukan terhadap program yang dibuat. TI1153 Teknik Pengujian Restyandito - 21 TI1153 Teknik Pengujian Restyandito - 22 Fisibilitas Testing to Spec Fisibilitas Testing to Code Program pemroses data yang memiliki 5 jenis komisi dan 7 jenis discount. Menguji semua kombinasi komisi dan discount membutuhkan 35 test case - 5 jalur yang mungkin dilewati di tengah - Jika looping 18x = 5 1 +5 2 + +5 18 = 4,77 x 10 12 Bagaimana dengan program yang memiliki 20 jenis faktor dengan 4 nilai yang berbeda? 4 20 test case atau 1.1 x 10 12 TI1153 Teknik Pengujian Restyandito - 23 TI1153 Teknik Pengujian Restyandito - 24 Restyandito Teknik Pengujian - 6
Black-Box Module Testing Equivalence Testing Jika suatu modul bekerja pada rentang data = 1 n, maka pengujian dapat dilakukan pada masing-masing, equivalence class, yaitu: equivalence class 1 : data < 1 equivalence class 2 : 1 < data < n equivalence class 3 : n < data Black-Box Module Testing Boundary Value Analysis Salah satu teknik yg baik untuk menemukan kesalahan adalah boundary value analysis, yaitu pengujian pada data yang berada pada perbatasan (ambang jangkauan ditambah/dikurangi 1), sehingga diperoleh 7 test data. Contoh, suatu program dengan jangkauan data R1..R2, dimana R1=1 dan R2=5000, maka test data yg harus dilakukan meliputi. TI1153 Teknik Pengujian Restyandito - 25 TI1153 Teknik Pengujian Restyandito - 26 Black-Box Module Testing Boundary Value Analysis Contoh, suatu program dengan jangkauan data R1..R2, dimana R1=1 dan R2=5000, maka test data yg harus dilakukan meliputi: Test case 1 : R1-1 = 0 Test case 2 : R1 = 1 Test case 3 : R1 + 1 = 2 Test case 4 : R1.. R2 = 300 Test case 5 : R2 1 = 4999 Test case 6 : R2 = 5000 Test case 7 : R2 + 1 = 5001 TI1153 Teknik Pengujian Restyandito - 27 Black-Box Module Testing Functional Testing Menguji apakah fungsi dari modul telah sesuai dengan spesifikasi yang diharapkan TI1153 Teknik Pengujian Restyandito - 28 Restyandito Teknik Pengujian - 7
Structural Testing masing-masing path (jalur) harus diuji setidaknya satu kali masing-masing branch (cabang) harus diuji setidaknya satu kali masing-masing statement (perintah) harus diuji setidaknya satu kali Structural Testing Kelemahan model ini adalah: - jika masing-masing jalur hanya diuji sekali, belum menjamin bahwa produk sudah bug free. - path hanya bisa dicoba kalau path tersebut exist TI1153 Teknik Pengujian Restyandito - 29 TI1153 Teknik Pengujian Restyandito - 30 Structural Testing Mis. Suatu program untuk menentukan apakah tiga buah variabel bernilai sama. if (( x + y + z ) / 3 == x ) system.out.println( x, y, z bernilai sama ) else system.out.println( nilai x, y, z berbeda ); Bagaimana hasil tes untuk data test sbb: Data Test 1 : x=1,y=1,z=1 dan x=1,y=2,z=3 Data Test 2 : x=2,y=2,z=2 dan x=2,y=1,z=3 Structural Testing Mis. path exist untuk membatasi agar tidak terjadi pembagian dengan bilangan nol if ( d==0 ) zerodivisionroutine(); else x = n / d; Jika path tidak exist, maka ada kemungkinan zerodivisionroutine() tidak akan pernah dipanggil, krn data test d tidak sama dengan nol. TI1153 Teknik Pengujian Restyandito - 31 TI1153 Teknik Pengujian Restyandito - 32 Restyandito Teknik Pengujian - 8
Complexity Testing Jumlah baris per-modul Basili, Hutchens, Takahashi, Kamayachi cyclomatic complexity McCabe Software science metric (SSM) Halstead Penghitungan jumlah operator dan operand dalam suatu modul N1 = total operator N2 = total operand n1 = jumlah operator yang unik n2 = jumlah operand yang unik N1 = 13 N2 = 7 n1 = 10 n2 = 4 TI1153 Teknik Pengujian Restyandito - 33 TI1153 Teknik Pengujian Restyandito - 34 Cleanroom Cleanroom Merupakan gabungan dari beberapa teknik: 1. menggunakan incremental model dari model life cycle 2. menggunakan teknik formal (dokumentasi) untuk tahap spesifikasi dan desain 3. pengujian modul testing menggunakan metode nonexecution based Jika banyak kesalahan yg ditemukan pd saat pengujian maka modul tersebut harus dibuand dan didesain ulang. Hal ini sesuai dg penelitian Myers yg menunjukkan bahwa semakin banyak kesalahan yg ditemukan pada tahap pengujian semakin besar kemungkinan kesalahan yang tidak terdeteksi. TI1153 Teknik Pengujian Restyandito - 35 TI1153 Teknik Pengujian Restyandito - 36 Restyandito Teknik Pengujian - 9
Cleanroom Referensi Schach, Stephen., Classical and Object-Oriented Software Engineering, WCB McGraw-Hill, 1999 (bab 5, 13) TI1153 Teknik Pengujian Restyandito - 37 TI1153 Teknik Pengujian Restyandito - 38 The End terima kasih Restyandito Teknik Pengujian - 10