Τι είναι η πυκνότητα ελαττώματος; Τύπος υπολογισμού με Παράδειγμα
⚡ Έξυπνη Σύνοψη
Η Πυκνότητα Ελαττωμάτων μετρά τον αριθμό των επιβεβαιωμένων ελαττωμάτων σε μια ενότητα λογισμικού διαιρούμενο με το μέγεθος αυτής της ενότητας, συνήθως εκφραζόμενη ανά χίλιες γραμμές κώδικα, και σηματοδοτεί εάν μια έκδοση είναι έτοιμη για κυκλοφορία.
Τι είναι η πυκνότητα ελαττώματος;
Πυκνότητα ελαττώματος είναι ο αριθμός των ελαττωμάτων που επιβεβαιώνονται σε ένα λογισμικό ή μια ενότητα κατά τη διάρκεια μιας συγκεκριμένης περιόδου λειτουργίας ή ανάπτυξης, διαιρούμενος με το μέγεθος αυτού του λογισμικού ή της ενότητας. Δίνει τη δυνατότητα σε μια ομάδα να αποφασίσει εάν ένα λογισμικό είναι έτοιμο για κυκλοφορία.
Η πυκνότητα ελαττωμάτων μετριέται ανά χίλιες γραμμές κώδικα, γνωστή και ως KLOC. Επειδή η καταμέτρηση κανονικοποιείται ως προς το μέγεθος, μια μεγάλη ενότητα με πολλά ελαττώματα και μια μικρή ενότητα με λίγα ελαττώματα μπορούν να συγκριθούν στην ίδια κλίμακα, κάτι που δεν επιτρέπει ποτέ μια ακατέργαστη καταμέτρηση σφαλμάτων.
Η μέτρηση αναφέρεται συνήθως στο τέλος ενός κύκλου δοκιμών και tracked release over release, έτσι ώστε να κάθεται δίπλα στο υπόλοιπο διαδικασία διαχείρισης ελαττωμάτων στο κύκλος ζωής δοκιμής λογισμικού.
Πώς να υπολογίσετε την πυκνότητα ελαττωμάτων
Ένας τύπος για τη μέτρηση της πυκνότητας ελαττώματος:
Defect Density = Defect count/size of the release
Το μέγεθος της έκδοσης μπορεί να μετρηθεί με βάση μια γραμμή κώδικα (LOC).
Τρεις λεπτομέρειες καθορίζουν αν ο αριθμός που προκύπτει σημαίνει κάτι:
- Η μονάδα μεγέθους. Οι μονάδες LOC και KLOC είναι οι πιο συνηθισμένες. Τα σημεία συνάρτησης χρησιμοποιούνται όπου οι ομάδες θέλουν ένα μέτρο μεγέθους που δεν αλλάζει με τη γλώσσα προγραμματισμού και ορισμένες ομάδες το ομαλοποιούν ανά ενότητα ή ανά στοιχείο.
- Τι θεωρείται ελάττωμα. Μόνο τα επιβεβαιωμένα ελαττώματα ανήκουν στον αριθμητή. Τα διπλότυπα, οι απορριφθείσες αναφορές και τα αιτήματα βελτίωσης πρέπει να εξαιρούνται, διαφορετικά ο αριθμός διογκώνεται χωρίς καμία αλλαγή στην ποιότητα του κώδικα.
- Το παράθυρο μέτρησης. Ελαττώματα που εντοπίστηκαν κατά τη διάρκεια των δοκιμών του συστήματος, κατά τη διάρκεια δοκιμή παλινδρόμησης, και μετά την κυκλοφορία περιγράφουν διαφορετικά πράγματα, επομένως η περίοδος πρέπει να αναφέρεται μαζί με τον αριθμό.
Παράδειγμα πυκνότητας ελαττώματος
Ας υποθέσουμε ότι έχετε ενσωματωμένες 3 ενότητες στο προϊόν λογισμικού σας. Κάθε ενότητα έχει τον ακόλουθο αριθμό σφαλμάτων που έχουν εντοπιστεί:
- Ενότητα 1 = 10 σφάλματα
- Ενότητα 2 = 20 σφάλματα
- Ενότητα 3 = 10 σφάλματα
Συνολικά σφάλματα = 10+20+10 = 40
Η συνολική γραμμή κώδικα για κάθε ενότητα είναι:
- Ενότητα 1 = 1000 LOC
- Ενότητα 2 = 1500 LOC
- Ενότητα 3 = 500 LOC
Συνολική Γραμμή Code = 1000+1500+500 = 3000
Η πυκνότητα ελαττώματος υπολογίζεται ως εξής:
Defect Density = 40/3000 = 0.013333 defects/loc = 13.333 defects/Kloc
Ο ίδιος υπολογισμός που εφαρμόζεται ανά ενότητα είναι πιο χρήσιμος από το συνδυασμένο σχήμα, όπως δείχνει το παρακάτω διάγραμμα: Η Ενότητα 2 φέρει 20 ελαττώματα σε 1500 LOC και η Ενότητα 3 φέρει 10 ελαττώματα μόνο σε 500 LOC, επομένως η Ενότητα 3 είναι η πιο πυκνή και πιο επικίνδυνη από τις δύο, παρόλο που ανέφερε λιγότερα σφάλματα.
Ένα πρότυπο για την πυκνότητα ελαττωμάτων
Δεν υπάρχει σταθερό πρότυπο για την πυκνότητα ελαττωμάτων. Μελέτες υποδεικνύουν ότι ένα ελάττωμα ανά χίλιες γραμμές κώδικα θεωρείται γενικά ένδειξη καλής ποιότητας έργου και αυτός ο αριθμός είναι ο πιο ευρέως χρησιμοποιούμενος εμπειρικός κανόνας στον κλάδο.
Η προσδοκία όντως μεταβάλλεται ανάλογα με τον τομέα. Το λογισμικό που είναι κρίσιμο για την ασφάλεια και ρυθμίζεται από ρυθμιστικό πλαίσιο, όπως τα αεροηλεκτρονικά και οι ιατρικές συσκευές, περιορίζεται σε έναν στόχο πολύ κάτω από ένα ελάττωμα ανά KLOC, ενώ οι συνήθεις επιχειρηματικές εφαρμογές βρίσκονται συνήθως πάνω από αυτόν. Επειδή οι κανόνες μέτρησης, οι μονάδες μεγέθους και το βάθος δοκιμών διαφέρουν μεταξύ των οργανισμών, ένα σημείο αναφοράς που λαμβάνεται από μια δημοσιευμένη μελέτη είναι συγκρίσιμο μόνο με ένα έργο που μετρά τον ίδιο τρόπο. Η πρακτική χρήση της μέτρησης είναι επομένως εσωτερική: συγκρίνετε μια κυκλοφορία με την προηγούμενη κυκλοφορία του ίδιου προϊόντος, η οποία μετράται με τον ίδιο τρόπο.
Παράγοντες που επηρεάζουν την πυκνότητα ελαττωμάτων
Η ίδια βάση κώδικα μπορεί να παράγει πολύ διαφορετικά στοιχεία πυκνότητας ελαττωμάτων ανάλογα με τους ακόλουθους παράγοντες:
- Code περίπλοκο. Βαθιά ενσωματωμένη λογική και υψηλή κυκλωματική πολυπλοκότητα παράγουν περισσότερα ελαττώματα ανά γραμμή από τον απλό κώδικα.
- Το είδος των ελαττωμάτων που λαμβάνονται υπόψη. Υπολογίζοντας μόνο λειτουργικά ελαττώματα ή συμπεριλαμβάνοντας τη χρηστικότητα, την τεκμηρίωση και μη λειτουργικο ευρήματα, αλλάζει ουσιαστικά τον αριθμητή.
- Η χρονική διάρκεια που λαμβάνεται υπόψη. Ένα ποσοστό που μετράται σε έναν κύκλο δοκιμών δύο εβδομάδων δεν είναι συγκρίσιμο με ένα ποσοστό που μετράται σε διάστημα έξι μηνών χρήσης στην παραγωγή.
- Δεξιότητες προγραμματιστή και ελεγκτή. Οι έμπειροι προγραμματιστές εισάγουν λιγότερα ελαττώματα και οι έμπειροι δοκιμαστές βρίσκουν περισσότερα από αυτά που υπάρχουν, επομένως τα δύο εφέ ωθούν τη μέτρηση σε αντίθετες κατευθύνσεις.
- Κάλυψη δοκιμών. Τα ελαττώματα που δεν αναζητήθηκαν ποτέ δεν μετρώνται ποτέ, επομένως κάλυψη δοκιμών περιορίζει σιωπηλά το πόσο ψηλά μπορεί να φτάσει η μετρούμενη πυκνότητα.
Πυκνότητα ελαττωμάτων έναντι άλλων μετρήσεων ελαττωμάτων
Η Πυκνότητα Ελαττωμάτων απαντά σε ένα ερώτημα: πόσο συγκεντρωμένα είναι τα γνωστά ελαττώματα. Τρεις συνοδευτικές μετρήσεις απαντούν στις ερωτήσεις που δεν μπορεί να απαντήσει και οι περισσότερες ομάδες τις αναφέρουν μαζί.
| Μετρικός | Τι μετρά | Ερώτηση που απαντά |
| Πυκνότητα ελαττώματος | Επιβεβαιωμένα ελαττώματα διαιρούμενα με το μέγεθος (KLOC ή σημεία λειτουργίας) | Ποιες ενότητες παρουσιάζουν τα περισσότερα ελαττώματα για το μέγεθός τους; |
| Διαρροή ελαττώματος | Ελαττώματα που εντοπίστηκαν μετά την κυκλοφορία ως ποσοστό όλων των ελαττωμάτων | Πόσα διέφευγαν από τη διαδικασία δοκιμής και έφτασαν στους χρήστες; |
| Αποτελεσματικότητα στην αφαίρεση ελαττωμάτων | Ελαττώματα που αφαιρέθηκαν πριν από την κυκλοφορία ως ποσοστό όλων των ελαττωμάτων | Πόσο αποτελεσματικές ήταν οι δοκιμές στον έγκαιρο εντοπισμό ελαττωμάτων; |
| Δείκτης Σοβαρότητας Ελαττώματος | Τα ελαττώματα σταθμίζονται με βάση τη σοβαρότητα αντί να υπολογίζονται ισότιμα | Πόσο επιβλαβή είναι τα ελαττώματα, όχι απλώς πόσα; |
Αν διαβαστούν μαζί, τα τέσσερα δίνουν μια πληρέστερη εικόνα: χαμηλή πυκνότητα ελαττωμάτων με υψηλά σημεία διαρροής ελαττωμάτων σε επιφανειακές δοκιμές αντί για καθαρό κώδικα, κάτι που είναι ακριβώς η εσφαλμένη ανάγνωση για την οποία προειδοποιεί η επόμενη ενότητα.
Πλεονεκτήματα της πυκνότητας ελαττωμάτων
Τα πλεονεκτήματα της πυκνότητας ελαττωμάτων είναι τα εξής:
- Βοηθά στη μέτρηση της αποτελεσματικότητας των δοκιμών.
- Βοηθά στη διαφοροποίηση της συγκέντρωσης ελαττωμάτων μεταξύ στοιχείων και μονάδων λογισμικού.
- Είναι χρήσιμο για τον εντοπισμό των περιοχών που χρειάζονται διόρθωση ή βελτίωση.
- Είναι χρήσιμο για την υπόδειξη στοιχείων υψηλού κινδύνου, τα οποία τροφοδοτούν άμεσα δοκιμές βάσει κινδύνου.
- Βοηθά στον εντοπισμό των εκπαιδευτικών αναγκών διαφόρων πόρων.
- Μπορεί να είναι χρήσιμο στην εκτίμηση της προσπάθειας δοκιμών και επανεπεξεργασίας που προκαλείται από ελαττώματα.
- Μπορεί να εκτιμήσει τα υπόλοιπα ελαττώματα στο λογισμικό.
- Πριν από την κυκλοφορία, βοηθά να προσδιοριστεί εάν οι δοκιμές που έχουν γίνει μέχρι στιγμής είναι επαρκείς.
- Χτίζει μια ιστορική βάση με την οποία μπορούν να μετρηθούν οι μεταγενέστερες εκδόσεις.
Περιορισμοί της πυκνότητας ελαττωμάτων
Η μέτρηση υπολογίζεται εύκολα και ερμηνεύεται εσφαλμένα. Οι ακόλουθοι περιορισμοί καθορίζουν το βάρος που της αξίζει σε μια απόφαση έκδοσης:
- Τα μη εντοπισμένα ελαττώματα είναι αόρατα. Ο αριθμητής περιέχει μόνο ελαττώματα που βρέθηκαν στην πραγματικότητα από τις δοκιμές, επομένως μια ασθενώς δοκιμασμένη ενότητα αναφέρει ένα κολακευτικό αριθμό.
- Η σοβαρότητα αγνοείται. Ένα ελάττωμα που καταστρέφει μια πληρωμή και ένα πρόβλημα αισθητικής ευθυγράμμισης μετράνε το ίδιο, γι' αυτό και μια σταθμισμένη ως προς τη σοβαρότητα άποψη είναι απαραίτητη παράλληλα με αυτό.
- Οι ορισμοί των ελαττωμάτων ποικίλλουν. Δύο ομάδες που μετρούν διαφορετικά παράγουν αριθμούς που δεν μπορούν να συγκριθούν, ακόμη και εντός του ίδιου οργανισμού.
- Οι γραμμές κώδικα είναι ένας ασθενής μεσολαβητής μεγέθους. Ο λεπτομερής κώδικας μειώνει την πυκνότητα χωρίς να βελτιώνει τίποτα και η μονάδα δεν είναι συγκρίσιμη σε όλες τις γλώσσες προγραμματισμού.
- Η μετρική μπορεί να τροποποιηθεί. Η απόρριψη οριακών αναφορών ή η διόγκωση του αριθμού των γραμμών βελτιώνουν το ποσοστό χωρίς να βελτιώνουν το προϊόν.
Τίποτα από αυτά δεν καθιστά την Πυκνότητα Ελαττωμάτων άχρηστη. Την καθιστά δείκτη τάσης για ένα προϊόν που μετράται με συνέπεια, αντί για βαθμολογία για τη σύγκριση ομάδων μεταξύ τους.
Πώς να μειώσετε την πυκνότητα ελαττωμάτων
Η πραγματική μείωση της πυκνότητας ελαττωμάτων, αντί να είναι στα χαρτιά, σημαίνει την πρόληψη των ελαττωμάτων νωρίτερα και την εύρεση των υπόλοιπων πριν από την κυκλοφορία τους. Οι παρακάτω πρακτικές είναι αυτές που επαναλαμβάνονται στις δημοσιευμένες οδηγίες:
- Μετακινήστε τις δοκιμές νωρίτερα. Η εμπλοκή των δοκιμαστών στο στάδιο των απαιτήσεων και του σχεδιασμού εντοπίζει την ασάφεια πριν αυτή γίνει κώδικας, όπου τα ελαττώματα είναι πιο φθηνά για να διορθωθούν.
- RevΔείτε τον κώδικα πριν τον συγχωνεύσετε. Η αξιολόγηση από ομοτίμους εντοπίζει λογικά σφάλματα, εσφαλμένη ερμηνεία απαιτήσεων και ελαττώματα σχεδιασμού που δεν δοκιμή μονάδας γράφτηκε για να αναζητηθεί.
- Αυτοματοποιήστε τη σουίτα παλινδρόμησης. Εκτέλεση ελέγχων σε κάθε υποβολή μέσω συνεχή ολοκλήρωση εμποδίζει την επιστροφή παλαιών ελαττωμάτων κατά τη σύνταξη νέου κώδικα.
- Γράψτε πρώτα τα τεστ. Ανάπτυξη βάσει δοκιμών επιβάλλει τον καθορισμό κάθε συμπεριφοράς πριν από την εφαρμογή της, και δοκιμή μετάλλαξης μπορεί στη συνέχεια να επιβεβαιώσει ότι οι δοκιμές που προκύπτουν πραγματικά βεβαιώνουν κάτι.
- Χρησιμοποιήστε στατική ανάλυση. Η αυτοματοποιημένη σάρωση κώδικα επισημαίνει μηδενικές παραπομπές, διαρροές πόρων και σημεία υψηλής πολυπλοκότητας πριν από την εκτέλεση μιας μόνο δοκιμής.
- Αναδιαμορφώστε τις πυκνές ενότητες. Μόλις η Πυκνότητα Ελαττωμάτων εντοπίσει τα χειρότερα στοιχεία, ο διαχωρισμός και η απλοποίησή τους συνήθως μειώνει τόσο την πολυπλοκότητα όσο και τον αριθμό των ελαττωμάτων.
- Ενσωματώστε τα ελαττώματα πίσω στη διαδικασία. Η ανάλυση των βαθύτερων αιτίων στις αναδρομικές αξιολογήσεις μετατρέπει τα μεμονωμένα ελαττώματα σε διορθώσεις διαδικασιών αντί για μεμονωμένες ενημερώσεις κώδικα.
Tracαπελευθέρωση ked πάνω από απελευθέρωση παράλληλα τεχνικές δοκιμής λογισμικού και δεδομένα κάλυψης, η Πυκνότητα Ελαττωμάτων γίνεται ένα σύστημα έγκαιρης προειδοποίησης και όχι ένας πίνακας αναφοράς.

