Κάλυψη δοκιμών στις δοκιμές λογισμικού: Πώς να τη μετρήσετε

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

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

  • 🎯 Ορισμός: Αναφορές κάλυψης δοκιμών που απαιτούν, διαθέτουν και διαδρομές κώδικα που ήδη εκτελούν οι υπάρχουσες δοκιμές.
  • 🧭 τύποι: Η δήλωση, το υποκατάστημα, η συνθήκη, η διαδρομή, οι απαιτήσεις και η κάλυψη κινδύνου απαντούν σε διαφορετική ερώτηση.
  • Code έναντι δοκιμής: Code Η κάλυψη μετρά τις εκτελεσμένες γραμμές πηγής, ενώ η κάλυψη δοκιμής μετρά το συνολικό σχέδιο δοκιμής.
  • 🧮 Φόρμουλα: Διαιρέστε τις εκτελεσμένες γραμμές με το σύνολο των γραμμών και, στη συνέχεια, πολλαπλασιάστε επί 100 για το ποσοστό.
  • Τεχνικές: Η ανάλυση οριακών τιμών, οι πίνακες αποφάσεων και οι δοκιμές μετάβασης κατάστασης διευρύνουν την κάλυψη χωρίς να υπερφορτώνουν τη σουίτα.
  • 📈 Βελτιστοποίηση: Κατατάξτε τις ενότητες ανά κίνδυνο, αυτοματοποιήστε τη σουίτα παλινδρόμησης και ελέγξτε την τάση κάλυψης σε κάθε σπριντ.
  • 🤖 Βοήθεια AI: Τα εργαλεία τεχνητής νοημοσύνης δημιουργούν ελλείπουσες δοκιμές μονάδας και κατατάσσουν τις μη δοκιμασμένες διαδρομές με βάση τον κίνδυνο παραγωγής.

Τι είναι η κάλυψη δοκιμής;

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

Με απλά λόγια, είναι μια τεχνική για να διασφαλίσετε ότι οι δοκιμές σας δοκιμάζουν τον κώδικά σας ή πόσο από τον κώδικά σας ασκήσατε εκτελώντας τη δοκιμή.

Τι κάνει η Κάλυψη Δοκιμών;

Σε ένα ζωντανό έργο, η κάλυψη των δοκιμών υποστηρίζει τέσσερις πρακτικές δραστηριότητες:

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

Οφέλη από την κάλυψη δοκιμών στη μηχανική λογισμικού

Αυτές οι δραστηριότητες μεταφράζονται σε συγκεκριμένα οφέλη από την άποψη της μηχανικής.

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

Τύποι Κάλυψης Δοκιμών

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

Τύπος κάλυψης Τι Μετρά Χρησιμοποιείται για
Κάλυψη δήλωσης (γραμμής) Οι εκτελέσιμες γραμμές εκτελούνται τουλάχιστον μία φορά Δοκιμές μονάδας και έλεγχοι παλαιού κώδικα
Κάλυψη υποκαταστήματος ή απόφασης Αληθινό και ψευδές αποτέλεσμα κάθε απόφασης Λογική υπό όρους και επικύρωσης
Κάλυψη πάθησης Κάθε λογική υπο-έκφραση ως αληθής και ως ψευδής Σύνθετες εκφράσεις AND ή OR
Κάλυψη διαδρομής Μοναδικές διαδρομές που ακολουθούνται μέσω μιας ενότητας Κρίσιμες για την ασφάλεια και οικονομικές ροές
Κάλυψη λειτουργίας Συναρτήσεις ή μέθοδοι που καλούνται από δοκιμές Επίπεδα API και υπηρεσιών
Κάλυψη απαιτήσεων Απαιτήσεις που αντιστοιχίζονται σε τουλάχιστον μία εξέταση Αποδοχή και παραδοχήtracπραγματική υπογραφή
Κάλυψη κινδύνου Εντοπισμένες περιοχές υψηλού κινδύνου που ασκήθηκαν Σύντομοι κύκλοι απελευθέρωσης

