Teknik Pengujian Perangkat Lunak membahas berbagai teknik pengujian perangkat lunak termasuk rencana pengujian, proses pengujian, pengujian berbasis kasus, pengujian putih dan hitam, serta pengujian berbasis objek.
2. Rencana Pengujian (Test Plan)
Proses testing
Deskripsi fase-fase utama dalam pengujian
Pelacakan Kebutuhan
Semua kebutuhan user diuji secara individu
Item yang diuji
Menspesifikasi komponen sistem yang diuji
Jadwal Testing
Prosedur Pencatatan Hasil dan Prosedur
Kebutuhan akan Hardware dan Software
Kendala-kendala
Mis: kekurangan staff, alat, waktu dll.
2
4. Test Data dan Test Cases
Test data: Input yang yang direncanakan digunakan oleh
sistem.
Test cases: Input yang digunakan untuk menguji sistem
dan memprediksi output dari input jika sistem beroperasi
sesuai dengan spesifikasi.
4
5. Teknik Perangkat Lunak
- Pengujian white box
- Pengujian black box
- Pengujian pada aplikasi berbasis objek
8. White – Box Testing
White – Box Testing adalah cara pengujian dengan melihat
ke dalam modul untuk meneliti kode – kode program yang
ada, dan menganalisis apakah ada kesalahan atau tidak.
Jika ada modul yang menghasilkan output yang tidak
sesuai dengan proses bisnis yang dilakukan maka baris –
baris program, variabel dan parameter yang terlibat pada
unit tersebut akan dicek satu persatu dan diperbaiki
kemudian di-compile ulang.
8
9. Metode White Box Testing
Pengujian Basis Path
Pengujian Kondisi
Pengujian Loop
9
10. Pengujian Basis Path
Merupakan teknik white box testing yang
dikenalkan oleh Tom McCabe [MC76].
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 .
11. Pengujian Basis Path
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.
13. Perhitungan Cyclomatic Complexity
Adalah pengukuran software yang memberikan
pengukuran kuantitatif dari kompleksitas logika
program.
Pada konteks metode pengujian basis path, nilai yang
dihitung bagi 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.
14. Rumus Cyclomatic Complexity
[Region / Complexity]
V(G) = E (edges) – N (nodes) + 2
V(G) = P (predicate node) + 1
15. Tahapan Cyclomatic Complexity
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
16. Cyclomatic Complexity
Catatan : Beberapa jalur mungkin hanya dapat
dieksekusi sebagai bagian dari tes yang lain.
Direkomendasikan agar jangan sampai kompleksitas
tiap unit / komponen terkecil sistem melebihi nilai 10
[V(G)]. Beberapa praktisi menggunakan nilai rata-rata
V(G) dari tiap unit / komponenn terkecil untuk
memberikan penilaian kompleksitas
17. Graph Matrix
Adalah matrik berbentuk segi empat sama sisi, dimana jumlah
baris dan kolom sama dengan jumlah node, dan identifikasi
baris dan kolom sama dengan identifikasi node, serta isi data
adalah keberadaan penghubung antar node (edges).
Beberapa properti yang dapat ditambahkan sebagai pembobotan
pada koneksi antar node di dalam graph matrix, sebagai berikut:
Kemungkinan jalur (Edge) akan dilalui / dieksekusi.
Waktu proses yang diharapkan pada jalur selama proses transfer
dilakukan.
Memori yang dibutuhkan selama proses transfer dilakukan pada jalur.
Sumber daya (resources) yang dibutuhkan selama proses transfer
dilakukan pada jalur.
19. Contoh
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
7Then reset counter;
8 Else process record;
Store in file;
9Endif
10 Endif
11 Enddo
End
20.
21. Hitung V
V(G) = E (edges) – N (nodes) + 2
= 11 – 9 + 2
= 4
V(G) = P (predicate node) + 1
Lihat Flow Graph (Contoh)
V(G) = 3 + 1 = 4
22. Jalur Tes
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
Test case jalur (Path) 1
Nilai(record.eof) = input valid, dimana record.eof = true
Hasil yang diharapkan : Sistem keluar dari loop dan sub program.
Test case jalur (Path) 2
Nilai(field 1) = input valid, dimana field 1 = 0
Nilai(record.eof) = input valid, dimana record.eof = false
Nilai(counter) = Nilai(counter) + 1
Hasil yang diharapkan : Sistem melakukan [process record], [store
in buffer] dan [increment counter].
23. Test case jalur (Path) 3
Nilai(field 2) = input valid, dimana field 2 = 0
Nilai(record.eof) = input valid, dimana record.eof = false
Nilai(counter) = 0
Hasil yang diharapkan : Sistem melakukan [reset counter].
Test case jalur (Path) 4
Nilai(field 2) = input valid, dimana field 2 <> 0
Nilai(record.eof) = input valid, dimana record.eof = false
Hasil yang diharapkan : Sistem melakukan [process record]
dan [store in file].
25. Pengujian Kondisi
Merupakan pelengkap dari pengujian Basis Path.
Pengujian Kondisi
Adalah sebuah metode desain test case yang
menggunakan kondisi logis yang ada pada suatu
program
26. Pengujian Kondisi
a. Kondisi Sederhana
Variabel Boolean atau suatu persamaan hubungan
(relasional)
IF A = 0 THEN ……
IF A = 1 THEN …….
IF A = B THEN ……
IF A < B THEN ……
IF A > B THEN ……
IF A <= B THEN ……
IF A >= B THEN ……
IF A <> B THEN ……
27. Pengujian Kondisi
Persamaan relasional pada Kondisi Sederhana mengambil bentuk :
E1 (Operator-relasional) E2
Dimana :
- E1 dan E2 merupakan persamaan aritmatika, dan
- (Operator-relasional) adalah salah satu dari operator-operator
berikut:
- “<”, “≤”, “=“, “≠”, (“¬ =“) (pertidaksamaan), “>”, “≥”,
28. Pengujian Kondisi
b. Kondisi Gabungan
adalah kondisi yang terdiri dari 2 atau lebih kondisi
sederhana, operator boolean, dan tanda kurung
Contoh:
IF (A > B AND A > C) THEN ……
IF (A > B AND A < C) THEN ……
IF (A > B AND A <= C) THEN……
IF (A> B OR A > C) THEN ……
IF (A> B OR A < C) THEN ……
IF (A > B OR A <= C) THEN……
29. Pengujian Kondisi
Operator Boolean yang diijinkan dalam suatu kondisi gabungan meliputi:
OR (“|”)
AND (“&”)
NOT (“¬”)
Kondisi tanpa persamaan relasional disebut persamaan Boolean
30. Pengujian Kondisi
Komponen-komponen yang ada pada suatu kondisi:
A,B,C : Persamaan Aritmatika
=, <, >, <=, >= : Operator-relasional
AND, OR, N.Eq : Operator-Boolean
( ) : Kondisi sederhana
31. Pengujian Kondisi
Tipe kesalahan pada suatu kondisi meliputi:
- Kesalahan operator Boolean (adanya operator Boolean yang
salah/hilang/ekstra)
- Kesalahan variabel Boolean
- Kesalahan tanda kurung Boolean
- Kesalahan operator relasional
- Kesalahan persamaan aritmatika
33. Pengujian Loop
Merupakan teknik pengujian white box yg berfokus
pada validitas konstruksi Loop.
Loop dapat dibagi menjadi empat kelas yg berbeda :
1. Loop sederhana,
2. Loop terangkai,
3. Loop tersarang, dan
4. Loop tidak terstruktur
36. 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
38. Black-box testing
Pengujian black box berusaha menemukan kesalahan
dalam kategori :
Fungsi-fungsi yang tidak benar atau hilang
Kesalahan interface
Kesalahan dalam struktur data atau akses database
eksternal
Kesalahan kinerja
Inisialisasi dan kesalahan terminasi
40. Aktifitas Pengujian
Meninjau ulang model OOA dan OOD
Ujicoba Class setelah penulisan program sumber
Ujicoba Integrasi dalam subsistems
Ujicoba Integrasi subsistem yang telah ditambahkan
kedalam sistem
Ujicoba validasi berdasarkan OOA use-cases
41. STRATEGI PENGUJIAN
Strategi pengujian untuk perangkat lunak beriorientasi
objek serupa dengan strategi pengujian yang telah dibahas
sebelumnya. Namun terdapat beberapa perbedaan dengan
beberapa strategi yang telah dibahas sebelumnya, yakni
1. Pada unit testing (dalam konteks berorientasi objek)
Bagian terkecil yang diuji pada unit testing adalah kelas atau
objek, tidak seperti unit testing konvensional yang fokus
pada detail algoritmik dari perangkat lunak
Tidak menguji operasi yang ada secara terpisah, seperti
halnya unit testing konvensional, karena operasi-operasi
pada satu kelas diuji bersamaan pada satu kelas
Setiap operasi yang diturunkan pada kelas turunan
harus diperiksa
42. 2. Pada integration testing
Memiliki dua strategi yakni thread-based testing dan use-based testing
Thread-based testing :
mengintegrasikan sekumpulan kelas yang dibutuhkan untuk merespon suatu
input atau event pada sistem.
Setiap thread diintegrasikan dan diuji secara individual,
pengujian regresi diterapkan untuk memastikan tidak ada efek samping yang
muncul
Use-based testing:
Pengujian terhadap setiap independent classes (kelas yang menggunakan
sangat sedikit kelas server)
Pengujian terhadap dependent classes sampai keseluruhan sistem
terbentuk (dibangun)
Tahapan cluster testing di mana sekumpulan kelas yang berkolaborasi diuji
untuk menemukan kesalahan pada saat berinteraksi
43. 3. Pengujian Validasi dalam Konteks Berorientasi
Objek
memusatkan pada aksi dari user dan keluaran dari
sistem yang dapat dikenali user
Case
membantu untuk menemukan kesalahan pada
kebutuhan interaksi user
Black Box
mengatur pengujian validasi
44. Testing levels
Testing operations pada objects
Testing object classes
Testing clusters cooperating objects
Testing OO system secara lengkap
46. Cluster Testing
Gambaran UI Sistem Pendaftaran
Perijinan
frmIjinInvesDatasheet
<<Form>>
frmPendaftaranIjinInvestasi
<<Form>>
+f3
frmPendaftaranIMB
<<Form>>
frmIMBDatasheet
<<Form>>
+f4
frmMain
<<MDI Form>>
+f1
+f3
+f4
+f2
frmLogin
<<Form>>
+mainForm
IUserAuthorization
(f rom UserServ ices)
<<coclass>>
Main_Mod
<<Module>> +UserAuthorization
Cluster testing digunakan untuk test integrasi terhadap kooperatif object.
Identifikasi clusters menggunakan knowledge operation objects dan system
features yang diimplementasikan oleh cluster tersebut.
47. Object-Interaction Testing
: Petugas
Loket
: Layar Utama Sistem
Pendaftaran
: Membuat
Pendaftaran Baru
: Formulir Pendaftaran : Pendaftaran
Baru1: Pendaftaran Baru( )
2: Pendaftaran Baru( )
3: Jalankan Formulir Pendaftaran( )
4: Tampilkan Form Pendaftaran( )
5: Masukan Pendaftaran( )
6: Buat Pendaftaran( )
7: Tambahkan Pendaftaran( )
48. Object class testing
Complete test yang menguji class melibatkan
Testing semua operations suatu object
Setting dan interrogating semua attribute object
Menguji object untuk semua state(keadaan) yg mungkin
Inheritance akan mengakibatkan sulitnya
perancangan object class tests seperti
information yg diuji sulit dilokalisasi.
49. Contoh PERANCANGAN KASUS
PENGUJIAN
Contoh perancangan pengujian scenario-based untuk
text editor:
Use Case : Fix the Final Draft
Background : Use case ini menggambarkan urutan event
yang muncul
1. Cetak seluruh dokumen
2. Periksa dokumen, ubah halaman tertentu
3. Untuk setiap halaman yang diubah, cetak halaman tersebut
4. Kadang-kadang sederetan halaman dicetak
– Kebutuhan user :
metoda untuk mencetak satu halaman
metoda untuk mencetak beberapa halaman berurutan
– Yang diuji : pengeditan setelah pencetakan
– Penguji berharap untuk menemukan bahwa fungsi pencetakan
menyebabkan kesalahan dalam fungsi pengeditan
51. Post Test ke-3
Lakukan pengujian basis path untuk soal berikut.
Pak guru akan melakukan perhitungan nilai UTS,
untuk itu dia ingin membuat program otomatis untuk
menghitung nilai rata-rata dari semua nilai ulangan
muridnya. Buatlah flowchart atau pseudocode untuk
membantu Pak guru. Kemudian buatlah flow graph-
nya dan tentukan independent path-nya. Buat test
case-nya (cek kendalinya dan uji looping-nya)
51