Teknik Unit Testing Pressman, Roger “S/W Engineering” edisi 5/7 chapter 17
1
DASAR2 PENGUJIAN PERANGKAT LUNAK Objektifitas Pengujian Test case yg baik adalah yg mempunyai probabilitas yg tinggi untuk menemukan error yg tak diketemukan Pengujian merupakan suatu proses eksekusi program yang ditujukan untuk menemukan error Uji yg sukses adalah yg dapat ‘membuka’ error yang tak diketemukan Dua klas input yg disediakan untuk proses uji 1. konfigurasi software, termasuk Software Requirement Specification, Design Specification dan Source code 2. konfigurasi uji, termasuk Test Plan & Procedure, perangkat testing yg akan digunakan, test case dan hasil yg diharapkan
2
PERANCANGAN TEST CASE
Test case yg dirancang harus mempunyai
Dua metode pendekatan perancangan test case 1. White Box Testing (pada sesuatu yg kecil (modul)) berfokus pada struktur kontrol program.
probabilitas yg tinggi untuk menemukan sebuah error dalam waktu & effort yg minimum.
Dijamin semua independent path (jalur bebas) telah dijalankan setidaknya satu kali Menjalankan semua keputusan logis pada sisi true & false Menjalankan semua looping Melakukan struktur data internal untuk menjamin validitas
3
PERANCANGAN TEST CASE (lanj.) 2. Black Box Testing (yang besar) berfokus pada
kebutuhan fungsional software, memungkinkan perancang untuk memperoleh kondisi2 input yg secara penuh menguji semua kebutuhan fungsional suatu program
4
WHITE BOX TESTING : Basis Path Testing Metode pertama yg diusulkan oleh Tom McCabe (1976). Metode ini memungkinkan perancangan memperoleh pengukuran yang kompleksitas dari perancangan prosedural dan menggunakan pengukuran ini sebagai pedoman pendefinisian sekumpulan basis dari jalur eksekusi
Perangkat yang digunakan 1. Notasi Flow Graph atau Program Graph 2. Cyclomatic Complexity, merupakan pengukuran per.lunak yang menyediakan pengukuran kuantitatif dari kompleksitas logis suatu program. Nilai cyclomatic complexity mendefinisikan jumlah jalur bebas pada basis program. 3. Independent path (jalur bebas) merupakan jalur pada program yg menunjukkan setidaknya satu kumpulan pernyataan pemrosesan baru atau kondisi baru. 4. Graph Matrix merupakan matriks persegi 4 dimana sisi2nya sama dengan jumlah node pada flow graph
5
BASIS PATH TESTING Langkah2 Basis Path Testing - gunakan rancangan atau kode sebagai pondasi, lalu gambarkan flow graph - tentukan cyclomatic complexity, dinyatakan V(G) dari flow graph - tentukan sekumpulan basis secara linear jalur bebas - persiapkan test case yg akan memperkuat eksekusi setiap jalur pada sekumpulan basis program
6
White Box Testing Path Testing Flowgraph Graph Matric Control Structure Testing Conditional Testing Dataflow testing Loop testing
7
Flow Graph Representasi logika program menjadi simpul dan busur Dengan menghitung bilangan Cyclomatic bisa dihitung juga ada berapa region dalam flograph tersebut Bilangan Cyclomatic mengindikasikan kompleksitas perangkat lunak Makin besar bilangan cyclomatic, makin banyak kasus uji yang harus diujicobakan V(G)= E- N + 2 E= edge N : simpul
8
Langkah Pengujian Menggunakan Flowgraph Buat Flowgraph dari Source Program yang akan diuji Hitung bilangan cyclomaticnya Tentukan “path linier” pengujian sebanyak bil. Ciclomatic Kembangkan kasus uji untuk setiap path tsb Lakukan pengujiannya
9
Contoh flowgraph Procedure Average Interface return average,total_input,total_valid Interface accept value,minimum,,maximum Type value[1..100] is scalar array Type average,total_input,total_valid,maximum,minimum,su m is scalar Type I is integer (1) (2) (3) (4) (5) (6)
I=1; Total_input=0; Total_valid=0 Sum=0 Do while value[i]<>-999 and total_input<100 increment total_input by 1; 10
(7) (8) (9)
IF value[i]>=minimum and value[i]<=maximum THEN increment total_valid by 1; sum = sum + value[i] ELSE (10) SKIP ENDIF (11) Increment I by 1; ENDDO (12) IF total_valid >0 THEN (13) average=sum/total_valid ELSE (14) average=-999 ENDIF END average
11
Conditional Testing Adalah metode testing yang memfokuskan desan test case berdasarkan “logical condition” yang ada di dalam program Logical condition meliputi Boolean variabel Boolean operator error(incorrect,missing,extra) Boolean parantesis error Relational operator error (digabung dengan domain testing) Arithmetic Expression Error Keuntungan Sederhana untuk mengukur coverage dari testing Cukup Efektif dalam menemukan error Lebih detil dari pada Flow graph
12
Conditional Testing (contoh)
B1 and B2 B1 and (E3=E4) (E1>E2) and (E3=E4) Relation Expression yang ada ekpresi aritmatikanya E1 = A * (8 + 2*B) (E1>E2) and (E3=E4)
13
White Box Testing Metode: basis path testing. Memakai notasi flow graph.
14
Kompleksitas Cyclomatic Menunjukkan jumlah skenario pengujian yang harus dilakukan untuk menjamin cakupan seluruh program.
15
Contoh White Box Testing
16
BLACK BOX Testing Disebut juga dengan Behavioral testing Fokus ujinya pada spesifikasi fungsional dari S/W Dilakukan dengan tanpa membuka source code, namun pasti running program Bukan alternatif(substitusi) jika dijejerkan dengan white box testing, melainkan complementary Secara global : S/W tester mendefinisikan sekumpulan kombinasi nilai input sedemikian hingga bisa menguji validitas dan completeness dari semua fungsi yang ada dalam spesifikasi Waktu penerapannya lebih akhir (setelah coding selesai)
17
Black Box Testing
Graph based Testing Equivalence Partitioning Boundary Value Analysis Comparison Testing
18
BLACK BOX Testing : Kategori error
Incorrect Function Missing Function Error pada struktur data internal Error pada basis data Error pada perilaku atau performance Error pada inisialisasi dan terminasi program
19
BLACK BOX Testing: Panduan Merancang Kasus Uji
Bagaimana Validitas Fungsional di uji Bagaimana Behaviour Sistem di Uji Bagaimana Kinerja Sistem di Uji Apa saja Klasifikasi dari kombinasi input yang bisa menjadi kasus uji yang baik ( complece dan efisien) Apakah sistem sensitif terhadap terhadap perubahan input Apakah boundary / batas nilai input ditangani dengan baik Apakah data rate (kecepatan aliran data) dan volume data ditangani dengan baik
20
Graph based Teknik : Menyusun Graph yang node – nya mewakili object yang ada dalam sistem dan link mewakili relasi antar object Susun kasus uji yang menguji perilaku object dan relasi antar object
Cocok diterapkan untuk S/W yang kompleks Perlu adanya Start dan End pada graph Link sebaiknya mempunyai “nama” Loop Testing dapat digunakan jika diperlukan
21
Graph Based Relationship : Transitivity of sequential relationship X is required to compute Y Y is required to compute Z so, X is required to compute Z Symmetry of a relationship If a link is bidirectional, it is important to test this feature. Example : UNDO Reflexive of relationship Link that leads back to itself, in essence a “no action” or “null action”
22
Black Box Testing – Graph Based
23
Graph based Cara mengidentifikasi Node Transaction Flow (node: transaksi) Finite State Modelling (node: state) Data Flow Modelling (node: obyek data) Timing Modelling (node : modul program/object program yang dipanggil secara sequensial)
24
Equivalence Partitioning Def : a black box testing method that divides the input domain of a program into classes of data from which test cases can be derived Guidelines to defined equivalence classes : 1. If an input condition specifies a range, one valid and two invalid equivalence classes are defined 2. If an input condition requires specific value, one valid and two invalid equivalence classes are defined 3. If an input condition specifies a member of set, one valid and two invalid equivalence classes are defined 4. If an input condition is boolean, one valid and two invalid equivalence classes are defined
25
Equivalence Partitioning Contoh “Format input pada sebuah Bank” Kode area : blank / 3 digit angka input condition, boolean ada & tidak ada input condition, range nilai didefinisikan Prefix : 3 digit angka tapi tidak mungkin diawali dengan digit 0 / 1 input condition, range Sufix : 4 digit angka, bebas input condition, range Password : 6 digit alphanumeric input condition, boolean ada atau tidak ada input condition, value Command – check, deposit, bill pay input condition, set containing command 26
Equivalence Partitioning Domain input di bagi ke dalam 2 kelas , yaitu Kelas Valid dan Kelas Invalid Jenis : Range : 1 valid ; 2 invalid Nilai tertentu: 1 valid , 1 invalid Anggota Himpunan : 1 valid , 1 invalid Boolean: 1 valid , 1 invalid
27
Boundary Value Analysis (BVA) BVA is a test case design techniques that complements equivalence partitioning. BVA leads to the selection of test cases at the “edges” of the class.
28
Boundary Value Analysis Mengambil kasus uji pada nilai batas dari domain input maupun output Jika range : batas atas dan batas bawah Number : maksimum, minimum, diatas maksimum dan dibawah minimum Cari input sehingga nilai output maksimum atau minimum (misal suhu, tekanan udara) Struktur data yang jumlah elemennya terbatas (array)
29
Comparison Testing Dua Modul di jalankan paralel dengan input yang sama, dengan lingkungan hardware yang sama Hasilnya dibandingkan
30