Selasa, 24 Maret 2015

Pengujian Perangkat Lunak - Flow Graph dan Kompleksitas Siklomatis

Flow Graph dan Kompleksitas Siklomatis

Apa itu flow graph?
Flow Diagram menggambarkan alur kontrol. Setiap cabang ditunjukkan oleh path yang terpisah dan loop ditunjukkan oleh arrows looping kembali ke loop kondisi node.
Keterangan Gambar:
yaitu simpul atau node, merepresentasikan  satu atau  statement prosedural

                
 
ΓΌ          yaitu link atau edge, merepresentasikan aliran kontrol
  • Lingkaran (node/simpul), menggambarkan satu/lebih perintah prosedural dan yang berisi sebuah kondisi yang ditandai dengan dua/lebih link yang berasal darinya(Predikat). Urutan proses dan keputusan dapat dipetakan dalam satu node.
  • Tanda panah (edge/link), menggambarkan aliran kontrol. Setiap node harus mempunyai tujuan node
Contoh Flow Graph

 
                                                                                                                                  
              
Apa itu kompleksitas siklomatis?
Kompleksitas siklomatis adalah merupakan metrik tradisional yang menghitung tingkat kompleksitas suatu method/procedure. Kompleksitas siklomatis digunakan untuk mencari jumlah path dalam satu flow graph.
Rumus-rumus untuk menentukan nilai kompleksitas siklomatis:
      1.     Jalur independent
      2.    V(G)=E-N+2
      3.    V(G)=P+1
      4.    Region
Keterangan:
Jalur Independent = beberapa cara penyelesaian grafik alir bisa sampai ke tujuan.
E  = jumlah edge/garis panah
N = jumlah node / simpul
P  = jumlah predikat  (node yang memiliki cabang)
Region (R) = jumlah wilayah kompleksitas siklomatis


 
                          
1.     Read (x)                              
2.    Read (y)
3.    Write (x)
4.    Write (y)
    Penyelesaian :
    * Flow graph




 

       * Kompleksitas Siklomatis
   1.      Jalur independen : ada 1 cara
* 1 - 2 - 3 - 4
   2.   V(G) = 3 - 4 + 2 = 1
   3.   V(G) = 0 + 1 = 3
   4.   Region = 1



    
 


       1.     Read (a)
       2.    Read (b)
       3.    If a>b then
       4.        Write (‘a lebih dari b’)
       5.    Else if a<b then
       6.        Write (‘b lebih dari a’)
       7.    Else
       8.        Write (‘a sama dengan b’)
       9.    End if
  Penyelesaian:
                      * Flow graph



 
 
 
      * Kompleksitas Siklomatis
              1.     Jalur independent: ada 3 cara
    §  1-2-3-4-9
    §  1-2-3-5-6-9
    §  1-2-3-5-8-9
              2.    V(G) = E-N+2 = 10-9+2 = 3
              3.    V(G) = P+1 = 2+1 = 3
              4.    Region = 3


 






      1.     Read (a)
      2.    If (a= integer) then
      3.         If (a mod 2=0) then 
      4.               Write (‘a genap’)
      5.         Else
      6.               Write (‘a ganjil’)
      7.         End if
      8.     Else
      9.    Write (‘a adalah string’)
      10.  End if
  Penyelesaian:
              *  Flow graph



 
 
   * Kompleksitas Siklomatis
 1.     Jalur independent ada 3
§  1-2-3-4-7-10
§  1-2-3-6-7-10
§  1-2-9-10
2.    V(G) = E-N+2 = 9-8+2 = 3
3.    V(G) = P+1 = 2+1 = 3
4.    Region = 3

 
                    
      1.     Read (a)
      2.    If a mod  2 = 0 then
      3.    Write  (a genap)
      4.    Else
      5.    Write (a ganjil)
      6.    End if
Penyelesaian :
            *  Flow graph



 
 
                                     
* Kompleksitas Siklomatis
1.    Jalur independen = 2
·       1-2-3-6
·       1-2-5-6
2.   V(G) = 5 - 5 + 2 = 2
3.   V(G) = 1 + 1 = 2
4.   Region = 2

 
 
 1.     If a then
 2.    b
 3.    End if
     Penyelesaian :
      * Flow graph



                                       

       * Kompleksitas Siklomatis
  1.    Jalur independen = 2
  ·         1-2-3
  ·         1-3
  2.   V(G) = 3 - 3 + 2 = 2
  3.   V(G) = 1 + 1 = 2
  4.   Region = 2



 

   
Jika semua hasilnya sama berarti penyelesaian dari kompleksitas siklomatis tersebut benar (valid),  tetapi jika ada salah satu yang berbeda maka hasilnya salah.