Κυκλωματική πολυπλοκότητα του Mccabe: Υπολογισμός με γράφημα ροής (Παράδειγμα)

Πίνακας περιεχομένων:

Anonim

Για να κατανοήσουμε την Κυκλωματική πολυπλοκότητα, ας καταλάβουμε πρώτα -

Τι είναι η μέτρηση λογισμικού;

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

Παράδειγμα-

Μέτρο - Αριθμός σφαλμάτωνΜετρήσεις - Αριθμός σφαλμάτων που βρέθηκαν ανά άτομο

Σε αυτό το σεμινάριο, θα μάθετε-

  • Τι είναι η μέτρηση λογισμικού;
  • Τι είναι η Κυκλωματική Πολυπλοκότητα;
  • Σημείωση γραφήματος ροής για ένα πρόγραμμα:
  • Πώς να υπολογίσετε την κυκλική πολυπλοκότητα
  • Ιδιότητες Κυκλωματικής πολυπλοκότητας:
  • Πώς είναι χρήσιμη αυτή η μέτρηση για δοκιμές λογισμικού;
  • Περισσότερα για το V (G):
  • Εργαλεία για τον υπολογισμό της Κυκλωματικής πολυπλοκότητας:
  • Χρήσεις Κυκλωματικής Πολυπλοκότητας:

Κυκλωματική πολυπλοκότητα στη δοκιμή λογισμικού

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

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

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

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

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

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

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

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

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

V (G) = E - N + 2

Που,

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

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

V (G) = P + 1

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

Παράδειγμα -

i = 0;n = 4; // N-Αριθμός κόμβων που υπάρχουν στο γράφημαενώ (i 

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

Υπολογιστική μαθηματικά,

  • V (G) = 9 - 7 + 2 = 4
  • V (G) = 3 + 1 = 4 (Οι κόμβοι συνθήκης είναι 1,2 και 3 κόμβοι)
  • Basis Set - Ένα σύνολο πιθανών διαδρομών εκτέλεσης ενός προγράμματος
  • 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

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

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

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

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

Εξετάστε αυτό το παράδειγμα -

Εάν (Όρος 1)Δήλωση 1ΑλλούΔήλωση 2Εάν (Όρος 2)Δήλωση 3ΑλλούΔήλωση 4

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

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

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

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

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

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

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

Βήμα 4 - Σχεδιασμός δοκιμαστικών περιπτώσεων

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

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

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

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

Αριθμός πολυπλοκότητας Εννοια
1-10 Δομημένος και καλογραμμένος κώδικας Το υψηλό κόστος και η προσπάθεια δοκιμής είναι λιγότερο
10-20 Πολύπλοκος κώδικας μεσαία ικανότητα δοκιμής Το κόστος και η προσπάθεια είναι μέτρια
20-40 Πολύ περίπλοκος κωδικός Χαμηλή ικανότητα δοκιμής Κόστος και προσπάθεια είναι υψηλές
> 40 Καθόλου δοκιμασμένο Πολύ υψηλό κόστος και προσπάθεια

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

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

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

  • OCLint - Στατικός αναλυτής κώδικα για C και σχετικές γλώσσες
  • Reflector Add In - Κωδικός μετρήσεις για συναρμολογήσεις .NET
  • GMetrics - Βρείτε μετρήσεις σε εφαρμογές που σχετίζονται με Java

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

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

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

Συμπέρασμα:

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