Software Testing Technique -- Materi 10 --
-- P e r t e m u a n 1 4 --
bestpowerpointtemplates.com
Acknowledgement •Materi dalam slide ini sebagian besar diambil dari slide buku [Pressman, 2010], mohon tidak digunakan untuk keperluan lain selain kuliah TIS. •Sumber lain: –Materi Testing dan Implementasi [Ayuliana, 2011] –Teknik Pengujian Perangkat Lunak [Nur Cahyo] –White Box Testing – Materi Testing dan Implementasi Sistem [Romeo, 2006]
2
Desain Test Case “Bugs bersembunyi di sudut dan berkerumun di batasan dinding…” - Boris Beizer -
Tujuan
Untuk menemukan errors
Kriteria
Secara lengkap
Kendala
dengan usaha dan waktu minimal 3
Pengujian yang Melelahkan
loop < 20 X
Terdapat kemungkinan 1014 jalur! Jika untuk eksekusi 1 test perlu 1 ms, maka akan memerlukan 3.170 tahun untuk menguji seluruh program. 4
Selektif Testing
Jalur terpilih
loop < 20 X
5
Sebelum Testing Software Dilakukan Dua bahan yg disediakan untuk proses uji: 1. Konfigurasi software, termasuk Spesifikasi Software saat Requirement dan Source code 2. Konfigurasi uji, termasuk Test Plan & Procedure, perangkat testing yg akan digunakan, test case dan hasil yg diharapkan
6
Pengujian Software
Metode black-box
Metode white-box
Metode Strategi
7
Metode Testing Software Dua metode pendekatan perancangan test case:
1. White Box Testing (pada sesuatu yg kecil (modul)) berfokus pada struktur kontrol program. • 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 2. Black Box Testing (yang besar) fokus pada fungsional software, secara penuh menguji semua kebutuhan fungsional suatu program. Memastikan semua input diterima dengan benar dan ouput yg dihasilkan juga benar-benar tepat, integrasi dari eksternal data berjalan dengan baik. 8
Metode Testing Software Dalam Bahasa Sederhana… •White-box : untuk testing sebuah program •Black-box : untuk testing hubungan antar program dalam sebuah sistem.
9
White-Box Testing
10
Metode White-Box
... Tujuannya adalah untuk meyakinkan bahwa semua statement dan kondisi telah dieksekusi paling tidak sekali …
11
Mengapa Harus Ditelusuri? Kesalahan logika dan asumsi yang tidak benar berbanding terbalik dengan probabilitas eksekusi suatu jalur
Seringkali kita percaya bahwa suatu jalur kelihatannya tidak tereksekusi. Kenyataannya seringkali berlawanan dengan intuisi Kesalahan penulisan sering random; dimungkinkan pada jalur yang tidak teruji memuat beberapa. 12
Basis Path Testing •Merupakan teknik white box testing yang dikenalkan oleh Tom McCabe. •Metode identifikasi yang berdasarkan pada jalur, struktur atau koneksi yang ada dari suatu sistem ini biasa disebut juga sebagai branch testing, karena cabang-cabang dari kode atau fungsi logika diidentifikasi dan dites, atau disebut juga sebagai control-flow testing.
Basis Path Testing •Basis path hadir dalam 2 bentuk, yaitu: – Zero Path: Jalur penghubung yang tidak penting atau jalur pintas yang ada pada suatu sistem. – One Path: Jalur penghubung yang penting atau berupa proses pada suatu sistem.
•Konsep utama basis path: – Tiap basis path harus diidentifikasi, tidak boleh ada yang terabaikan (setidaknya dites 1 kali). – Kombinasi dan permutasi dari suatu basis path tidak perlu dites.
Basis Path Testing 1. Notasi Flow Graph atau Program Graph Contoh struktur dalam flow graph: Sequence
If Case
While
Until
2. Cyclomatic Complexity, merupakan pengukuran software yang menyediakan pengukuran kuantitatif dari kompleksitas logis suatu program. Nilai cyclomatic complexity mendefinisikan jumlah jalur bebas pada basis program.
Basis Path Testing 3. Independent path (jalur bebas) merupakan jalur pada program yg menunjukkan setidaknya satu kumpulan pernyataan pemrosesan baru atau kondisi baru. 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
16
Notasi Flow Chart • Jika tadi sudah diperlihatkan Notasi Flow Graph, maka berikut adalah notasi untuk flow chart:
Sequence If
While
Until
Case
17
Basis Path Testing • Dari kode sumber dibuatkan gambar flow chart untuk kemudian ditentukan berapa banyak jalur test yang harus dilakukan 1 Do while records remain read record; 2 Calculate proses; 3 If record field 1 = 0 4 Then process record; 5 Store in buffer; Increment counter; 6 Else If record field 2 = 0 8Then reset counter; 7 Else process record; Store in file; 9Endif 10 Endif 11 Enddo End
18
Basis Path Testing dalam Flow Graph Flow Graph
Flow Chart
19
Kompleksitas Cyclomatic • Adalah pengukuran software yang memberikan pengukuran kuantitatif dari kompleksitas logika program. • Pada konteks metode basis path testing , nilai yang dihitung pada cyclomatic complexity menentukan: – jumlah jalur-jalur yang independen dalam kumpulan basis suatu program, dan – memberikan jumlah tes minimal yang harus dilakukan untuk memastikan bahwa semua pernyataan telah dieksekusi sekurangnya satu kali. • Jalur independen adalah tiap jalur pada program yang memperlihatkan 1 kelompok baru dari pernyataan proses atau kondisi baru.
Kompleksitas Cyclomatic • Berdasarkan urutan alurnya, didapatkan suatu kelompok basis flow graph: – Jalur 1 : 1–11 – Jalur 2 : 1-2-3-4-5-10-1-11 – Jalur 3 : 1-2-3-6-7-9-10-1-11 – Jalur 4 : 1-2-3-6-8-9-10-1-11
Kompleksitas Cyclomatic •Nilai Kompleksitas V(G) = E (edges) – N (nodes) + 2 V(G) = 11 – 9 + 2 = 4 •V(G) = P (predicate node) + 1 V(G) = 3 + 1 = 4
Kompleksitas Cyclomatic •Tahapan dalam membuat test cases dengan menggunakan cyclomatic complexity: – Gunakan disain atau kode sebagai dasar, gambarlah flow graph – Berdasarkan flow graph, tentukan cyclomatic complexity – Tentukan kelompok basis dari jalur independen secara linier – Siapkan test cases yang akan melakukan eksekusi dari tiap jalur dalam kelompok basis
23
Contoh Lain White Box Testing • Pengujian White Box Testing yang lain adalah Control Structure Testing yang meliputi:
1. Condition Testing, menjalankan kondisi logis yang terdapat pada modul program 2. Data Flow Testing, metode yg menyeleksi jalur test program menurut lokasi pendefinisian & menggunakan variabelvariabel program 3. Loop Testing, berfokus pada validitas dari bentuk loop (simple loop, concatenated loop, nested loop, unstructured loop)
24
Loop Testing • Loop testing adalah suatu teknik white box testing yang berfokus pada validitas konstruksi loop secara eksklusif. Gambar pada slide berikutnya memperlihatkan empat tipe yang berbeda dari loop, yaitu: – Simple Loops – Nested Loops – Concatenated Loops – Unstructured Loops
25
Jenis Loop Testing
Simple Loop Nested Loops Concatenated Loops
Unstructured Loops 26
Loop Testing
•Simple Loops. Sekumpulan tes berikut ini dapat digunakan untuk simple loops, dimana n adalah jumlah maksimum yang dapat dilewatkan pada loop. Kondisi minimum simple loop: – Lompati loop secara keseluruhan, tak ada iterasi/lewatan pada loop. – Lewati hanya satu kali iterasi pada loop. – Lewati dua kali iterasi pada loop. – Lewati m kali iterasi pada loop dimana m
Loop Testing • Nested Loops. Jika pendekatan tes untuk simple loops dikembangkan pada nested loops, jumlah kemungkinan tes akan berkembang secara geometris searah dengan semakin tingginya tingkat dari nested loops. – Menurut Beizer, nested loop memberikan suatu pendekatan yang akan menolong untuk mengurangi jumlah tes. – Mulailah dari loop yang paling dalam. Set semua loops lainnya dengan nilai minimum. – Lakukan tes simple loops untuk loop yang paling dalam, dengan tetap mempertahankan loops yang ada di luarnya dengan iterasi yang minimum. – Kerjakan dari dalam ke luar, lakukan tes untuk loop berikutnya, tapi dengan tetap mempertahankan semua loop yang berada di luar pada nilai minimum dan nested loop lainnya pada nilai yang umum. – Teruskan hingga keseluruhan dari loops telah dites.
Loop Testing •Concatenated Loops. Concatenated loops dapat dites dengan menggunakan pendekatan simple loops, jika tiap loops independen (tidak saling bergantung) satu sama lain. Jika dua loops tidak independen, maka gunakan pendekatan nested loops. •Unstructured Loops. Tidak dapat dites dengan efektif. Dan bila memungkinkan loops jenis ini harus didisain ulang.
Black-Box Testing
30
Black Box Testing
requirements
output
input
events
31
Black Box Testing
Pendekatan pengujian dimana program dianggap sebagai suatu ‘black-box’ (‘kotak hitam’) Program test case berbasiskan spesifikasi Test planning dapat dimulai sejak awal proses pengembangan sistem
32
Black Box Testing
Input test data
I
Inputs causing anomalous behaviour
e
System
Output test results
Oe
Outputs which reveal the presence of defects
33
Black Box Testing • Merupakan metode pelengkap White Box Testing. Berfokus pada kebutuhan fungsional dari software
• Memungkinkan perancang untuk memperoleh sekumpulan input yg secara penuh menguji semua kebutuhan fungsional suatu program • Metode Black Box berusaha menemukan kesalahan yg termasuk kategori di bawah ini: - fungsi-fungsi yg hilang atau tidak benar - kesalahan pada antarmuka - kesalahan pada struktur data atau pengaksesan database ekternal - kesalahan pada performance - kesalahan pada inisialisasi dan terminasi 34
Contoh Penggunaan Black Box Testing • Contoh lain Black Box Testing adalah 1. Equivalence Partitioning, membagi domain input dari program ke dalam tiap jenis data 2. Boundary Value Analysis (BVA) melengkapi Equivalence Partitioning, dengan melakukannya dari domain output 3. Cause-effect Graphing, memvalidasi aksi-aksi & kondisi yg kompleks
35
Equivalence Partitioning
(ketepatan)
36
Equivalence Partitioning Input data dan output hasil terdapat di kategori yang berbeda yang sesuai dengan kategori inputnya Masing-masing kategori equivalensi partition diprosres dimana program akan memproses semua kategori tersebut secara sama rata (equivalent). Test cases dipilih dari masing-masing partisi
37
Equivalence Partitioning
Kumpulan input per kategori Invalid inputs
Valid inputs
System
Kumpulan output per kategori Outputs
38
Equivalence Partitioning Partisi input dan output sistem ke dalam ‘equivalence sets’ Jika input adalah 5-digit integer antara 10000 dan 99999, maka equivalence partitions-nya adalah <10000, 1000099999, dan >100000 Pilih test case dari tiap batasan tersebut, misal: 00000, 9999, 10000, 99999, 100001
39
Equivalence Partitioning 3 4
Less than 4
7
11 10
Between 4 and 10
More than 10
input values NilaiNumber angka of yang dimasukkan 9999 10000
Less than 10000
50000
100000 99999
Between 10000 and 99999
More than 99999
Input values Kategori nilai input 40
Equivalence Partitioning Perancangan test case equivalence partitioning dilakukan berdasarkan evaluasi kelas equivalence untuk kondisi input yg menggambarkan kumpulan keadaan yg valid atau tidak. Kondisi input dapat berupa nilai numeric, range nilai, kumpulan nilai yg berhubungan atau kondisi Boolean. Contoh: Pemeliharaan data untuk aplikasi bank yg sudah diotomatisasikan. Pemakai dapat memutar nomor telepon bank dengan menggunakan mikro komputer yg terhubung dengan password yg telah ditentukan dan diikuti dengan perintah-perintah. Data yg diterima adalah : Kode area : kosong atau 3 digit Prefix : 3 digit atau tidak diawali 0 atau 1 Suffix : 4 digit Password : 6 digit alfanumerik Perintah : check, deposit, dll 41
Equivalence Partitioning Selanjutnya kondisi input digabungkan dengan masing-masing data elemen ditentukan sbb : Kode area : kondisi input, Boolean – kode area mungkin ada atau tidak kondisi input, range – nilai ditentukan antara 200 dan 999 Prefix : kondisi input range > 200 atau tidak diawali 0 atau 1 Suffix : kondisi input nilai 4 digit Password : kondisi input boolean – pw mungkin diperlukan atau tidak kondisi input nilai dengan 6 karakter string Perintah : kondisi input set berisi perintah-perintah yang telah didefinisikan
42
Boundary Value Analysis (Analisa Nilai Batas) 1. 2. 3. 4.
Menguji untuk input di sekitar batas atas maupun bawah sebuah range nilai yang valid. Menguji nilai maksimal dan minimal. Menerapkan (1 & 2) untuk output. Menguji batas struktur data yang dipakai. Misal ukuran array.
43
Boundary Value Analysis (Analisa Nilai Batas)
user queries
FK input
output formats mouse picks
prompts
input domain
data
output domain 44
Cause-Effect Graphs (Grafik Sebab-Akibat) Ambil relasi spesifik antara kombinasi input (sebab) dan output (akibat) Grafik ini juga menentukan titik temu antara ekfek dari input dan output
Menggambar Cause-Effect Graphs
A B If A then B (identitas) A
C
B If (A and B)then C
Menggambar Cause-Effect Graphs
A
C
B If (A or B) then C A B
C
If (not(A AND B)) then C
Menggambar Cause-Effect Graphs
A B
C
If (not (A OR B))then C
A B If (not A) then B
Skenario Pengujian Khusus •Pengujian GUI (Graphic User Interface). •Pengujian arsitektur client/ server. •Pengujian dokumentasi dan fasilitas bantuan. •Pengujian sistem waktu nyata.
49
Ini adalah akhir materi MK Testing dan Implementasi Sistem 2013
Pertanyaan?
50
Next Meeting ... • Presentasi tugas kelompok studi kasus (2x pertemuan)
• Pemberian Kisi-Kisi UAS (akhir perkuliahan) • Ujian Akhir Semester ( jadwal dari kampus)
51