Dasar-Dasar Pengujian Perangkat Lunak
Fakultas Ilmu Komputer dan Teknologi Informasi Jurusan Sistem Informasi Univesitas Gunadarma
Tujuan Pembelajaran
Memahami langkah awal untuk melakukan pengujian terhadap perangkat lunak.
Materi Perkuliahan Dasar-dasar pengujian perangkat lunak Pengujian white box Pengujian path basis Pengujian struktur kendali
Kenapa Perangkat Lunak Harus Diuji ?
Alasan Pengujian PL
Bukan seorang programmer yg cukup baik. Lupa menggunakan pemrograman terstruktur secara penuh, perancangan atas-bawah untuk mendapatkan solusi. Seharusnya dapat membedakan apa yang dikatakan programmer lain atau pelanggan dan apa yang sebenarnya mereka pikirkan. Merasa bersalah apabila seseorang harus menguji koding yang kita buat. Pengujian merupakan suatu perizinan terhadap kesalahan.
Dasar Pengujian Perangkat Lunak 1.
2. 3.
Objektifitas Pengujian Test case yang baik adalah yang mempunyai probabilitas yg tinggi untuk menemukan error yang tak ditemukan. Pengujian merupakan suatu proses eksekusi program yang ditujukan untuk menemukan error. Uji yang sukses adalah yang dapat membuka error yang tak ditemukan.
Dasar Pengujian Perangkat Lunak 1.
2.
Dua kelas input yang disediakan untuk proses uji perangkat lunak adalah : Konfigurasi software, termasuk Software Requirement Specification, Design Specification dan Source code. Konfigurasi uji, termasuk Test Plan & Procedure, perangkat testing yang akan digunakan, test case dan hasil yang diharapkan.
Perancangan Test Case
Test case yang dirancang harus mempunyai probabilitas yang tinggi untuk menemukan sebuah error dalam waktu & effort yang minimum.
Dua metode pendekatan perancangan test case : White Box Testing, berfokus pada struktur kontrol program. Semua independen path dijalankan satu kali, melakukan semua loop, melakukan struktur data internal untuk validitas. Black Box Testing, berfokus pada kebutuhan fungsional software dan memungkinkan perancang untuk memperoleh kondisi input yang secara penuh menguji semua kebutuhan fungsional suatu program.
1.
2.
Teknik Pengujian Perangkat Lunak Pengujian perangkat lunak adalah elemen kritis dari jaminan kualitas perangkat lunak dan merepresentasikan spesifikasi, desain dan pengkodean. Tujuan pengujian perangkat lunak adalah mendesain serangkaian tes yang secara sistematis mengungkap beberapa jenis kesalahan yang berbeda dan melakukannya dalam waktu dan usaha yang minimum. Manfaat pengujian perangkat lunak adalah untuk menunjukkan bahwa fungsi perangkat lunak bekerja sesuai dengan spesifikasi dan kebutuhan fungsi tercapai.
1. Sasaran Pengujian Sistem 1. 2.
3.
Sasaran pengujian sistem : Pengujian adalah proses eksekusi suatu program dengan maksud menemukan kesalahan. Test case yang baik adalah test case yang memiliki probabilitas tinggi untuk menemukan kesalahan yang belum pernah ditemukan sebelumnya. Pengujian yang sukses adalah pengujian yang mengungkapkan semua kesalahan yang belum pernah ditemukan sebelumnya.
2. Prinsip Pengujian Sistem
Semua pengujian harus dapat ditelusuri sampai ke persyaratan pelanggan. Pengujian harus direncanakan lama sebelum pengujian dimulai. Prinsip pareto berlaku untuk pengujian perangkat lunak. Pengujian harus mulai “dari yang kecil” dan berkembang ke pengujian “yang besar”. Pengujian yang mendalam tidak mungkin. Untuk menjadi paling efektif, pengujian harus dilakukan oleh pihak ketiga yang independent.
3. Testabilitas
1.
2. 3. 4.
5. 6. 7.
Testabilitas PL adalah seberapa mudah program komputer dapat diuji. Karakteristik pengujian PL : Operabilitas Observabilitas Kontrolabilitas Dekomposabilitas Kesederhanaan Stabilitas Kemampuan untuk dipahami
3. Testabilitas 1. 2.
3. 4.
Atribut pengujian yang baik : Pengujian yang baik memiliki probabilitas yang tinggi untuk menemukan kesalahan. Pengujian yang baik tidak redudan. Pengujian yang baik seharusnya jenis terbaik. Pengujian yang baik tidak boleh terlalu sederhana atau terlalu kompleks.
4. Desain Test Case 1. 2. 3.
4.
5.
Pendekatan pengujian blackbox dan whitebox. Pengujian Blackbox : Berkaitan dengan pengujian pada interface PL. Blackbox testing menyinggung ujicoba yang dilakukan pada interface software. Blackbox testing didesain untuk menemukan kesalahan. Blackbox testing digunakan untuk mendemonstrasikan fungsi software yang dioperasikan. Blackbox testing sedikit memeriksa struktur logika internal software
4. Desain Test Case 1.
2. 3. 4.
Pengujian Whitebox : Didasarkan pada pemeriksaan detail prosedural. Whitebox testing akan menghasilkan program yang 100% benar. Whitebox testing dilakukan pada alur logika yang penting. Alur logika software diujicoba dengan menyediakan kasus ujicoba dengan melakukan sekumpulan kondisi atau perulangan.
Proses Testing
Failures and Faults
Failures adalah output yang tidak benar/tidak sesuai ketika sistem dijalankan. Faults adalah kesalahan dalam source code yang mungkin menimbulkan failure ketika code fault dijalankan.
Pertimbangan Pembangunan Sistem
Validasi (Product Oriented) Apakah sistem yang dikembangkan sudah benar ? Pengujian dimana sistem ketika diimplementasikan sesuai dengan yang diharapkan atau tidak ? Verifikasi (Process Oriented) Apakah sistem dikembangkan dengan cara yang benar ? Pengujian apakah sistem sudah sesuai dengan spesifikasi ?
Pengujian White Box
1. 2. 3. 4.
Pengujian white box disebut pengujian glass box. Ujicoba whitebox adalah metode desain uji kasus menggunakan struktur kontrol dari desain prosedural untuk memperoleh test case. Kasus uji yang dihasilkan pengembangan PL dengan menggunakan metode pengujian whitebox adalah : Menjamin seluruh independen paths dalam modul dilakukan sebanyak satu kali. Melakukan seluruh keputusan logika baik dari sisi benar atau salah. Melakukan seluruh pengulangan sesuai batasannya Menguji struktur data internal untuk validasinya.
Pengujian Basis Path
1. 2. 3.
4.
Pengujian basis path adalah teknik pengujian whitebox pertama yang diusulkan Tom McCabe (1976). Basis path memungkinkan desainer test case mengukur kompleksitas logis dari desain prosedural dan pengukuran ini dijadikan pedoman dalam pendefinisian sekumpulan basis dari jalur eksekusi. Yang termasuk basis path test : Notasi Diagram Alir (Path Graph Notation) Kompleksitas Siklomatik Test Case Matriks Grafik (Graph Matrices)
Notasi Diagram Alir
Diagram alir menggambarkan aliran kontrol logika.
Edges atau links Simpul atau node Region
Desain Prosedural Bagan Alir
Struktur kontrol program/Flowchart
Grafik Alir
Flowgraph Node
Grafik Alir ke PDL (Program Design Language)
Logika Gabungan
If a or b Then procedure x Else procedure y Endif
If a and b Then procedure x Then procedure y Endif
Logika Gabungan
Simpul predikat adalah simpul yang memiliki lebih dari satu edges atau links.
Kompleksitas Siklomatis
Kompleksitas siklomatis (Cyclomatic Complexity) adalah metriks PL yang memberikan pengukuran kuantitatif terhadap kompleksitas logis suatu program. Nilai cyclomatic complexity mendefinisikan jumlah independen path pada basis program. Jalur independen adalah jalur yang melalui program yang mengintroduksi sedikitnya satu rangkaian statement proses baru atau suatu kondisi baru.
Jalur Independen
Jalur 1 : 1-11 Jalur 2 : 1-2-3-4-5-10-1-11 Jalur 3 : 1-2-3-6-8-9-10-1-11 Jalur 4 : 1-2-3-6-7-9-10-1-11 Jalur 5 : 1-2-3-4-5-10-1-2-3-6-8-9-10-1-11 (tidak termasuk dalam independent path)
Kompleksitas Siklomatis Cara menghitung kompleksitas : 1. Jumlah region grafik alir sesuai dengan kompleksitas siklomatis. 2. Kompleksitas siklomatis V(G) untuk grafik alir G ditentukan sebagai V(G)= E-N+2. 3. Kompleksitas siklomatis V(G) untuk grafik alir G ditentukan sebagai V(G)=P+1. Dimana : E=Jumlah edge grafik alir N=Jumlah simpul grafik alir P=Jumlah simpul predikat
Test Cases
PDL for test design
Identifying Nodes
Flowgraph Procedure Average
Cuplikan Kode Program Do while records remain read record; Calculate process; If record field 1 = 0 Then process record; Store in buffer; Increment counter; Else if record field 2 = 0 Then reset counter; Else process record; Store in file; End if; End if; End do; End
Contoh Soal 1 1.
2. 3. 4.
5.
Pertanyaan : Region? Edge dan node? Simpul predikatnya? Independent Path? Cyclomatic Complexity?
Contoh Soal 2
Contoh Soal 3
Pertanyaan : 1. 2.
3.
Berapa jumlah cyclomatic complexity-nya ? Jalur yang menyatakan bahwa properti tersedia, calon pengguna memiliki cukup uang dan bermaksud untuk membeli properti tersebut, ditunjukkan pada independen path yag mana ? Jalur yang menyatakan bahwa properti tersedia tetapi calon pengguna tidak memiliki cukup uang, ditunjukkan pada independen path yag mana ?
Matriks Grafik (Graph Matrices)
1.
2. 3.
Matriks grafik (Graph Matrix) adalah matriks bujur sangkar yang ukurannya sama dengan jumlah simpul/node pada grafik alir. Graph matrix otomatis menggenerasi flowgraph dan mendeterminasi aliran dasar proses. Graph matrix : Bujursangkar dengan sisi merepresentasikan simpul. Baris dan kolom merepresentasikan simpul. Nilai 1 merepresentasikan hubungan antar simpul.
Contoh Graph Matrix
Flowgraph 1
Flowgraph 2
Flowgraph 1
Graph Matrix
Flowgraph 2
Graph Matrix
Flowgraph 1
Connection Matrix
Contoh Soal Graph Matrix Node
1
1
2
3
a
2
b
c
3
d
e
4
4
f g
1. 2.
3.
Pertanyaan : Konversikan matriks grafik di atas menjadi flowgraph! Buatlah Connection Matrix! Berapa nilai dari Cyclomatic Complexity?
Pengujian Struktur Kontrol
1. 2.
Condition Testing bertujuan untuk mengeksekusi semua kondisi logik dari sebuah modul program. Pengujian kondisi (Condition Testing) adalah sebuah metode desain test case yang menggunakan kondisi logis yang ada pada suatu modul program. Metode pengujian kondisi berfokus pada pengujian setiap kondisi yang ada pada program. Keuntungan : Memperkirakan pengujian berdasarkan kondisi adalah hal yang simpel. Cakupan pengujian dapat mengarahkan pada penambahan kasus uji untuk semua program.
Condition Testing 1. 2. 3.
4.
Mendefinisikan : Relational Expression (E1 op E2) : E1 dan E2 adalah arithmetic expression Simple Condition : Variabel boolean atau relation expression dan diawali dengan operator NOT Compound Condition : Dua atau lebih simple conditions, operator boolean dan tanda kurung Boolean Expression : Kondisi tanpa relational expression
Condition Testing 1.
2. 3.
Strategi yang termasuk condition testing : Branch Testing Domain Testing Branch dan Relational Operator Testing Kegunaan ujicoba kondisi adalah untuk mendeteksi, baik kesalahan kondisi dalam suatu program tetapi juga kesalahan lain dalam program. Tujuan pengujian kondisi adalah mendeteksi tidak hanya kesalahan di dalam program tetapi juga kesalahan lain dari program.
Pengujian Aliran Data
Data Flow Testing adalah metode yang menyeleksi jalur test program menurut lokasi pendefinisian dan menggunakan variabel program. Data flow Testing, setiap statement dalam program diasumsikan diisi dengan angka yang unik dan tidak ada fungsi yang mengubahnya.
Pengujian Loop
Loop adalah dasar dari banyak algoritma. Pengujian Loop merupakan teknik pengujian white box yang secara ekslusif berfokus pada validitas konstruksi loop.