Κυκλοματική πολυπλοκότητα στη δοκιμή λογισμικού (Παράδειγμα)

Τι είναι η κυκλωμική πολυπλοκότητα του McCabe;

Κυκλοματική πολυπλοκότητα στη δοκιμή λογισμικού είναι μια μέτρηση δοκιμής που χρησιμοποιείται για τη μέτρηση της πολυπλοκότητας ενός προγράμματος λογισμικού. Είναι ένα ποσοτικό μέτρο ανεξάρτητων διαδρομών στον πηγαίο κώδικα ενός προγράμματος λογισμικού. Η κυκλωματική πολυπλοκότητα μπορεί να υπολογιστεί χρησιμοποιώντας γραφήματα ροής ελέγχου ή σε σχέση με συναρτήσεις, ενότητες, μεθόδους ή κλάσεις σε ένα πρόγραμμα λογισμικού.

Η ανεξάρτητη διαδρομή ορίζεται ως ένα μονοπάτι που έχει τουλάχιστον ένα άκρο που δεν έχει διασχιστεί στο παρελθόν σε καμία άλλη διαδρομή.

Αυτή η μέτρηση αναπτύχθηκε από τον Thomas J. McCabe το 1976 και βασίζεται σε μια αναπαράσταση ροής ελέγχου του προγράμματος. Η ροή ελέγχου απεικονίζει ένα πρόγραμμα ως γράφημα που αποτελείται από κόμβους και άκρες.

Στο γράφημα, οι κόμβοι αντιπροσωπεύουν εργασίες επεξεργασίας ενώ οι ακμές αντιπροσωπεύουν τη ροή ελέγχου μεταξύ των κόμβων.

Κυκλοματική πολυπλοκότητα του McCabe

Σημειογραφία γραφήματος ροής για ένα πρόγραμμα

Ο συμβολισμός γραφήματος ροής για ένα πρόγραμμα ορίζει αρκετούς κόμβους που συνδέονται μέσω των άκρων. Ακολουθούν διαγράμματα ροής για εντολές όπως if-else, ενώ, μέχρι και κανονική ακολουθία ροής.

Σημειογραφία γραφήματος ροής για ένα πρόγραμμα

Πώς να υπολογίσετε την κυκλωμική πολυπλοκότητα

Μαθηματική αναπαράσταση:

Μαθηματικά, είναι ένα σύνολο ανεξάρτητων μονοπατιών μέσω του διαγράμματος γραφήματος. Η πολυπλοκότητα κώδικα του προγράμματος μπορεί να οριστεί χρησιμοποιώντας τον τύπο –

V(G) = E - N + 2

Που,

E – Αριθμός άκρων

N – Αριθμός κόμβων

V (G) = P + 1

Όπου P = Αριθμός κατηγορηματικών κόμβων (κόμβος που περιέχει συνθήκη)

Παράδειγμα -

i = 0;
n=4; //N-Number of nodes present in the graph

while (i<n-1) do
j = i + 1;

while (j<n) do

if A[i]<A[j] then
swap(A[i], A[j]);

end do;
j=j+1;

end do;

Το γράφημα ροής για αυτό το πρόγραμμα θα είναι

Υπολογίστε την Κυκλοματική Πολυπλοκότητα

Υπολογίζοντας μαθηματικά,

  • V(G) = 9 – 7 + 2 = 4
  • V(G) = 3 + 1 = 4 (Οι κόμβοι συνθήκης είναι 1,2 και 3 κόμβοι)
  • Σύνολο Βάσεων – Ένα σύνολο πιθανής διαδρομής εκτέλεσης ενός προγράμματος
  • 1, 7
  • 1, 2, 6, 1, 7
  • 1, 2, 3, 4, 5, 2, 6, 1, 7
  • 1, 2, 3, 5, 2, 6, 1, 7

Ιδιότητες Κυκλωματικής πολυπλοκότητας

Ακολουθούν οι ιδιότητες της κυκλωματικής πολυπλοκότητας:

  1. V (G) είναι ο μέγιστος αριθμός ανεξάρτητων μονοπατιών στο γράφημα
  2. V (G) >=1
  3. Το G θα έχει ένα μονοπάτι εάν V (G) = 1
  4. Ελαχιστοποιήστε την πολυπλοκότητα στο 10

Πώς είναι χρήσιμη αυτή η μέτρηση για τη δοκιμή λογισμικού;

Η δοκιμή βασικής διαδρομής είναι μια τεχνική White box και εγγυάται την εκτέλεση τουλάχιστον μίας εντολής κατά τη διάρκεια της δοκιμής. Ελέγχει κάθε γραμμικά ανεξάρτητη διαδρομή μέσω του προγράμματος, η οποία σημαίνει αριθμητικές περιπτώσεις δοκιμής, θα είναι ισοδύναμο με την κυκλωμική πολυπλοκότητα του προγράμματος.

Αυτή η μέτρηση είναι χρήσιμη λόγω των ιδιοτήτων της κυκλωματικής πολυπλοκότητας (M) -

  1. Το M μπορεί να είναι ο αριθμός των δοκιμαστικών περιπτώσεων για την επίτευξη κάλυψης υποκαταστήματος (Ανώτερο όριο)
  2. Το M μπορεί να είναι ο αριθμός των μονοπατιών μέσα από τα γραφήματα. (Χαμηλότερο όριο)

Σκεφτείτε αυτό το παράδειγμα -

If (Condition 1)
Statement 1