Οι πρώτοι πέντε τύποι είναι μέτρα σε επίπεδο κώδικα και ανήκουν σε δοκιμή λευκού κουτιού, ενώ οι απαιτήσεις και η κάλυψη κινδύνου βρίσκονται σε επίπεδο σχεδίου δοκιμών.

Ποιες είναι οι κύριες διαφορές μεταξύ Code Κάλυψη και Κάλυψη Δοκιμών;

Code κάλυψη και η κάλυψη δοκιμής είναι τεχνικές μέτρησης που σας επιτρέπουν να αξιολογήσετε την ποιότητα του κώδικα της αίτησής σας.

Ακολουθούν ορισμένες κρίσιμες διαφορές μεταξύ των θαλάμων αυτών των μεθόδων κάλυψης:

Παράμετροι Code Κάλυψη Κάλυψη δοκιμής
Ορισμός Code όρος κάλυψης που χρησιμοποιείται όταν ασκείται κώδικας εφαρμογής ενώ εκτελείται μια εφαρμογή. Η κάλυψη δοκιμής σημαίνει συνολικό σχέδιο δοκιμής.
Goal Code Οι μετρήσεις κάλυψης μπορούν να βοηθήσουν την ομάδα να παρακολουθεί τις αυτοματοποιημένες δοκιμές της. Στην κάλυψη δοκιμής παρέχονται λεπτομέρειες σχετικά με το επίπεδο στο οποίο έχει δοκιμαστεί η γραπτή κωδικοποίηση μιας εφαρμογής.
Υποτύποι Code κάλυψη χωρισμένη σε υποτύπους όπως κάλυψη δήλωσης, κάλυψη κατάστασης, κάλυψη υποκαταστήματος, Togglηλεκτρονική κάλυψη, κάλυψη FSM. Δεν υπάρχει υποτύπος μεθόδου κάλυψης δοκιμής.

Δοκιμαστική Φόρμουλα Κάλυψης

Για να υπολογίσετε την κάλυψη δοκιμής, πρέπει να ακολουθήσετε τα παρακάτω βήματα:

Βήμα 1) Κόμης Y, το σύνολο των γραμμών κώδικα στο λογισμικό που χρησιμοποιείτε δοκιμών

Βήμα 2) Κόμης X, ο αριθμός γραμμών κώδικα που εκτελούνται αυτήν τη στιγμή όλες οι δοκιμαστικές περιπτώσεις

Τώρα, πρέπει να βρείτε (Χ διαιρούμενο με Y) πολλαπλασιασμένο με το 100. Το αποτέλεσμα αυτού του υπολογισμού είναι η κάλυψη δοκιμής σας %.

Για παράδειγμα:

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

(50 / 500) * 100 = 10%   // executed lines divided by total lines

Παραδείγματα κάλυψης δοκιμής

Το ποσοστό από μόνο του δεν είναι ποτέ η μόνη αιτία, όπως δείχνουν τα παρακάτω παραδείγματα.

Παράδειγμα 1:

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

Παράδειγμα 2:

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

Τεχνικές Κάλυψης Δοκιμών

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

  • Ανάλυση οριακών τιμών: Επιλέγει εισόδους στις άκρες κάθε έγκυρου εύρους, όπου τα ελαττώματα συγκεντρώνονται περισσότερο. Δείτε ανάλυση οριακών τιμών για επεξεργασμένες υποθέσεις.
  • Διαμερισμός ισοδυναμίας: Ομαδοποιεί εισόδους που η εφαρμογή αντιμετωπίζει με τον ίδιο τρόπο, έτσι ώστε μια μεμονωμένη περίπτωση να μπορεί να αναπαραστήσει με ασφάλεια μια ολόκληρη κλάση τιμών.
  • Δοκιμή πίνακα αποφάσεων: Καλύπτει συνδυασμούς συνθηκών και τα αναμενόμενα αποτελέσματά τους μέσα σε ένα ενιαίο πλέγμα.
  • Δοκιμές μετάβασης σε πολιτείες: Ασκεί κάθε έγκυρη και μη έγκυρη κίνηση μεταξύ των καταστάσεων της εφαρμογής.
  • Δοκιμή διαδρομής βάσης: Παράγει το ελάχιστο σύνολο ανεξάρτητων διαδρομών από το γράφημα ροής ελέγχου.
  • Δοκιμές βάσει κινδύνου: Κατατάσσει τα χαρακτηριστικά με βάση τον αντίκτυπο στην επιχείρηση και καλύπτει πρώτα αυτά που ενέχουν τον υψηλότερο κίνδυνο.
  • Διερευνητική δοκιμή: Αποκαλύπτει κενά που οι σεναριακές υποθέσεις και οι αναφορές κάλυψης δεν αποκαλύπτουν ποτέ.

