Εκμάθηση Κάλυψης Κώδικα: Υποκατάστημα, Δήλωση, Απόφαση, FSM

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

Anonim

Τι είναι η κάλυψη κώδικα;

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

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

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

  • Τι είναι η κάλυψη κώδικα;
  • Γιατί να χρησιμοποιήσετε την Κάλυψη κώδικα;
  • Μέθοδοι κάλυψης κώδικα
  • Κάλυψη δήλωσης
  • Κάλυψη αποφάσεων
  • Κάλυψη υποκαταστήματος
  • Κάλυψη κατάστασης
  • Κάλυψη μηχανών πεπερασμένης κατάστασης
  • Ποιος τύπος κάλυψης κώδικα θα επιλέξετε
  • Κάλυψη κώδικα έναντι λειτουργικής κάλυψης
  • Εργαλεία κάλυψης κώδικα
  • Πλεονεκτήματα και μειονεκτήματα της χρήσης κάλυψης κώδικα

Γιατί να χρησιμοποιήσετε την Κάλυψη κώδικα;

Εδώ είναι μερικοί βασικοί λόγοι για τη χρήση της κάλυψης κώδικα:

  • Σας βοηθά να μετρήσετε την αποτελεσματικότητα της εφαρμογής του τεστ
  • Προσφέρει μια ποσοτική μέτρηση.
  • Καθορίζει το βαθμό στον οποίο έχει δοκιμαστεί ο πηγαίος κώδικας.

Μέθοδοι κάλυψης κώδικα

Ακολουθούν σημαντικές μέθοδοι κάλυψης κώδικα

  • Κάλυψη δήλωσης
  • Κάλυψη αποφάσεων
  • Κάλυψη υποκαταστήματος
  • Εναλλαγή κάλυψης
  • Κάλυψη FSM

Κάλυψη δήλωσης

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

Η κάλυψη δηλώσεων χρησιμοποιείται για την παραγωγή σεναρίου με βάση τη δομή του υπό δοκιμή κώδικα.

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

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

Ας το καταλάβουμε με ένα παράδειγμα, πώς να υπολογίσουμε την κάλυψη των δηλώσεων.

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

Πηγαίος κώδικας:

Εκτυπώσεις (int a, int b) {------------ Το Printsum είναι μια συνάρτησηint αποτέλεσμα = a + b;Εάν (αποτέλεσμα> 0)Εκτύπωση ("Θετικό", αποτέλεσμα)ΑλλούΕκτύπωση ("Αρνητικό", αποτέλεσμα)} ----------- Τέλος του πηγαίου κώδικα

Σενάριο 1:

Εάν A = 3, B = 9

Οι δηλώσεις που σημειώνονται με κίτρινο χρώμα είναι αυτές που εκτελούνται σύμφωνα με το σενάριο

Αριθμός εκτελεσμένων δηλώσεων = 5, Συνολικός αριθμός δηλώσεων = 7

Κάλυψη δήλωσης: 5/7 = 71%

Ομοίως, θα δούμε το σενάριο 2,

Σενάριο 2:

Εάν A = -3, B = -9

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

Αριθμός εκτελεσμένων δηλώσεων = 6

Συνολικός αριθμός δηλώσεων = 7

Κάλυψη δήλωσης: 6/7 = 85%

Αλλά συνολικά, αν βλέπετε, όλες οι δηλώσεις που καλύπτονται από 2 ου σεναρίου θεωρείται. Έτσι μπορούμε να συμπεράνουμε ότι η συνολική κάλυψη των δηλώσεων είναι 100%.

Τι καλύπτεται από την κάλυψη δήλωσης;

  1. Αχρησιμοποίητες δηλώσεις
  2. Dead Code
  3. Αχρησιμοποίητα υποκαταστήματα
  4. Λείπουν δηλώσεις

Κάλυψη αποφάσεων

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

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

Παράδειγμα κάλυψης αποφάσεων

Εξετάστε τον ακόλουθο κώδικα-

Επίδειξη (int a) {Εάν (α> 5)α = α * 3Εκτύπωση (α)}

Σενάριο 1:

Η τιμή του είναι 2