Else
Statement 2

If (Condition 2)
Statement 3

Else
Statement 4

Η Κυκλοματική Πολυπλοκότητα για αυτό το πρόγραμμα θα είναι 8-7+2=3.

Καθώς η πολυπλοκότητα έχει υπολογιστεί ως 3, τρεις περιπτώσεις δοκιμής είναι απαραίτητες για την πλήρη κάλυψη διαδρομής για το παραπάνω παράδειγμα.

Βήματα που πρέπει να ακολουθηθούν:

Τα ακόλουθα βήματα θα πρέπει να ακολουθηθούν για τον υπολογισμό της κυκλωματικής πολυπλοκότητας και του σχεδιασμού των δοκιμαστικών περιπτώσεων.

Βήμα 1 – Κατασκευή γραφήματος με κόμβους και ακμές από τον κώδικα

Βήμα 2 – Προσδιορισμός ανεξάρτητων μονοπατιών

Βήμα 3 – Υπολογισμός Κυκλοματικής Πολυπλοκότητας

Βήμα 4 – Σχεδιασμός Δοκιμαστικών Υποθέσεων

Μόλις σχηματιστεί το βασικό σύνολο, ΔΟΚΙΜΑΣΙΕΣ πρέπει να γραφτεί για να εκτελέσει όλες τις διαδρομές.

Περισσότερα για το V (G)

Η κυκλωματική πολυπλοκότητα μπορεί να υπολογιστεί χειροκίνητα εάν το πρόγραμμα είναι μικρό. Πρέπει να χρησιμοποιούνται αυτοματοποιημένα εργαλεία εάν το πρόγραμμα είναι πολύ περίπλοκο, καθώς αυτό περιλαμβάνει περισσότερα γραφήματα ροής. Με βάση τον αριθμό πολυπλοκότητας, η ομάδα μπορεί να καταλήξει σε συμπεράσματα σχετικά με τις ενέργειες που πρέπει να γίνουν για μέτρα.

Ο παρακάτω πίνακας παρέχει επισκόπηση του αριθμού πολυπλοκότητας και της αντίστοιχης σημασίας του v (G):

Αριθμός πολυπλοκότητας Νόημα
1-10 Δομημένος και καλογραμμένος κώδικας

Υψηλή Δοκιμαστικότητα

Το κόστος και η προσπάθεια είναι μικρότερη

10-20 Σύνθετος Κώδικας

Μέτρια Δοκιμαστικότητα

Το κόστος και η προσπάθεια είναι μέτρια

20-40 Πολύ σύνθετος κώδικας

Χαμηλή Δοκιμαστικότητα

Το κόστος και η προσπάθεια είναι υψηλά

> 40 Καθόλου ελεγχόμενο

Πολύ υψηλό κόστος και προσπάθεια

Εργαλεία για τον υπολογισμό της κυκλωματικής πολυπλοκότητας:

Πολλά εργαλεία είναι διαθέσιμα για τον προσδιορισμό της πολυπλοκότητας της εφαρμογής. Ορισμένα εργαλεία υπολογισμού πολυπλοκότητας χρησιμοποιούνται για συγκεκριμένες τεχνολογίες. Η πολυπλοκότητα μπορεί να βρεθεί από τον αριθμό των σημείων απόφασης σε ένα πρόγραμμα. Τα σημεία απόφασης είναι εάν, για, για κάθε, while, do, catch, δηλώσεις περίπτωσης σε έναν πηγαίο κώδικα.

Παραδείγματα εργαλείων είναι

  • OCLint – Αναλυτής στατικού κώδικα για C και σχετικές γλώσσες
  • Reflector Add In – Μετρήσεις κώδικα για συγκροτήματα .NET
  • GMetrics – Βρείτε μετρήσεις στο Java σχετικές εφαρμογές

Χρήσεις της κυκλωματικής πολυπλοκότητας:

Η Κυκλοματική Πολυπλοκότητα μπορεί να αποδειχθεί πολύ χρήσιμη

  • Βοηθά τους προγραμματιστές και τους δοκιμαστές να προσδιορίσουν ανεξάρτητες εκτελέσεις διαδρομής
  • Οι προγραμματιστές μπορούν να διαβεβαιώσουν ότι όλες οι διαδρομές έχουν δοκιμαστεί τουλάχιστον μία φορά
  • Μας βοηθά να εστιάσουμε περισσότερο στα ακάλυπτα μονοπάτια
  • Βελτιώστε την κάλυψη κωδικών σε Τεχνολογία Λογισμικού
  • Αξιολογήστε τον κίνδυνο που σχετίζεται με την εφαρμογή ή το πρόγραμμα
  • Η χρήση αυτών των μετρήσεων στις αρχές του κύκλου μειώνει περισσότερο τον κίνδυνο του προγράμματος

Συμπέρασμα

Η Cyclomatic Complexity είναι μετρική λογισμικού χρήσιμη για δομημένα ή Άσπρο Box Δοκιμές. Χρησιμοποιείται κυρίως για την αξιολόγηση της πολυπλοκότητας ενός προγράμματος. Εάν τα σημεία απόφασης είναι περισσότερα, τότε η πολυπλοκότητα του προγράμματος είναι μεγαλύτερη. Εάν το πρόγραμμα έχει υψηλό αριθμό πολυπλοκότητας, τότε η πιθανότητα σφάλματος είναι υψηλή με αυξημένο χρόνο για συντήρηση και αντιμετώπιση προβλημάτων.