Πώς μπορεί να επιτευχθεί η κάλυψη δοκιμών;

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

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

Πώς να βελτιώσετε την κάλυψη των εξετάσεων

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

  1. Βάλτε τον τρέχοντα αριθμό σε βασική γραμμή. Εκτελέστε μια αναφορά κάλυψης και μια δήλωση καταγραφής, μια διακλάδωση και μια κάλυψη απαιτήσεων ξεχωριστά, έτσι ώστε τα κενά να παραμένουν ορατά ανά ενότητα και όχι κρυμμένα μέσα σε έναν μέσο όρο ολόκληρου του έργου.
  2. Χαρτογράφηση δοκιμών σύμφωνα με τις απαιτήσεις. Φτιάξτε ένα tracπλέγμα δυνατότητας που συνδέει κάθε απαίτηση με τουλάχιστον μία περίπτωση δοκιμής. Οποιαδήποτε κενή γραμμή είναι ένα επιβεβαιωμένο κενό, όχι μια υποψία.
  3. Κατάταξη ενοτήτων ανά κίνδυνο. Η πληρωμή, ο έλεγχος ταυτότητας και η λογική μετεγκατάστασης δεδομένων αξίζουν πολύ βαθύτερη κάλυψη από μια στατική οθόνη βοήθειας, επομένως δαπανήστε τον προϋπολογισμό εκεί που μια αποτυχία θα έβλαπτε περισσότερο.
  4. Προσθέστε αρνητικές και ακραίες περιπτώσεις. Κενές είσοδοι, υπερμεγέθεις τιμές, χρονικά όρια δικτύου και σφάλματα δικαιωμάτων φτάνουν σε κλάδους που οι δοκιμές happy-path δεν αγγίζουν ποτέ.
  5. Τοποθετήστε σε στρώσεις τα επίπεδα δοκιμής. Συνδυασμός δοκιμή μονάδας, δοκιμή ολοκλήρωσηςκαι ελέγχους από άκρο σε άκρο, επειδή κάθε επίπεδο καλύπτει ό,τι τα άλλα δεν μπορούν δομικά.
  6. Αυτοματοποιήστε τη σουίτα παλινδρόμησης. Promoσταθερές περιπτώσεις σε δοκιμές αυτοματισμού και να τα εκτελέσετε μέσα στο Σωλήνας CI/CD μετά από κάθε δέσμευση.
  7. Αποσύρετε τις περιπτώσεις πλεονασμού. Διαγράψτε διπλότυπες δοκιμές που προσθέτουν λεπτά εκτέλεσης χωρίς να προσθέσετε ούτε μία ακάλυπτη γραμμή.
  8. RevΠαρακολουθήστε την τάση σε κάθε σπριντ. Tracκάλυψη k δίπλα στο πυκνότητα ελαττώματοςΗ αυξανόμενη διαρροή σε περίπτωση επίπεδης κάλυψης αποτελεί έγκαιρη προειδοποίηση για ένα τυφλό σημείο.

⚠️ Προειδοποίηση: Μην αντιμετωπίζετε το 100% ως στόχο. Μια σουίτα στο 85% με ισχυρούς ισχυρισμούς προστατεύει μια έκδοση πολύ καλύτερα από το 95% των επιφανειακών ελέγχων που εκτελούν κώδικα χωρίς να επαληθεύουν κανένα αποτέλεσμα.

Μειονεκτήματα της κάλυψης δοκιμών

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

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

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

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

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

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

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

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

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