what is cyclomatic complexity learn with an example
Η κυκλωματική πολυπλοκότητα είναι μια πολύ συνηθισμένη λέξη στην κοινότητα ανάπτυξης. Αυτή η τεχνική χρησιμοποιείται κυρίως για τον προσδιορισμό της πολυπλοκότητας ενός κομματιού κώδικα ή λειτουργικότητας.
Η τεχνική αναπτύχθηκε από τον MaCabe και βοηθά στον εντοπισμό των παρακάτω 3 ερωτήσεων για τα προγράμματα / τα χαρακτηριστικά
- Είναι δυνατή η δοκιμή της δυνατότητας / προγράμματος;
- Είναι κατανοητό το χαρακτηριστικό / πρόγραμμα από όλους;
- Είναι αρκετά αξιόπιστο το χαρακτηριστικό / πρόγραμμα;
Ως QA μπορούμε να χρησιμοποιήσουμε αυτήν την τεχνική για να προσδιορίσουμε το «επίπεδο» των δοκιμών μας. Είναι μια πρακτική ότι εάν το αποτέλεσμα της κυκλωματικής πολυπλοκότητας είναι περισσότερο ή μεγαλύτερο αριθμό, θεωρούμε ότι αυτό το κομμάτι της λειτουργικότητας είναι σύνθετου χαρακτήρα και ως εκ τούτου καταλήγουμε ως δοκιμαστής. ότι το κομμάτι κώδικα / λειτουργικότητας απαιτεί σε βάθος έλεγχο.
Από την άλλη πλευρά, εάν το αποτέλεσμα της Κυκλωματικής Πολυπλοκότητας είναι μικρότερος αριθμός, συμπεραίνουμε ως QA ότι η λειτουργικότητα είναι λιγότερο περίπλοκη και αποφασίζουμε το εύρος.
Επιτρέψτε μου να πάω βήμα προς βήμα: Καταλάβετε πρώτα πώς υπολογίζεται και μετά θα προχωρήσουμε για να καταλάβουμε πώς καθορίζεται το επίπεδο δοκιμών.
Τι θα μάθετε:
- Πώς να υπολογίσετε την κυκλική πολυπλοκότητα;
- Φόρμουλα κυκλωματικής πολυπλοκότητας
- Παράδειγμα Κυκλωματικής Πολυπλοκότητας
- Πώς μπορούν να το χρησιμοποιήσουν οι υπεύθυνοι δοκιμών;
- Τώρα έρχεται η συντόμευση-
- Συνιστώμενη ανάγνωση
Πώς να υπολογίσετε την κυκλική πολυπλοκότητα;
Ο υπολογισμός του CC περιστρέφεται γύρω από 2 έννοιες
- Κόμβοι
- Ακρες
Οι δηλώσεις σε ένα πρόγραμμα παρουσιάζονται ως κόμβοι και οι διαδρομές ελέγχου από τη μία δήλωση στην άλλη αντιπροσωπεύονται από το Edges.
Φόρμουλα κυκλωματικής πολυπλοκότητας
Ο τύπος για τον υπολογισμό του CC είναι ως εξής:
CC = Ε ~ Ν + 2
Που:
E = Αριθμός άκρων
N = Αριθμός κόμβων.
(Υπάρχει μια συντόμευση για τον υπολογισμό, αλλά όχι τώρα ...... αργότερα ...)
Παράδειγμα Κυκλωματικής Πολυπλοκότητας
Ας πάρουμε το παρακάτω παράδειγμα για να το κατανοήσουμε.
Εξετάστε το παρακάτω γράφημα ροής ελέγχου:
Έχω τοποθετήσει το ΚΑΘΑΡΑ κουκκίδες για τον προσδιορισμό των κόμβων και ΜΠΛΕ γραμμές για την αναγνώριση των άκρων:
Εδώ λοιπόν σε αυτό το παράδειγμα:
Αριθμός κόμβων (κόκκινες κουκκίδες) = 14
Αριθμός άκρων (μπλε γραμμές) = 15
Έτσι, η Κυκλωματική Πολυπλοκότητα = N ~ E + 2 = (14-15) +2 = 3
Πώς μπορούν να το χρησιμοποιήσουν οι υπεύθυνοι δοκιμών;
Στον πραγματικό κόσμο, οι υπεύθυνοι δοκιμών μπορούν να καθίσουν με προγραμματιστές για να αντλήσουν το γράφημα ροής ελέγχου για ένα δεδομένο κομμάτι κώδικα. Και αφού έχουμε το γράφημα, μπορούμε να αντλήσουμε την πολυπλοκότητα χρησιμοποιώντας αυτόν τον τύπο. Αλλά η ιστορία για τους δοκιμαστές δεν τελειώνει εδώ: - το κύριο σημείο εδώ είναι - ποια είναι η χρήση αυτού του αριθμού για την ομάδα δοκιμών;
το καλύτερο καθαριστικό υπολογιστή για windows 7
Λοιπόν, οι υπεύθυνοι δοκιμών μπορούν να χρησιμοποιήσουν αυτόν τον αριθμό για να καθορίσουν το επίπεδο των δοκιμών τους.
Στην πράξη υπάρχουν 2 επίπεδα δοκιμών:
- Δοκιμή μήκους
- Δοκιμή εύρους
Εξετάστε τον παρακάτω πίνακα για διαφορετικές δυνατότητες οποιασδήποτε ενότητας: -
Η δοκιμή μήκους είναι ένας τρόπος με τον οποίο προσπαθούμε να καλύψουμε όλο το εύρος επιλέγοντας τις σημαντικές περιπτώσεις δοκιμών για κάθε χαρακτηριστικό. Για παράδειγμα , σε αυτήν την περίπτωση, ας υποθέσουμε ότι επιλέγω να υπονοώ με τη δοκιμή μήκους, τότε μπορώ να επιλέξω -
- Sub χαρακτηριστικό 1.1 και Sub Feature 1.3 για το χαρακτηριστικό 1
- Υπο χαρακτηριστικό 2.2 από τη Λειτουργία 2
- Υπο Χαρακτηριστικό 3.3 από τη Λειτουργία 3
- Υπο Feature 4.2 και Sub Feature 4.3 από το Feature 4
- Υπο Feature 5.3 από το Feature 5
Εδώ λοιπόν αγγίζω ολόκληρο το χαρακτηριστικό χωρίς να αναφερθώ σε λεπτομερείς λεπτομέρειες των υπο-λειτουργιών.
Τώρα, εάν το αποτέλεσμα του CC είναι μεγαλύτερο, τότε επιλέγω να πάω με το Breadth testing, θα δοκιμάσω πραγματικά κάθε λειτουργία μαζί με κάθε υπο-χαρακτηριστικό.
Έτσι, με βάση την τρέχουσα απαίτηση του έργου σας, την αξιοπιστία του περιβάλλοντος, οι δοκιμαστές μπορούν να συνεργαστούν μαζί με την ομάδα ανάπτυξης και να δημιουργήσουν ένα πρότυπο για τον προσδιορισμό του επιπέδου και του πεδίου των δοκιμών. Για παράδειγμα -
- Εάν το CC<=15 – Basic sanity test
- Εάν το CC είναι μεταξύ 16 και 30 - Δοκιμή μήκους
- Εάν το CC είναι μεταξύ 31 και 50 - Δοκιμή εύρους
- Εάν το CC> 50 - Είναι μια χαοτική λειτουργικότητα και χρειάζεται περαιτέρω αποσύνθεση
Τώρα έρχεται η συντόμευση-
Απλά μετρήστε τον αριθμό των κλειστών περιοχών και προσθέστε 1 σε αυτό.
Στο παραπάνω παράδειγμά μας - αριθμός κλειστής περιοχής = 2 (συμπληρωμένος με κίτρινο χρώμα), έτσι το CC = 2 + 1 = 3
Στην πραγματική δουλειά είναι πολύ δύσκολο να συμπεράνουμε το αποτέλεσμα όταν δίνουμε δηλώσεις όπως -
- «… .. αυτή η λειτουργικότητα είναι πολύ δύσκολο να εφαρμοστεί»
Τι εννοείς με το δύσκολο; Είναι περίπλοκο, περίπλοκο ή χαοτικό;
Πώς καταλήξατε ότι αυτό είναι δύσκολο;
- '... αυτό θα πρέπει να είναι διαθέσιμο μέχρι το τέλος της ημέρας'
Τι είναι το τέλος της ημέρας; Το τέλος της ημέρας είναι 7.00 μ.μ., πιθανότατα η δική μου είναι 6.00 μ.μ.;
- «… Θα ήθελα να κάνω λεπτομερείς δοκιμές για αυτό»
Τι είναι η λεπτομερής δοκιμή; Δεν υπάρχει τεχνική δοκιμών που ονομάζεται 'Λεπτομερής δοκιμή'
- '… Ο κωδικός πρέπει να είναι καλής ποιότητας πριν τον αναπτύξουμε στο QA'
Πώς μετράτε την καλή ποιότητα;
Αντ 'αυτού, εάν επαναδιατυπώσω τις δηλώσεις όπως -
Η Κυκλωματική Πολυπλοκότητα για το κομμάτι του κώδικα υπολογίζεται ως 75 και σύμφωνα με τα πρότυπα μας. αυτή η λειτουργικότητα έχει χαρακτήρα χάους. Ως εκ τούτου, συνιστούμε την περαιτέρω αποσύνθεση του.
Πάνω από
- «… .. αυτή η λειτουργικότητα είναι πολύ δύσκολο να εφαρμοστεί»
Η λειτουργικότητα θα αναπτυχθεί σε περιβάλλον QA έως τις 5.00 μ.μ. CST.
Πάνω από
- '… .Αυτό θα πρέπει να είναι διαθέσιμο μέχρι το τέλος της ημέρας'
Δεδομένου ότι η Κυκλωματική πολυπλοκότητα υπολογίζεται ως 48, σύμφωνα με το πρότυπό μας θα κάνουμε τη δοκιμή συστημάτων μαζί με τη δοκιμή ενοποίησης και παλινδρόμησης για τη λειτουργία.
Πάνω από
- '…. Θα χρειαζόμουν λεπτομερείς δοκιμές για αυτό'
Σύμφωνα με το Sonar, το CC είναι τώρα 102. Έχουμε τυποποιήσει να έχουμε το CC στο 10. Θα αναπτύξουμε τον κώδικα όταν βελτιώσουμε τον κώδικα για να κάνουμε το CC λιγότερο από 10.
Πάνω από
- '…. Ο κωδικός πρέπει να είναι καλής ποιότητας πριν τον αναπτύξουμε στο QA'
Ποια είναι η διαφορά μεταξύ των δύο δηλώσεων;
Λοιπόν, η διαφορά εδώ είναι η μέτρηση. Έχω υποστηρίξει κάθε δήλωση μου με κατάλληλη μέτρηση που θα βοηθούσε τους ενδιαφερόμενους να γνωρίζουν ακριβώς τι θέλω να πω.
Ομοίως, χρησιμοποιήστε την Κυκλωματική πολυπλοκότητα στις δοκιμές λογισμικού για να προσδιορίσετε το ακριβές μέτρο των προσπαθειών δοκιμής σας και μπορείτε να το χρησιμοποιήσετε όχι μόνο για να προσδιορίσετε το εύρος των δοκιμών σας, αλλά και τους τύπους δοκιμών που θα πρέπει να κάνετε.
Συνιστώμενη ανάγνωση
- Τι είναι ο έλεγχος συστατικών στοιχείων ή ο έλεγχος ενότητας (Μάθετε με παραδείγματα)
- Τι είναι ο έλεγχος σύγκρισης (Μάθετε με παραδείγματα)
- Πακέτο λογισμικού δοκιμής καριέρας eBook
- Τι είναι ο έλεγχος ενοποίησης συστήματος (SIT): Μάθετε με παραδείγματα
- Τα καλύτερα εργαλεία δοκιμής λογισμικού 2021 (QA Test Automation Tools)
- Testing Primer eBook Λήψη
- 5 Σημαντικά διαγράμματα που πρέπει να μάθουν πώς να χρησιμοποιούν οι υπεύθυνοι δοκιμών
- Εκπαιδευτικό τεστ TestRail: Μάθετε End-to-End Test Case Management