TI 1153 REKAYASA PERANGKAT LUNAK 1
Rekayasa Perangkat Lunak TI1153
TEKNIK PENGUJIAN
Restyandito e-mail :
[email protected] website : http://lecturer.ukdw.ac.id/~dito TI1153 – Teknik Pengujian
Jenis Pengujian
Jenis Pengujian
Verifikasi Proses menentukan apakah suatu fase telah dilaksanakan dengan benar Are we building the product right? [Boehm, 1984]
TI1153 – Teknik Pengujian
© Restyandito
© Restyandito - 2
© Restyandito - 3
Validasi Evaluasi secara intensif terhadap produk sebelum diberikan kepada klien Are we building the right product? [Boehm, 1984]
TI1153 – Teknik Pengujian
© Restyandito - 4
Teknik Pengujian - 1
TI 1153 REKAYASA PERANGKAT LUNAK 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 TI1153 – Teknik Pengujian
© Restyandito - 5
Non Execution-Based Testing - 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
TI1153 – Teknik Pengujian
© Restyandito
© Restyandito - 7
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 - 6
Non Execution-Based Testing 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 - 8
Teknik Pengujian - 2
TI 1153 REKAYASA PERANGKAT LUNAK 1
Non Execution-Based Testing Walkthrough Tugas kelompok ini hanyalah menemukan kesalahan (bukan memperbaiki kesalahan) Ö keterbatasan waktu mengakibatkan mutu perbaikan yg
Non Execution-Based Testing Inspection
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.
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 TI1153 – Teknik Pengujian
© Restyandito - 9
Non Execution-Based Testing 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.
TI1153 – Teknik Pengujian
© Restyandito
© Restyandito - 11
Terdiri dari 5 langkah :
TI1153 – Teknik Pengujian
© Restyandito - 10
Non Execution-Based Testing
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 - 12
Teknik Pengujian - 3
TI 1153 REKAYASA PERANGKAT LUNAK 1
Execution-Based Testing
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.
Execution-Based Testing
Sifat-sifat suatu produk dapat diukur berdasar: • • •
• • TI1153 – Teknik Pengujian
© Restyandito - 13
TI1153 – Teknik Pengujian
Execution-Based Testing
Spesifikasi input Spesifikasi output
p: array dari n buah integer n>0 q: array dari n buah integer, q[0] ≤ q[1] ≤ … ≤ q[n-1]
Contoh 1: Procedure Ngurutke Spesifikasi input Spesifikasi output
© Restyandito
p: array dari n buah integer n>0 q: array dari n buah integer, q[0] ≤ q[1] ≤ … ≤ q[n-1] elemen-elemen array q merupakan hasil permutasi dari array p.
void Ngurutke (int p[ ], int q[ ]) { int i ; for ( i = 0 ; i < n ; i++ ) q[i] = 0 ; } TI1153 – Teknik Pengujian
© Restyandito - 14
Execution-Based Testing
Contoh 1: Procedure Ngurutke
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.
© Restyandito - 15
TI1153 – Teknik Pengujian
© Restyandito - 16
Teknik Pengujian - 4
TI 1153 REKAYASA PERANGKAT LUNAK 1
Execution-Based Testing
Execution-Based Testing
Contoh 2:
Contoh 2:
int k , s; int y[ ] = new int[n]; k = 0; s = 0; while (k < n) { s = s + y[k]; k = k + 1; }
TI1153 – Teknik Pengujian
© Restyandito - 17
TI1153 – Teknik Pengujian
Execution-Based Testing
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 TI1153 – Teknik Pengujian
© Restyandito
Execution-Based Testing
Contoh 3:
© Restyandito - 19
© Restyandito - 18
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 - 20
Teknik Pengujian - 5
TI 1153 REKAYASA PERANGKAT LUNAK 1
Modul Testing
Sistematika Testing
Informal testing dilakukan oleh programmer
Testing to Spesification disebut juga black-
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
box 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
Fisibilitas Testing to Spec
TI1153 – Teknik Pengujian
© Restyandito - 22
Fisibilitas Testing to Code - 5 jalur yang mungkin dilewati di tengah
Program pemroses data yang memiliki 5 jenis komisi dan 7 jenis discount. Ö Menguji semua kombinasi komisi dan discount membutuhkan 35 test case
- Jika looping 18x = 51+52+…+518 = 4,77 x 1012
Bagaimana dengan program yang memiliki 20 jenis faktor dengan 4 nilai yang berbeda? Ö 420 test case atau 1.1 x 1012
TI1153 – Teknik Pengujian
© Restyandito
© Restyandito - 23
TI1153 – Teknik Pengujian
© Restyandito - 24
Teknik Pengujian - 6
TI 1153 REKAYASA PERANGKAT LUNAK 1
Black-Box Module Testing Equivalence Testing
Boundary Value Analysis
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
TI1153 – Teknik Pengujian
© Restyandito - 25
Black-Box Module Testing Boundary Value Analysis
© Restyandito
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 - 26
Black-Box Module Testing Functional Testing
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
Black-Box Module Testing
© Restyandito - 27
Menguji apakah fungsi dari modul telah sesuai dengan spesifikasi yang diharapkan
TI1153 – Teknik Pengujian
© Restyandito - 28
Teknik Pengujian - 7
TI 1153 REKAYASA PERANGKAT LUNAK 1
Glass-Box Module Testing Structural Testing
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
TI1153 – Teknik Pengujian
© Restyandito - 29
Glass-Box Module Testing 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”);
© Restyandito
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 - 30
Glass-Box Module Testing Structural Testing Mis. path exist untuk membatasi agar tidak terjadi pembagian dengan bilangan nol if ( d==0 ) zeroDivisionRoutine(); else x = n / d;
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 TI1153 – Teknik Pengujian
Glass-Box Module Testing
© Restyandito - 31
Jika path tidak exist, maka ada kemungkinan zeroDivisionRoutine() tidak akan pernah dipanggil, krn data test d tidak sama dengan nol. TI1153 – Teknik Pengujian
© Restyandito - 32
Teknik Pengujian - 8
TI 1153 REKAYASA PERANGKAT LUNAK 1
Glass-Box Module Testing
Glass-Box Module Testing
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 TI1153 – Teknik Pengujian
© Restyandito - 33
N1 = 13 N2 = 7 n1 = 10 n2 = 4
TI1153 – Teknik Pengujian
Cleanroom
© Restyandito - 34
Cleanroom
Merupakan gabungan dari beberapa teknik: 1. 2. 3.
menggunakan incremental model dari model life cycle menggunakan teknik formal (dokumentasi) untuk tahap spesifikasi dan desain pengujian modul testing menggunakan metode nonexecution based
TI1153 – Teknik Pengujian
© Restyandito
© Restyandito - 35
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 - 36
Teknik Pengujian - 9
TI 1153 REKAYASA PERANGKAT LUNAK 1
Cleanroom
Referensi •
TI1153 – Teknik Pengujian
© Restyandito - 37
Schach, Stephen., Classical and Object-Oriented Software Engineering, WCB McGraw-Hill, 1999 (bab 5, 13)
TI1153 – Teknik Pengujian
© Restyandito - 38
The End
terima kasih
© Restyandito
Teknik Pengujian - 10