White Box Testing Implementasi Perangkat Lunak
Test case merupakan suatu tes yang dilakukan berdasarkan pada suatu inisialisasi, masukan, kondisi ataupun hasil yang telah ditentukan sebelumnya
Kegunaan test case ini adalah :
- Untuk melakukan testing kesesuaian suatu komponen terhadap fungsi — Black Box Testing.
- Untuk melakukan testing kesesuaian suatu komponen terhadap struktur program— White Box Testing
Kadang disebut juga glass box testing atau clear box testing, adalah suatu metode disain test case yang menggunakan struktur kendali dari disain prosedural
Metode disain 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 ikatan operasionalnya.
- Semua struktur internal data dapat dites untuk memastikan validitasnya
Seringkali white box testing diasosiasikan dengan pengukuran cakupan tes (test coverage metrics), yang mengukur persentase jalur-jalur dari tipe yang dipilih untuk dieksekusi oleh test cases
Mengapa melakukan white box testing
- Kesalahan logika dan asumsi yang tidak benar kebanyakan dilakukan ketika coding untuk “kasus tertentu”. Dibutuhkan kepastian bahwa eksekusi jalur ini telah dites.
- 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 membingungkan 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 test cases. •
- 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 sub bab berikutnya (basis path testing).
Contoh flow graph dari suatu kode program
Suatu flow graph terbentuk dari
- Nodes (titik), mewakili pernyataan (atau sub program) yang akan ditinjau saat eksekusi program. 2.
- Edges (anak panah), mewakili jalur alur logika program untuk menghubungkan satu pernyataan (atau sub program) dengan yang lainnya. 3.
- 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 2.
- Paths (jalur), jalur yang mungkin untuk bergerak dari satu titik ke lainnya sejalan dengan keberadaan arah anak panah.
Eksekusi suatu test case menyebabkan program untuk mengeksekusi pernyataan-pernyaan tertentu, yang berkaitan dengan jalur tertentu
Cakupan pernyataan
- Cakupan pernyataan ditentukan dengan menilai proporsi dari pernyataan-pernyataan yang ditinjau oleh sekumpulan test cases 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 bilamana semua titik dikunjungi oleh jalurjalur yang dilalui oleh test cases.
Contoh cakupan pernyataan
- Pada contoh gambar flow graph di atas 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 %. •
- 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 dari cara pendefinisian flow graph
Cakupan cabang
- Cakupan cabang ditentukan dengan menilai proporsi dari cabang keputusan yang diuji oleh sekumpulan test cases yang telah ditentukan •
- Cakupan cabang 100 % adalah bilamana 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.
Contoh cakupan cabang
- Berdasarkan pada contoh gambar flow graph di atas, terdapat 6 anak panah cabang. •
- Misal : suatu jalur eksekusi program melawati titik-titik A, B, D, H, K, maka jalur tersebut meninjau 2 dari 6 anak panah cabang yang ada, jadi cakupannya sebesar 33 %.
Cakupan jalur
- Cakupan jalur ditentukan dengan menilai proporsi eksekusi jalur program yang diuji oleh sekumpulan test cases 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 test cases.
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 jalur yang ada, jadi cakupannya sebesar 25 %.
Disain cakupan tes
Untuk mendisain cakupan dari tes, perlu diketahui tahap-tahap sebagai berikut:
- Menganalisa source code untuk membuat flow graph.
- Mengidentifikasi jalur tes untuk mencapai pemenuhan tes berdasarkan pada flow graph.
- Mengevaluasi kondisi tes yang akan dicapai dalam tiap tes.
- Memberikan nilai masukan dan keluaran berdasarkan pada kondisi
Control Structure Testing
Control structure testing meliputi:
- Testing kondisi (Condition Testing )
- Testing alur data (Data Flow Testing)
- Testing loop (Loop Testing
- Testing Kondisi (Condition Testing)
- Suatu metode disain test case yang memeriksa kondisi logika yang terdapat pada modul program
Testing Kondisi (Condition Testing)
- Berikut ini adalah beberapa definisi yang berkaitan dengan testing kondisi
- Kondisi sederhana adalah variabel boolean atau ekspresi relasional, yang mungkin diproses dengan satu operator NOT (–). 2.
- Ekspresi operasional berbentuk E1E2, dimana E1 dan E2 adalah ekspresi aritmatika . 3.
- Kondisi komplek (compound condition) tersusun oleh dua atau lebih kondisi sederhana operator boolean, dan parentheses
- Operator boolean yang dapat digunakan dalam suatu kondisi komplek adalah OR (1), AND (&) dan NOT (–). 5.
- Suatu kondisi tanpa ekspresi relasional dapat direferensikan sebagai suatu ekspresi boolean
Sedangkan tipe elemen yang mungkin ada dalam suatu kondisi adalah
- Operator boolean
- 2. Variabel boolean
- 3. Sepasang boolean parentheses (sebagaimana yang terdapat pada kondisi sederhana ataupun komplek)
- 4. Operator relasional 5.
- Ekspresi aritmatika.
Jika suatu kondisi tidak benar, maka paling tidak satu komponen dari kondisi tersebut tidak benar.
Tipe Error pada kondisi adalah sebagai berikut
- Kesalahan operator boolean 2.
- Kesalahan variabel boolean 3.
- Kesalahan boolean parentheses 4.
- Kesalahan operator relasional 5.
- Kesalahan ekspresi aritmatika