LAPORAN MAKALAH Pengujian WhiteBox Testing
Software Quality And Testing A11.4805 Anggota Kelompok: Luqman Fauzi (A11.2012.07075) Alvian Yudha P. (A11.2012.07112) Aris Mulyasani (A11.2012.07113)
A.
Sample Code Berikut adalah sample code yang digunakan untuk melakukan pengujian dengan metode whitebox testing :
B.
Tujuan Penulisan Dokumen 1. Melakukan pengujian menggunakan dua metode whitebox testing , yaitu: a. Basis Path b. Graph Matrix 2. Dari dua metode tersebut, akan dijelaskan prosedur, hasil, dan pembahasan terkait pengujian dari masingmasing metode.
C.
Landasan Teori a. Basis Path
Basis Path Testing adalah sebuah metode pengujian terstruktur yang melibatkan source code dari program untuk menemukan setiap kemungkinan jalur/ path yang dapat dieksekusi. Sehingga untuk pengujian masingmasing path dengan sebanyak mungkin kemungkinan yang ada untuk mencakup masingmasing test case. Sehingga cara ini adalah pilihan terbaik untuk menggali semua kemungkinan kesalahan di dalam kode program [2]. Pada gambar di bawah ini merupakan diagram alur dari pengujian berbasis path testing terhadap eksekusi sebuah program dengan kemungkinan jalur yang ada.
b. Graph Matrix Graph Matrix merupakan metode yang digunakan untuk membantu uji coba basis path atau struktur data. Graph Matrix adalah matrik persegi empat yang mempunyai ukuran yang sama dengan jumlah node pada flowgraph . Masingmasing baris dan kolom mempunyai hubungan dengan node yang telah ditentukan dan masukan data matrix berhubungan dengan hubungan ( edge ) antar node [1]. Contoh sederhana penerapan graph matric dapat digambarkan sebagai berikut :
Hubungan bobot menyediakan tambahan informasi tentang aliran kontrol. Secara sederhana, bobot edge dapat diberi nilai 1 jika terdapat hubungan antara node atau nilai 0 jika tidak terdapat hubungan. Dapat juga hubungan bobot diberi tanda dengan ketentuan sebagai berikut: 1. Kemungkinan link (edge) dikerjakan 2. Waktu yang digunakan untuk proses selama traversal dari link 3. Memori yang diperlukan selama traversal link 4. Sumber daya yang diperlukan selama traversal link.
D.
Proses Pengujian a. Basis Path Proses di dalam metode basis path meliputi beberapa langkah, sebagai berikut: 1. Membuat Control Flow Graph
Keterangan: 1. Variable declaration ((x, y, w, A, B, theta, phi, r) 2. Function startpoint & values input (x, y, w, A, B) 3. Kondisi 1 (x > 0) 4. Kondisi 2 (x < 0 & y ≥ 0) 5. Kondisi 3 (x < 0 & y < 0) 6. Kondisi 4 (x = 0 & y = 0) 7. Kondisi 5 (x = 0 & y < 0) 8. Kondisi 6 (x = 0 & y > 0) 9. Eksekusi kondisi 1 10. Eksekusi kondisi 2
11. Eksekusi kondisi 3 12. Eksekusi kondisi 4 13. Eksekusi kondisi 5 14. Eksekusi kondisi 6 15. Output hasil berdasarkan eksekusi pada kondisi (printout nilai a & b) 16. Function endpoint 2. Menentukan nilai Cyclomatic Complexity Dari control flow graph di atas, maka dapat dihitung nilai cyclomatic complexity sebagai berikut: Model V(G) = edges nodes + 2(p) = 20 16 + 2(1) = 4 + 2 = 6 Maka diperoleh nilai cyclomatic complexity adalah 6 Keterangan:
edges : komponen yang menghubungkan masingmasing node
node : jumlah kondisi atau state terhadap setiap kemungkinan alur kerja program dalam bentuk basis path .
3. Memilih jalur basis set Untuk menentukan jalur basis set yang dimiliki, maka diperlukan graph matrix yang diperoleh dari setiap node dan keterhubungan antar masingmasing node menggunakan matrix persegi empat. Penjelasan dan perhitungan bagian ini akan dijelaskan pada bagian graph matrix. Dari graph matrix tersebut diperoleh sebanyak 6 basis set. Bagian ini dijelaskan secara lebih rinci pada bagian ‘ Graph Matrix ’ 4. Menghasilkan test case Apabila sudah diperoleh jumlah dari basis set, maka langkah selanjutnya adalah merancang test case untuk masingmasing basis path, yaitu sejumlah 6 test case. Masingmasing test case merepresentasikan setiap basis path
yang ada, dengan masingmasing kondisi / case yang berbeda. Penjelasan terkait proses ini dijelaskan pada subbab ‘Hasil’. b. Graph Matrix Dibawah ini merupakan Graph Matrix dari proses flow graph yang diperoleh pada proses sebelumnya. Apabila sebuah node dapat terhubung dengan node lainnya maka matrix bernilai 1, apabila tidak dapat terhubung maka bernilai 0. Node
Connected Node
Σ(i)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1 1 = 0
2
0
0
1
1
1
1
1
1
0
0
0
0
0
0
0
0
6 1 = 5
3
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
1 1 = 0
4
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
1 1 = 0
5
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
1 1 = 0
6
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
1 1 = 0
7
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
1 1 = 0
8
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
1 1 = 0
9
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1 1 = 0
10
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1 1 = 0
11
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1 1 = 0
12
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1 1 = 0
13
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1 1 = 0
14
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1 1 = 0
15
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1 1 = 0
16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 0 = 0
JUMLAH BASIS SET ( Σ(i) + 1 ): 5 + 1 = 6
Dari hasil perhitungan di atas, maka dapat dihitung jumlah basis set yang terbentuk adalah sebanyak 6 basis set.
E.
Hasil Dari kedua metode dan proses pengujian tersebut, maka diperoleh beberapa test case berdasarkan jumlah basis set yang didapatkan pada tahap graph matrix. Dimana testcase ini merupakan representasi dari beberapa kemungkinan terkait eksekusi program pada beberapa kondisi / case . Paths
Nodes
Path 1 1 2 3 9 15 16
Test Cases Jika node 3 bernilai benar ( x < 0 → TRUE )
Path 2 1 2 4 10 15 16 Jika node 4: bernilai benar ( x < 0 AND y ≥ 0 → TRUE ) Path 3 1 2 5 11 15 16 Jika node 5: bernilai benar ( x < 0 AND y < 0 → TRUE ) Path 4 1 2 6 12 15 16 Jika node 6: bernilai benar ( x = 0 AND y = 0 → TRUE ) Path 5 1 2 7 13 15 16 Jika node 7: bernilai benar ( x = 0 AND y < 0 → TRUE ) Path 6 1 2 8 14 15 16 Jika node 8: bernilai benar( x = 0 AND y > 0 → TRUE ) Paths
Flow Graph
Path 1
Path 2
Path 3
Path 4
Path 5
Path 6
Pada tabel di atas merupakan hasil test case yang didapatkan dari proses basis path dan graph matrix. Masingmasing test case memiliki kondisi / case yang berbedabeda. Dan dapat digunakan di dalam pengujian eksekusi program dalam realitanya.
F.
Pembahasan Dari hasil pengujian di atas diperoleh 6 test case , dimana masingmasing test case merepresentasikan masingmasing kondisi yang mungkin terjadi pada eksekusi program yang ada. Pada masingmasing test case menguji pada nilai input yang memenuhi kondisi (bernilai TRUE), karena apabila suatu kondisi tidak terpenuhi maka akan berlaih pada kondisi yang lainnya. Sehingga dari pengujian tersebut tidak mungkin apabila nilai input yang ada tidak memenuhi kondisi, karena masingmasing kondisi sudah mencover setiap kemungkinan yang ada berdasarkan nilai masukan program. Kemudian komputasi di dalam masingmasing kondisi dilakukan sedemikian rupa sesuai apa yang terdeklarasi di dalam setiap blok kondisi. Berdasarkan hasil komputasi tersebut diperoleh nilai a dan nilai b, hingga akhirnya dieksekusi pada bagian akhir function dieksekusi (mencetak / printout nilai a dan nilai b).
G.
Kesimpulan Pengujian perangkat lunak pada whitebox menggunakan metode basis path dan graph matrix memiliki tujuan untuk menghasilkan test case yang kemudian dapat digunakan sebagai acuan dalam menguji sebuah program, baik dari segi alur, logika, atau algoritma. Sehingga dari pengujian tersebut dapat dihasilkan program yang dapat divalidasi kualitasnya, sehingga implementasinya pada perangkat lunak juga menghasilkan produk perangkat lunak yang teruji dan mudah dirawat secara jangka panjang.
Daftar Pustaka [1] Khan, M.E., “Different Approaches To White Box Testing Technique for Finding Errors”, International Journal of Software Engineering and Its Applications, Vol. 5, No. 3, July, 2011. [2] Schlingloff, H. and Roggenbach M., “Path Testing”, Luke Gregory, 2010.
Kontribusi 1. Luqman Fauzi Merancang logika control flow graph terhadap source code yang ada, membuat matrix diagram, membuat test case berdasarkan matrix graph yang dibuat. 2. Alvian Yudha P. Membuat gambar image control flow graph, mengumpulkan dan menulis landasan teori ( graph matrix ), merapikan struktur penulisan laporan. 3. Aris Mulyasani Membuat gambar image control flow graph, merancang matrix diagram, mengumpulkan dan menulis landasan teori ( basis path ).