Pengujian White Box

Pengujian White Box

Kadang disebut juga glass box testing atau clear box testing, adalah suatu metode desain testcase yang menggunakan struktur kendali dari desain prosedural. Metode Desain test case ini dapat menjamin :
  • semua jalur (path) yang independen/terpisah dapat dites setidaknya sekali tes.
  • semua logika keputusan dapat dites dengan jalur yang salah dan atau jalur yang benar.
  • semua loop dapat dites terhadap batasannya dan ikatannya operasionalnya.
  • semua struktur internal data dapat dites untuk memastikan validitasnya
Sering kali white box testing diasosiasikan dengan penguukuran cakupan test (test coverage metrics), yang mengukur persentase jalu-jalur dari tipe yang dipikih untuk dieksekusi oleh testcase

Mengapa melakukan white box testing bilamana black box testing bilamana black box testing berfungsi untuk testing pemenuhan terhadap kebutuhan/spesifikasi?

  • kesalahan logika dan asumsi yang tidak benar kebanyakan dilakukan ketika coding untuk kasus tertentu. dibutuhkan kepastian bahwa eksekusi jalur ini telah di tes.
  • asumsi bahwa adanya kemungkinan terhadap eksekusi jalur yang tidak benar. dengan white box testing dapat ditemukan kesalahan ini.
  • kesalahan penulisan yang acak. seperti berada pada jalur logika yang membingunkan pada jalur normal.

Cakupan pernyataan, cabang dan jalur

Cakupan pernyataan, cabang dan jalur adalah suatu teknik white box testing yang menggunakan alur logika dari program untuk membuat testcase. yang dimaksud dengan alur logika adalah cara dimana suatu bagian dari program tertentu dieksekusi saat menjalankan program.

Alur logika suatu program dapat direpresentasikan dengan flow graph, yang akan dibahas lebih lanjut pada materi berikutnya (basis path teting). sebagai contoh dapat dilihat pada gambar di bawah ini.
Suatu flow graph terbentuk dari :
  • Nodes (titik), mewakili pernyataan (atau sub program) yang akan ditinjau saat eksekusi program.
  • Edges (anak panah), mewakili jalur logika algoritma untuk menghubungkan satu pernyataan (atau sub program) dengan yang lainnya.
  • Branch node (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.
Eksekusi suatu testcase menyebabkan program untuk mengeksekusi pernyataan-pernyataan tertentu, yang berkaitan dengan jalur tertentu, sebagaimana tergambar pada flow graph. cakupan cabang, pernyataan dan jalur di bentuk dari eksekusi jalur program yang berkaitan dengan peninjauan titik, anak panah, dan jalur dalam flow graph.

Cakupan Pernyataan

Cakupan pernyataan ditentukan dengan menilai proporsi dari pernyataan-pernyataan yang ditinjau oleh sekumpulan testcase yang ditentukan. 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 bilaman semua titik dikunjungi oleh jalur-jalur yang dilalui oleh testcase.
Pada contoh gambar flow graph di atas terdapat 10 titik. Misal sautu jalur eksekusi program melewati titik-titik A,B, D, H, K. berarti ada 5 titik dari 10 titik yang di kunjungi, maka cakuoan pernyataan sebesar 50%.

Karena satu titik pada flow graph dapat merupakan kelompok dari beberapa pernyataan, oleh karena itu tingkat cakupan pernyataan yang sebenarnya berbeda dengan tingkat cakupan titik (nodes), tergantung fari cara pendefinisian flow graph.

Cakupan Cabang

Cakupan cabang ditentukan dengan menilai proporsi dari cabang keputusan yang diuji oleh sekumpulan testcase yang telah ditentukan. 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 testcase.
Berdasarkan pada contoh gambar flow graph di atas, terdapat 6 anak panah cabang. Misal satu jalur eksekusi program melewati titik-titik A, B, D, H, K, maka jalur tersebut meninjau 2 dari anak 6 panah cabang yang ada jadi cakupannya sebesar 33%.

Cakupan Jalur

Cakupan jalur ditentukan dengan menilai proporsi eksekusi jalur program yang diuji oleh sekumpulan testcase yang telah ditentukan. 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 testcase.
Berdasarkan contoh flow graph di atas, terdapat 4 jalur. bila suatu eksekusi jalur pada program melalui titik-titik A, B, D, H, K, maka eksekusi tersebut meninjau 1 dari 4 yang ada, jad cakupannya sebesar 25%.

Perbedaan antara cakupan pernyataan, cabang dan jalur

Pencapaian cakupan pernyataan 100% dapat terjadi tanpa harus membuat cakupan cabang menajdi 100% juga.

Contoh Program :


Dapat pula membuat cakupan cabang 100%, dengan meninjau seluruh anak panah cabang tanpa harus meninjau semua jalur yang ada (cakupan jalur 100%).

Contoh Program :


Dari contoh diatas, dapat dilihat bahwa hanya dibutuhkan 2 jalur untuk mengunjungi semua anak panah cabang, dari 4 jalur yang ada pada flow graph.

Jadi bila cakupan jalur sebesar 100%, maka secara otomatis cakupan cabang sebesar 100% pula. demikian pula bila cakupan cabang sebesar 100%, maka secara otomatis cakupan pernyataan sebesar 100%.

Basis Path Testing (Cont.)

Cyclomatic Complexity (Cont.)

Adalah pengukuran software yang memberikan pengukuran kuantitatif dari kompleksitas logika program.

Pada konteks metode basis path testing, nilai yang dihitung bagi cylomatic complexty 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.

Berdasarkan urutan alurnya, didapatkan suatu kelompok basis flow graph. Contoh:
Jalur 1 : 1 - 11
Jalur 2 : 1-2-3-4-5-10-1-11
Jalur 3 : 1-2-3-6-9-10-1-11
Jalur 4 : 1-2-3-6-8-9-10-1-11

Region / Complexity

V(G) = E (edges) - N (nodes) + 2
Lihat flow graph (contoh)
V(G) = 11 - 9 + 2 = 4

V(G) = P (predicate node) + 1
Lihat flow graph (contoh)
V(G) = 3 + 1 =4

Tahapan dalam membuat testcase dengan menggunakan cyclomatic complexity:

  • gunakan desain atau kode sebagai dasar, gambarlah flow graph
  • berdasarkan flow graph, tentukan cyclomatic complexity
  • tentukan kelompok basis dari jalur independen secara linier
  • siapkan testcae yang akan melakukan eksekusi dari tiap dalam kelompok basis

Contoh Soal





Komentar

Postingan populer dari blog ini

Pengujian Black Box