Τι είναι η πυκνότητα ελαττώματος; Τύπος υπολογισμού με Παράδειγμα

⚡ Έξυπνη Σύνοψη

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

  • 🔘 Φόρμουλα: Η πυκνότητα ελαττωμάτων ισούται με τον αριθμό των επιβεβαιωμένων ελαττωμάτων διαιρούμενο με το μέγεθος της απελευθέρωσης, που μετριέται συχνότερα σε KLOC.
  • ☑️ Λειτουργικό παράδειγμα: Σαράντα ελαττώματα σε τρεις χιλιάδες γραμμές κώδικα δίνουν 0.0133 ελαττώματα ανά LOC ή 13.333 ελαττώματα ανά KLOC.
  • Σημείο αναφοράς: Περίπου ένα ελάττωμα ανά χίλιες γραμμές κώδικα αντιμετωπίζεται ευρέως ως ένδειξη καλής ποιότητας έργου.
  • 🧪 Επιρροές: Code Η πολυπλοκότητα, οι κανόνες καταμέτρησης ελαττωμάτων, το παράθυρο μέτρησης και η ομαδική ικανότητα μετακινούν τον αριθμό.
  • 📊 Σύγκριση: Η διαρροή ελαττωμάτων, η αποτελεσματικότητα απομάκρυνσης ελαττωμάτων και οι δείκτες σοβαρότητας απαντούν σε ερωτήσεις. Η πυκνότητα ελαττωμάτων από μόνη της δεν μπορεί.
  • ⚠️ Προσοχή: Μια χαμηλή τιμή μπορεί να σημαίνει αδύναμες δοκιμές αντί για καθαρό κώδικα, επομένως η μέτρηση δεν στέκεται ποτέ μόνη της.

Πυκνότητα ελαττώματος

Τι είναι η πυκνότητα ελαττώματος;

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

Η πυκνότητα ελαττωμάτων μετριέται ανά χίλιες γραμμές κώδικα, γνωστή και ως 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 πάνω από απελευθέρωση παράλληλα τεχνικές δοκιμής λογισμικού και δεδομένα κάλυψης, η Πυκνότητα Ελαττωμάτων γίνεται ένα σύστημα έγκαιρης προειδοποίησης και όχι ένας πίνακας αναφοράς.

Συχνές Ερωτήσεις

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

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

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

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

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

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

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

Όχι απαραίτητα. Μια απότομη αύξηση συχνά σημαίνει ότι οι δοκιμές έχουν επιτέλους φτάσει σε μια μονάδα που προηγουμένως ήταν ανέπαφη, κάτι που είναι καλό νέο που εντοπίστηκε αργά. Διαβάστε το μαζί με την κάλυψη και την τάση ελαττωμάτων πριν το αντιμετωπίσετε ως ποιοτική αποτυχία.

Συνοψίστε αυτήν την ανάρτηση με: