White Box Test Definisi Adalah testing yang diturunkan

White Box Test

Definisi �Adalah testing yang diturunkan dari “pengetahuan” tentang struktur dan implementasi program �Penentuan test case disesuaikan dengan struktur sistem. Knowledge program digunakan untuk mengidentifikasi test case tambahan �Dikenal juga dengan nama lain : glass box, structural, clear box atau open box testing, Struktural testing, pathoriented testing � Syarat : harus tahu secara detail tetang perangkat lunak yang akan di uji. � Tujuannya adalah meyakinkan bahwa himpunan test case akan menguji setiap path pada satu program sedikitnya satu kali


Ilustrasi White Box �Test case dipilih berdasarkan pengujian kode dari pada spesifikasi.

Kegunaan � Menguji setiap jalur independent � Menguji keputusan logic (true atau falsa) � Menguji Loops dan batasannya � Menguji Data Struktur internalnya

Cakupan white box �Cakupan pernyataan, cabang dan jalur adalah suatu teknik white box testing yang menggunakan alur logika dari program untuk membuat test cases. �Alur logika adalah cara dimana suatu bagian dari program tertentu dieksekusi saat menjalankan program. �Alur logika suatu program dapat direpresentasikan dengan flow graph

Contoh lainnya

Pernyataan � Cakupan pernyataan 100 % adalah bila tiap pernyataan pada program ditinjau setidaknya minimal sekali tes. � Cakupan pernyataan berkaitan dengan tinjauan terhadap titik (node) pada flow graph. � Cakupan 100 % terjadi bilamana semua titik dikunjungi oleh jalur yang dilalui oleh test cases. � Pada contoh gambar flow graph di samping terdapat 10 titik. Misal suatu jalur eksekusi program melewati titik-titik A, B, D, H, K. Berarti ada 5 titik dari 10 titik yang dikunjungi, maka cakupan pernyataan sebesar 50 %.

Cabang � Cakupan cabang 100 % adalah bilamana tiap cabang keputusan pada program ditinjau setidaknya minimal sekali tes. � Cakupan cabang berkaitan dengan peninjauan anak panah cabang (branch edges) dari flow graph. � Cakupan 100 % adalah bilamana semua anak panah cabang ditinjau oleh jalur-jalur yang dilalui oleh test cases. � Berdasarkan pada contoh gambar flow graph di atas, terdapat 6 anak panah cabang. Misal suatu jalur eksekusi program melawati titik A, B, D, H, K maka jalur tersebut meninjau 2 dari 6 anak

Jalur (Path) � Cakupan jalur 100 % adalah bilamana tiap jalur pada program dikunjungi setidaknya minimal sekali tes. � Cakupan jalur berkaitan dengan peninjauan jalur sepanjang flow graph. � Cakupan 100 % adalah bilamana semua jalur dilalui oleh test cases. � Berdasarkan contoh flow graph di atas, terdapat 4 jalur. Bila suatu eksekusi jalur pada program melalui titik-titik A, B,

Perbedaan pernyataan, cabang dan jalur

Test case Yang dihasilkan Hasil dari penggunaan pengujian White-box adalah menghasilkan test case yang: 1. Memberikan jaminan bahwa semua jalur independen pada suatu modul telah digunakan paling tidak satu kali 2. Menggunakan semua keputusan logis pada sisi true dan false 3. Mengeksekusi semua loop pada batasannya dan batas operasionalnya 4. Menggunakan struktur data internal untuk menjamin validitasnya.

Yang diperlukan dalam White-box adalah - Menentukan semua jalur logika Mengembangkan test case untuk mengujinya Mengevaluasi hasil dengan memunculkan test case untuk menguji logika program secara mendalam

Basis Path test Basis path testing adalah sebuah teknik white-box testing � Merupakan teknik white box testing yang dikenalkan oleh Tom Mc. Cabe � Untuk mendapatkan ukuran kompleksitas logis dari desain prosedural. � Metode identifikasi yang berdasarkan pada jalur, struktur atau koneksi yang ada dari suatu sistem ini biasa disebut juga sebagai branch testing � cabang-cabang dari kode atau fungsi logika diidentifikasi dan dites, atau disebut juga sebagai control-flow testing Methods: 1. Flow graph notation 2. Independent program paths or Cyclomatic complexity 3. Deriving test cases 4. Graph Matrices �

2 bentuk basis path �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 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.

Notasi Diagram alir dan Bagan Alir � Disebut juga control flow (called flow graph). � Merepresentasikan logical control flow.

Notasi Bagan Alir Sequence IF While Until Case

Notasi Flow Graph � Suatu flow graph terbentuk dari: �� Nodes (titik), mewakili pernyataan (atau sub program) yang akan ditinjau saat eksekusi program. �Edges (anak panah), mewakili jalur logika program untuk menghubungkan satu pernyataan (atau sub program) dengan yang lainnya. �Branch nodes (titik cabang), titik-titik yang mempunyai lebih dari satu anak panah keluaran. �Branch edges (anak panah cabang), anak panah yang keluar dari suatu cabang. � Paths (jalur), jalur yang mungkin untuk bergerak dari satu titik ke lainnya sejalan dengan keberadaan arah anak panah.

Gambar A. adalah struktur kontrol program dan gambar B adalah gambaran flowchart dalam bentuk flowgraph. Gambar B setiap siklus disebut flow graph node, menggambarkan satu atau lebih procedural statement.