Ο κωδικός που επισημαίνεται με κίτρινο χρώμα θα εκτελεστεί. Εδώ ελέγχεται το αποτέλεσμα "Όχι" της απόφασης Εάν (a> 5).

Κάλυψη απόφασης = 50%

Σενάριο 2:

Η τιμή του είναι 6

Ο κωδικός που επισημαίνεται με κίτρινο χρώμα θα εκτελεστεί. Εδώ ελέγχεται το αποτέλεσμα "Ναι" της απόφασης Εάν (a> 5).

Κάλυψη απόφασης = 50%

Θήκη δοκιμής Τιμή Α Παραγωγή Κάλυψη αποφάσεων
1 2 2 50%
2 6 18 50%

Κάλυψη υποκαταστήματος

Branch Coverage είναι μια μέθοδος δοκιμής λευκού κουτιού στην οποία δοκιμάζεται κάθε αποτέλεσμα από μια ενότητα κώδικα (δήλωση ή βρόχος). Ο σκοπός της κάλυψης υποκαταστήματος είναι να διασφαλίσει ότι κάθε συνθήκη απόφασης από κάθε υποκατάστημα εκτελείται τουλάχιστον μία φορά. Βοηθά στη μέτρηση κλασμάτων ανεξάρτητων τμημάτων κώδικα και στην εύρεση ενοτήτων που δεν έχουν κλάδους.

Για παράδειγμα, εάν τα αποτελέσματα είναι δυαδικά, πρέπει να δοκιμάσετε και τα αληθινά και τα ψεύτικα αποτελέσματα.

Ο τύπος για τον υπολογισμό της κάλυψης κλάδου:

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

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

Εξετάστε τον ακόλουθο κώδικα

Επίδειξη (int a) {Εάν (α> 5)α = α * 3Εκτύπωση (α)}

Η κάλυψη καταστημάτων θα εξετάσει επίσης τον άνευ όρων κλάδο

Θήκη δοκιμής Τιμή Α Παραγωγή Κάλυψη αποφάσεων Κάλυψη υποκαταστήματος
1 2 2 50% 33%
2 6 18 50% 67%

Πλεονεκτήματα της κάλυψης καταστημάτων:

Η κάλυψη καταστημάτων προσφέρει τα ακόλουθα πλεονεκτήματα:

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

Κάλυψη κατάστασης

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

Για παράδειγμα, εάν μια παράσταση έχει Boolean λειτουργίες όπως AND, OR, XOR, που υποδεικνύει συνολικές δυνατότητες.

Η κάλυψη συνθηκών δεν παρέχει εγγύηση για πλήρη κάλυψη αποφάσεων

Ο τύπος για τον υπολογισμό της κάλυψης κατάστασης:

Παράδειγμα:

Για την παραπάνω έκφραση, έχουμε 4 πιθανούς συνδυασμούς

  • ΤΤ
  • FF
  • TF
  • FT

Εξετάστε την ακόλουθη εισαγωγή

Χ = 3

Υ = 4

