Control Flow Graph & Notations


Flow Graph

Untuk menghitung ukuran kompleksitas logik dari suatu kode program, V(G), penguji melakukan basis path testing. Nilai V(G), menyatakan jumlah maksimum kasus uji yang harus didesain dengan mengidentifikasi sekumpulan basis ekseskusi paths untuk menjamin semua pernyataan dieksekusi paling tidak satu kali.
Testing is simple – all a tester needs to do is find a graph and cover it ” [Beizer, Software Testing Techniques book]
Proses dimulai dari membuat flow graph dari kode sumber atau flow charts. Kontrol aliran program dapat direpresntasikan menggunakan representasi grafis yang dikenal dengan Flow Graph. Flow graph terdiri dari sekumpulan node dan edge. Dengan menggunakan flow graph, suatu path bebas dapat didefinisikan sebagai path pada flow graph yaitu yang mempunyai setidaknya satu edge yang belum dilalui pada path lainnya.
Every algorithm may be implemented using just the constructs sequence, selection, iteration [Bohm and Jacobini, 1966]
Flow graph merupakan graph berarah dimana :
  • Nodes dapat merupakan keseluruhan pernyataan atau potongan suatu pernyataan program. 
  • Edges merepresentasikan aliran kontrol.
  • Jika “u” dan “v” adalah node pada graph, maka terdapat edge dari node “u” ke “v” jika pernyataan (potongan pernyataan) pada node “v” dapat dieksekusi langsung setelah pernyataan (potongan pernyataan) pada “u”. Misal.
Himpunan independent paths yang mencakup semua edges dikenal sebagai himpunan basis (basis set). Setelah himpunan basis terbentuk, uji kasus dibuat untuk mengeksekusi semua path pada himpunan basis.

Notasi Standar Flow graph


Bottom-line

Diberikan suatu program yang ditulis dalam bahasa pemrograman imperative, maka program graphnya adalah graph dimana :
  1. node adalah pernyataan program, dan
  2. edge merepresentasikan alur kontrol

Control Flow Graph (CFG) adalah :
  • Quadruple (E, N, s, t) dimana :
    • E = himpunan edge
    • N = himpunan node
    • s = start node
    • t = terminal node
  •  In-degree (FAN-IN) adalah jumlah edges yang memasuki suatu node
  •  Out-degree (FAN-OUT) adalah jumlah edges yang meninggalkan node
  •  Path adalah rangkaian edge yang saling berhubungan