Cyclomatic Complexity � Adalah pengukuran software yang memberikan pengukuran kuantitatif dari kompleksitas logika program. � Pada Konteks metode basis path testing, nilai yang dihitung bagi cyclomatic complexity menentukan jalur -jalur independen dalam kumpulan baisi suatu program. � Jalur independen adalah tiap jalur pada program yang memperlihatkan 1 kelompok baru dari pernyataan proses atau kondisi baru.

Contoh V(G) = 11 – 9 + 2 = 4 V(G) = 3 + 1 = 4

�berdasarkan urutan alurnya, didapatkan suatu kelompok basis flow graph

Membuat Test Case �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

Contoh �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], [increment counter].

�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].

Perlu diperhatikan � 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)]. � Alasan mengapa tiap komponen terkecil sistem dianjurkan untuk tidak memiliki nilai V(G) yang melebihi 10: �Semakin banyak komponen, pengubung antar komponen dan titik persimpangan (keputusan) akan semakin overhead(biaya), �Membuat kode menjadi komplek dan dapat menurunkan kinerja sistem �Menempatkan fungsi-fungsi dalam jumlah besar ke suatu modul akan menaikan jumlah antar muka (interfaces) dari tiap modul ke modul lainnya. �Bila dalam 1 modul hanya mempunyai sedikit fungsi, akan membuat komponen menjadi sederhana dan potensi terjadinya defect juga akan makin berkurang, serta biaya pengerjaan juga akan dapat ditekan secara efisien

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).


�Setiap tanda (a, b, c, d. . . ) diganti dengan nilai 1 kondisi ini disebut dengan connection matrix. �Setiap baris dengan dua atau lebih nilai merepresentasikan predicate node. �Connections = Each row Total no. of entries – 1. �V(G)= Sum of all connections + 1

Connection matrix


1. Latihan begin read A, B; if A<=3 then B= B-2 ; else B= B+2; if B<=5 then c = A-2 ; else c = A +2; endif; print C; end Hitunglah Cyclomatic Complexity Menggunakan: a. Graph Base b. Matrix

1. � begin � IF A = 10 THEN � IF B > C THEN � A=B � ELSE � A=C � ENDIF � Print A � Print B � Print C � end Hitunglah Cyclomatic Complexity Menggunakan: a. Graph Base b. Matrix

1. Hitunglah Cyclomatic Complexity Menggunakan: a. Graph Base b. Matrix

1. Hitunglah Cyclomatic Complexity Menggunakan: a. Graph Base b. Matrix

Latihan Basis Path 1. Hitunglah Cyclomatic Complexity Menggunakan: a. Graph Base b. Matrix

Latihan 2 1. Hitunglah Cyclomatic Complexity Menggunakan: a. Graph Base b. Matrix

Latihan � public void how. Complex() { int i=20; � � i); while (i<10) { System. out. printf("i is %d", if (i%2 == 0) { System. out. println("eve � � n"); } else { System. out. println("odd" � � ); } � � } 1. Hitunglah Cyclomatic Complexity Menggunakan: a. Graph Base b. Matrix

1. Latihan Hitunglah Cyclomatic Complexity Menggunakan: a. Graph Base b. Matrix

Integration Test �Pengujian tingkat ke 2 (Second Level) �Pengujian dilakukan untuk mengekspos cacat pada interface dan interaksi antara komponen terintegrasi atau sistem.

Analogi FAIL

Metode �White Box Testing, TASKS • Integration Test Plan • Prepare � Gray Box Testing • Review • Rework �Black Box Testing, • Baseline • Integration Test Cases/Scripts Pihak yang melakukan Test • Prepare • Review Pengembang sendiri atau Penguji • Rework independen melakukan Integrasi • Baseline Pengujian. • Integration Test • Perform

Pendekatan Integration Testing �Incremental Approach; �Top-down Integration; �Bottom-up Integration; �Big bang Integration �Sandwich Integration

Incremental Approach �Penggujian secara bertahap menggabungkan dua komponen bersama-sama �Dua tipe pendekatan Incremental �Top-down Integration; �Bottom-up Integration;

Top-down Integration �unit tingkat atas diuji pertama kali dan unit tingkat yang lebih rendah diuji langkah demi langkah setelah itu. �Tipe : Depth-first integration dan Breadth-first integration

Top-down Integration


Bottom-up Integration �Unit tingkat bawah diuji unit tingkat pertama dan atas langkah demi langkah setelah itu

Bottom-up Integration

Big bang Integration �seluruh atau sebagian besar unit digabungkan bersama-sama dan diuji di satu waktu

SANDWICH (OR) HYBRID APPROACH Intgeration �Kombinasi dari Top Down dan Bottom-Up

Contoh SYSTEM INTEGRATION TESTING

Basis Path Testing During Integration � Basis path testing dapat juga digunakan pada integration testing ketika unit-unit / komponen telah terintegrasi bersama. � Pendekatan Desain Predikat Mc. Cabe (Predicate approach) �Draw a “structure chart” �Calculate integration complexity · �Select tests to exercise every “type” of interaction, not every combination Pendekatan ini dapat digunakan untuk memprediksi integration test effort sebelum koding dimulai

Integration Basis Path Test Cases

Latihan Integrasi �Integration Basis Path Testing � 1. Hitunglah kompleksitas integrasi dari gambar di samping! � 2. Pilih sebuah set dari basis path untuk menguji gambar disamping!
- Slides: 57