(x

ΑΛΗΘΗΣ

Η κάλυψη κατάστασης είναι ¼ = 25%

Α = 3

Β = 4

(α> β)

ΨΕΥΔΗΣ

Κάλυψη μηχανών πεπερασμένης κατάστασης

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

Ποιος τύπος κάλυψης κώδικα θα επιλέξετε

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

  • Ο υπό δοκιμή κωδικός έχει μεμονωμένα ή πολλαπλά ελαττώματα που δεν έχουν εντοπιστεί
  • κόστος της πιθανής ποινής
  • κόστος της χαμένης φήμης
  • κόστος απώλειας πώλησης κ.λπ.

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

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

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

Εργαλεία κάλυψης κώδικα

Εδώ είναι μια λίστα με τα Σημαντικά εργαλεία κάλυψης κώδικα:

Όνομα εργαλείου Περιγραφή
Κομπέρταρα Είναι ένα εργαλείο κάλυψης κώδικα ανοιχτού κώδικα. Μετρά τη δοκιμαστική κάλυψη, δημιουργώντας μια βάση κώδικα και αναλύει ποιες γραμμές κώδικα εκτελούν και ποιες δεν εκτελούνται όταν εκτελείται η δοκιμαστική σουίτα.
Τριφύλλι Το Clover μειώνει επίσης τον χρόνο δοκιμής εκτελώντας μόνο τις δοκιμές που καλύπτουν τον κωδικό εφαρμογής που τροποποιήθηκε από την προηγούμενη έκδοση.
DevPartner Το DevPartner επιτρέπει στους προγραμματιστές να αναλύουν τον κώδικα Java για την ποιότητα και την πολυπλοκότητα του κώδικα.
Έμμα Το EMMA υποστηρίζει κάλυψη κλάσης, μεθόδου, γραμμής και βασικού μπλοκ, συγκεντρωτικών αρχείων προέλευσης, κλάσης και επιπέδων μεθόδου.
Καλίστικ Το Kalistick είναι μια εφαρμογή τρίτου μέρους που αναλύει τους κωδικούς με διαφορετικές προοπτικές.
CoView και CoAnt Το λογισμικό κωδικοποίησης είναι ένα εργαλείο κάλυψης κώδικα για μετρήσεις, πλαστή δημιουργία αντικειμένων, δυνατότητα δοκιμής κώδικα, κάλυψη διαδρομής και κλάδου κ.λπ.
Bullseye για C ++ Το BulseyeCoverage είναι ένα εργαλείο κάλυψης κώδικα για C ++ και C.
Υποβρύχιο ραντάρ Το Sonar είναι ένα ανοιχτό εργαλείο κάλυψης κώδικα που σας βοηθά να διαχειριστείτε την ποιότητα του κώδικα.

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

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

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

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

Περίληψη

  • Η κάλυψη κώδικα είναι ένα μέτρο που περιγράφει το βαθμό στον οποίο έχει δοκιμαστεί ο πηγαίος κώδικας του προγράμματος
  • Σας βοηθά να μετρήσετε την αποτελεσματικότητα της εφαρμογής του τεστ
  • Πέντε μέθοδοι κάλυψης κώδικα είναι 1.) Κάλυψη δήλωσης 2.) Κάλυψη κατάστασης 3) Κάλυψη καταστήματος 4) Κάλυψη εναλλαγής 5) Κάλυψη FSM
  • Η κάλυψη δηλώσεων περιλαμβάνει την εκτέλεση όλων των εκτελέσιμων δηλώσεων στον πηγαίο κώδικα τουλάχιστον μία φορά
  • Η κάλυψη αποφάσεων αναφέρει τα αληθινά ή ψευδή αποτελέσματα κάθε έκφρασης Boolean
  • Στην κάλυψη υποκαταστήματος, κάθε αποτέλεσμα από μια ενότητα κώδικα δοκιμάζεται
  • Υπό όρους θα αποκαλυφθεί πώς αξιολογούνται οι μεταβλητές ή οι υποεκφράσεις στη δήλωση υπό όρους
  • Η κάλυψη μηχανών πεπερασμένης κατάστασης είναι σίγουρα ο πιο περίπλοκος τύπος μεθόδου κάλυψης κώδικα
  • Για να επιλέξετε μια μέθοδο κάλυψης, ο υπεύθυνος δοκιμών πρέπει να ελέγξει το κόστος της πιθανής ποινής, της απώλειας φήμης, της απώλειας πώλησης κ.λπ.
  • Η κάλυψη κώδικα σας λέει πόσο καλά έχει ασκηθεί ο πηγαίος κώδικας από τον πάγκο δοκιμών σας, ενώ η Λειτουργική κάλυψη μετρά πόσο καλά καλύπτεται η λειτουργικότητα του σχεδιασμού
  • Τα Cobertura, JTest, Clover, Emma, ​​Kalistick είναι μερικά σημαντικά εργαλεία κάλυψης κώδικα
  • Κάλυψη κώδικα σας επιτρέπει να δημιουργήσετε επιπλέον δοκιμαστικές περιπτώσεις για να αυξήσετε την κάλυψη
  • Η Κάλυψη κώδικα δεν σας βοηθά να προσδιορίσετε εάν δοκιμάσαμε όλες τις πιθανές τιμές μιας δυνατότητας