Basis Path Testing: Flow Graph
Flow Graph merupakan grafik yang digunakan untuk menggambarkan aliran kontrol dari sebuah program. Berbeda dengan flowchart, grafik pada flow graph tidak menggambarkan secara detail proses yang terjadi pada setiap blok notasi. Jenis notasi pada flowchart digambarkan secara berbeda (diamond, persegi panjang, jajar genjang, dst) untuk menggambarkan proses yang berbeda, sedangkan notasi pada flow graph hanya diwakili oleh sebuah notasi lingkaran. Dari penggunaannya, flowchart digunakan pada tahapan perancangan untuk menggambarkan logika dari program sedangkan flow graph digunakan pada tahapan pengujian yang berfokus pada penggambaran aliran kontrol sebuah program. Berikut ini adalah notasi struktur kontrol pada flow graph untuk menggambarkan sekuensial, seleksi, maupun perulangan:
Notasi lingkaran disebut sebagai flow graph node yang digunakan untuk menggambarkan statement-statement berikut:
- Satu atau lebih statement secara sekuensial yang dikelompokkan
- Percabangan seleksi dari satu statement kedua pilihan statement (seleksi)
- Penggabungan dua statement yang dilanjutkan pada satu statement yang sama (merge)
Sedangkan notasi garis panah disebut sebagai edge atau link, menggambarkan aliran kontrol. Setiap edge harus dihubungkan dari/kesebuah node, meskipun node tersebut tidak mewakili sebuah statement khusus. Area yang dibatasi oleh node dan edge disebut sebagai region. Secara sederhana, flow graph dapat dibuat dari grafik flowchart ataupun dari pseudocode/program design language/source code yang telah dibuat sebelumnya.
Konversi flowchart ke flow graph:
Pada contoh Gambar 2 di atas, flowchart dikonversi menjadi sebuah flowgraph. Semua notasi pada flowchart akan diubah menjadi notasi lingkaran/edge pada flow graph dengan menggunakan panduan berikut:
- Notasi yang berurutan baik berupa proses (persegi panjang) maupun seleksi (diamond) dapat digabungkan menjadi satu node. Contoh:
- proses 2 dan decision 3 pada flowchart digabungkan menjadi satu node 1,2
- proses 4 dan 5, digabungkan menjadi node 4,5
- Notasi awal, digabungkan dengan notasi pertama menjadi satu node. Contoh: start node dan decision 1 pada flowchart menjadi node 1 pada flow graph.
- Sebuah edge harus selalu dihubungkan dengan sebuah node, sehingga bentuk penggabungan dari beberapa edge dapat ditambahkan sebuah node sebelum menuju statement berikutnya meskipun node tersebut tidak memiliki sebuah statement khusus. Contoh: masing-masing simpul pada nomor 9 dan 10 dibuah menjadi sebuah node; node 9 dan node 10 pada flow graph.
- Final node pada flowchart diubah menjadi sebuah node pada flow graph seperti pada contoh node 11.
Konversi Program Design Language ke flow graph:
Gambar di atas merupakan sebuah contoh dari Program Design Language untuk menghitung rata-rata dari 100 angka atau kurang dari sebuah array. Program ini juga akan menghitung total dan jumlah angka yang valid. Dengan menggunakan panduan serupa pada contoh konversi dari flowchart ke flow graph yang telah dibahas, dapat dibuat sebuah flow graph seperti di bawahini:
Flow graph dapat digunakan untuk menentukan cyclomatic complexity sebuah program (dapat dibaca lebih detail pada artikel Software Testing: PerhitunganCyclomatic Complexity yang digunakan pada proses pengujian program menggunakan teknik basis path. Pembuatan test case yang efektif dapat didasarkan pada hasil perhitungan cyclomatic complexity tersebut.