code coverage tutorial
Αυτό το περιεκτικό σεμινάριο εξηγεί τι είναι η Κάλυψη κώδικα στον έλεγχο λογισμικού, οι τύποι, τα οφέλη και τα μειονεκτήματά του:
Ο απώτερος στόχος οποιασδήποτε εταιρείας ανάπτυξης λογισμικού είναι η ανάπτυξη λογισμικού καλής ποιότητας. Για την επίτευξη αυτού του στόχου, το λογισμικό πρέπει να δοκιμαστεί διεξοδικά.
Η δοκιμή είναι επομένως αναπόσπαστο μέρος της ανάπτυξης μιας εφαρμογής λογισμικού. Ως εκ τούτου, είναι σημαντικό, το λογισμικό που αναπτύχθηκε να επανεξετάζεται από τον προγραμματιστή (το οποίο πραγματοποιείται κατά τη διάρκεια της φάσης δοκιμής μονάδας) και στη συνέχεια να μεταφερθεί στην ομάδα QC για να ελεγχθεί διεξοδικά για να διασφαλιστεί ότι έχει ελάχιστα ή καθόλου σφάλματα.
Το λογισμικό υποβάλλεται σε δοκιμή μονάδας πριν κυκλοφορήσει στην πραγματική ομάδα δοκιμών για δοκιμή. Καθώς αυτή η δοκιμή περιλαμβάνει δοκιμή σε επίπεδο κώδικα, γίνεται από τον προγραμματιστή. Αυτό γίνεται για να διασφαλιστεί ότι κάθε μέρος του κώδικα που δοκιμάζεται λειτουργεί όπως αναμένεται.
Εδώ, δοκιμάζονται μεμονωμένα μικρά κομμάτια κώδικα που έχουν αναπτυχθεί για να διασφαλιστεί η ορθότητά τους. Όμως, το ερώτημα που συχνά βρίσκεται στο μυαλό ενός προγραμματιστή είναι πόση μονάδα δοκιμής πρέπει να γίνει και η απάντηση σε αυτό βρίσκεται στην Κάλυψη Κώδικα.
Αυτό το σεμινάριο θα σας δώσει μια βαθιά γνώση του τι είναι η Κάλυψη κώδικα και γιατί το χρειαζόμαστε. Θα μάθετε πώς διαφέρει από την κάλυψη δοκιμής.
Θα ρίξουμε επίσης μια ματιά στα εργαλεία και τις μεθοδολογίες που χρησιμοποιούνται για την Κάλυψη κώδικα και προς το τέλος αυτού του σεμιναρίου, θα δούμε τα οφέλη μαζί με τα μειονεκτήματά του. Κάποιοι από τους μύθους που σχετίζονται με την Κάλυψη κώδικα θα καλύπτονται επίσης εδώ.
Τι θα μάθετε:
Τι είναι η κάλυψη κώδικα
Αυτή είναι μια σημαντική μέτρηση δοκιμής μονάδας. Είναι χρήσιμο να γνωρίζουμε την αποτελεσματικότητα των δοκιμών μονάδας. Είναι ένα μέτρο που δείχνει ποιο ποσοστό του πηγαίου κώδικα θα εκτελεστεί κατά τη δοκιμή.
Με απλά λόγια, ο βαθμός στον οποίο ο πηγαίος κώδικας ενός προγράμματος λογισμικού ή μιας εφαρμογής θα εκτελεστεί κατά τη διάρκεια της δοκιμής είναι αυτό που ονομάζεται Κάλυψη κώδικα.
Εάν οι δοκιμές εκτελέσουν ολόκληρο το κομμάτι κώδικα, συμπεριλαμβανομένων όλων των κλάδων, συνθηκών ή βρόχων, τότε θα λέγαμε ότι υπάρχει πλήρης κάλυψη όλων των πιθανών σεναρίων και, συνεπώς, η Κάλυψη κώδικα είναι 100%. Για να το καταλάβουμε ακόμα καλύτερα, ας πάρουμε ένα παράδειγμα.
Δίνεται παρακάτω ένας απλός κώδικας που χρησιμοποιείται για την προσθήκη δύο αριθμών και την εμφάνιση του αποτελέσματος ανάλογα με την αξία του αποτελέσματος.
Input a, b Let c = a + b If c <10, print c Else, print ‘Sorry’
Το παραπάνω πρόγραμμα λαμβάνει δύο εισόδους, δηλαδή 'a' & 'b'. Το άθροισμα και των δύο αποθηκεύεται στη μεταβλητή c. Εάν η τιμή του c είναι μικρότερη από 10, τότε εκτυπώνεται η τιμή του «c» αλλιώς εκτυπώνεται «Συγγνώμη».
Τώρα, εάν έχουμε κάποιες δοκιμές για να επικυρώσουμε το παραπάνω πρόγραμμα με τις τιμές ενός & b έτσι ώστε το άθροισμα να είναι πάντα μικρότερο από 10, τότε το άλλο μέρος του κώδικα δεν εκτελείται ποτέ. Σε ένα τέτοιο σενάριο, θα λέγαμε ότι η κάλυψη δεν είναι πλήρης.
Αυτό ήταν μόνο ένα μικρό παράδειγμα για να αποσαφηνιστεί η έννοια της Κάλυψης κώδικα. Καθώς εξερευνούμε περισσότερα, θα έχετε καλύτερη σαφήνεια.
Γιατί χρειαζόμαστε κάλυψη κώδικα
(εικόνα πηγή )
Διάφοροι λόγοι καθιστούν απαραίτητη την Κάλυψη κώδικα και μερικοί από αυτούς αναφέρονται παρακάτω:
πώς να χρησιμοποιήσετε την έκλειψη για γ
- Σας βοηθά να βεβαιωθείτε ότι το λογισμικό έχει λιγότερα σφάλματα σε σύγκριση με το λογισμικό που δεν διαθέτει καλή Κάλυψη Κώδικα.
- Βοηθώντας στη βελτίωση της ποιότητας του κώδικα, βοηθά έμμεσα στην παροχή λογισμικού καλύτερης ποιότητας.
- Είναι ένα μέτρο που μπορεί να χρησιμοποιηθεί για να γνωρίζει την αποτελεσματικότητα της δοκιμής (αποτελεσματικότητα των δοκιμών μονάδας που γράφονται για τη δοκιμή του κώδικα).
- Βοηθά στον εντοπισμό των τμημάτων του πηγαίου κώδικα που δεν θα δοκιμαστούν.
- Σας βοηθά να προσδιορίσετε εάν η τρέχουσα δοκιμή (δοκιμή μονάδας) είναι επαρκής ή όχι και εάν απαιτούνται και άλλες δοκιμές.
Κάλυψη κώδικα Vs Κάλυψη δοκιμής
Για να κατανοήσουμε τη διαφορά μεταξύ Κάλυψης κώδικα και Κάλυψης δοκιμής, ας κατανοήσουμε πρώτα την έννοια της Κάλυψης δοκιμής.
Κάλυψη δοκιμής
Είναι ένα μέτρο για το πόσα μέρη των αναμενόμενων δοκιμών έχουν καλυφθεί κατά τη δοκιμή ενός λογισμικού. Με «Αναμενόμενη δοκιμή» εννοούμε το πλήρες σύνολο δοκιμαστικών περιπτώσεων που έχουν γραφτεί για εκτέλεση για τη δοκιμή ενός δεδομένου λογισμικού.
Ας υποθέσουμε ότι για να δοκιμάσετε ένα λογισμικό έχει γραφτεί ένα σύνολο 500 συνολικών δοκιμαστικών περιπτώσεων. Τώρα, ως μέρος της δοκιμαστικής δραστηριότητας, εκτελέστηκαν μόνο 300 περιπτώσεις δοκιμών. Ας υποθέσουμε ότι αυτό οφείλεται στην έλλειψη χρόνου. Σε αυτήν την περίπτωση, τα παρακάτω θα ήταν η δοκιμαστική κάλυψη.
Κάλυψη δοκιμής = (Εκτελεσμένες περιπτώσεις δοκιμής / Σύνολο δοκιμαστικών περιπτώσεων) * 100
= (300/500) * 100
= 60%
Ας συγκρίνουμε αυτό με τι είναι η Κάλυψη κώδικα.
Κάλυψη κώδικα
Είναι ένα μέτρο που δείχνει το βαθμό στον οποίο ένας πηγαίος κώδικας μιας εφαρμογής εκτελείται κατά τη δοκιμή του κώδικα. Δείχνει έτσι τον βαθμό στον οποίο θα δοκιμαζόταν ένας πηγαίος κώδικας.
Ας υποθέσουμε ότι για να δοκιμάσετε μια εφαρμογή με 500 γραμμές κώδικα, μόνο 400 γραμμές του κώδικα εκτελούνται από δοκιμές. Ας υποθέσουμε ότι αυτό οφείλεται σε ένα συγκεκριμένο βρόχο / συνθήκη που δεν εκτελείται. Σε αυτήν την περίπτωση, τα παρακάτω θα είναι η κάλυψη κώδικα.
Κάλυψη κώδικα = (αριθμός γραμμών κώδικα που εκτελέστηκαν / συνολικός αριθμός γραμμών κώδικα) * 100
= (400/500) * 100
= 80%
Παρακάτω αναφέρονται οι διαφορές μεταξύ Κάλυψης Κώδικα και Κάλυψης Δοκιμών:
Κάλυψη δοκιμής | Κάλυψη κώδικα |
---|---|
Πρόκειται για ένα μέτρο του πόσο μέρος των αναμενόμενων δοκιμών έχει καλυφθεί κατά τη δοκιμή ενός λογισμικού. | Είναι ένα μέτρο που δείχνει το βαθμό στον οποίο ένας πηγαίος κώδικας μιας εφαρμογής εκτελείται κατά τη δοκιμή του κώδικα. |
Η κάλυψη δοκιμής μπορεί να υπολογιστεί χρησιμοποιώντας τον παρακάτω τύπο: Κάλυψη δοκιμής = (Εκτελεσμένες περιπτώσεις δοκιμής / Σύνολο δοκιμαστικών περιπτώσεων) * 100 | Η κάλυψη κώδικα μπορεί να υπολογιστεί χρησιμοποιώντας τον παρακάτω τύπο: Κάλυψη κώδικα = (αριθμός γραμμών κώδικα που εκτελέστηκαν / συνολικός αριθμός γραμμών κώδικα) * 100 |
Μεθοδολογίες
Εδώ, θα συζητήσουμε τις διάφορες μεθόδους που / μπορούν να χρησιμοποιηθούν για τη μέτρηση της Κάλυψης Κώδικα.
Για να κατανοήσετε αυτές τις μεθοδολογίες, ας ρίξουμε μια ματιά στο παρακάτω απόσπασμα κώδικα:
Add (int a, int b) { If (b > a) { b = b - a Print b } If (a > b) { b = a – b Print b } Else Print ‘0’ }
Κάλυψη δήλωσης
Αυτή η μεθοδολογία είναι ένα μέτρο που λέει εάν όλες οι πιθανές εκτελέσιμες δηλώσεις κώδικα στον πηγαίο κώδικα έχουν εκτελεστεί τουλάχιστον μία φορά. Είναι μια μέθοδος για να διασφαλιστεί ότι κάθε γραμμή του πηγαίου κώδικα καλύπτεται τουλάχιστον μία φορά από τις δοκιμές.
Αυτό μπορεί να ακούγεται απλό, αλλά χρειάζεται προσοχή κατά τη μέτρηση της κάλυψης δήλωσης. Ο λόγος είναι, σε έναν πηγαίο κώδικα θα μπορούσε να υπάρχει μια συγκεκριμένη συνθήκη που ενδέχεται να μην εκτελεστεί ανάλογα με τις τιμές εισόδου.
Αυτό θα σήμαινε ότι όλες οι γραμμές κώδικα δεν θα καλυφθούν κατά τη δοκιμή. Έτσι, ίσως χρειαστεί να χρησιμοποιήσουμε διαφορετικά σύνολα τιμών εισόδου για να καλύψουμε όλες αυτές τις συνθήκες στον πηγαίο κώδικα.
Για παράδειγμα, στον παραπάνω πηγαίο κώδικα εάν οι τιμές εισαγωγής λαμβάνονται ως 2 & 3 τότε, το τμήμα 'Else' του κώδικα δεν θα εκτελεστεί. Ωστόσο, εάν οι τιμές εισαγωγής είναι τύπου 3 & 2, τότε το τμήμα 'If' του κώδικα δεν θα εκτελεστεί.
Αυτό σημαίνει ότι και με τις δύο τιμές της κάλυψης δήλωσης δεν θα είναι 100%. Σε μια τέτοια περίπτωση, ενδέχεται να χρειαστεί να εκτελέσουμε τις δοκιμές με το σύνολο των τριών τιμών ((2, 3), (3, 2), (0, 0)) για να διασφαλίσουμε την κάλυψη δήλωσης 100%.
Κάλυψη λειτουργιών
Όπως υποδηλώνει το όνομα, αυτή η μεθοδολογία μετρά το βαθμό στον οποίο οι συναρτήσεις που υπάρχουν στον πηγαίο κώδικα καλύπτονται κατά τη διάρκεια της δοκιμής. Όλες οι λειτουργίες που βρίσκονται στον πηγαίο κώδικα δοκιμάζονται κατά την εκτέλεση της δοκιμής. Και πάλι, πρέπει να διασφαλιστεί ότι δοκιμάζουμε αυτές τις συναρτήσεις για διάφορες τιμές, έτσι ώστε η συνάρτηση να δοκιμάζεται διεξοδικά.
Σε έναν πηγαίο κώδικα μπορεί να υπάρχουν πολλαπλές συναρτήσεις και ανάλογα με τις τιμές εισαγωγής που χρησιμοποιείται μια συνάρτηση μπορεί ή δεν μπορεί να κληθεί. Συνεπώς, ο σκοπός της κάλυψης λειτουργιών είναι να διασφαλίσουμε ότι έχουμε ζητήσει κάθε λειτουργία.
Για παράδειγμα, στον πηγαίο κώδικα παραπάνω εάν οι δοκιμές μας καλέσουν τη λειτουργία «Προσθήκη» ακόμη και μία φορά, τότε θα το ονομάζαμε ως πλήρης κάλυψη λειτουργιών.
καλό πρόγραμμα λήψης mp3 για Android δωρεάν
Κάλυψη κατάστασης
Σε έναν πηγαίο κώδικα όπου κι αν έχουμε μια συνθήκη, το αποτέλεσμα θα ήταν μια Boolean τιμή είτε αληθής είτε ψευδής. Η κάλυψη συνθηκών στοχεύει στο να διαπιστώσει εάν οι δοκιμές καλύπτουν και τις δύο τιμές, δηλαδή αληθές, ψευδείς.
Στον πηγαίο κώδικα, όταν κάθε συνθήκη που εμφανίζεται αξιολογείται τόσο για αληθινές όσο και για ψευδείς καταστάσεις, τότε η Κάλυψη συνθήκης για τον κώδικα λέγεται ότι είναι πλήρης.
Για παράδειγμα, στον παραπάνω κώδικα εάν χρησιμοποιούνται σύνολα τιμών (2, 3) και (4, 2), τότε η κάλυψη συνθήκης θα είναι 100%. Όταν χρησιμοποιείται το σύνολο δεδομένων (2, 3) τότε (b> a) αξιολογείται σε true και (a> b) αξιολογείται σε false. Ομοίως, όταν χρησιμοποιείται το σύνολο δεδομένων (4, 2) τότε (b> a) αξιολογείται σε false και (a> b) αξιολογείται σε true.
Έτσι, και οι δύο συνθήκες καλύπτουν και τις δύο τιμές, δηλαδή αληθές και ψευδείς. Εξ ου και η κάλυψη συνθηκών θα είναι 100%.
Κάλυψη υποκαταστήματος
Αυτή η μεθοδολογία στοχεύει στο να διασφαλίσει ότι κάθε κλάδος που εμφανίζεται σε κάθε δομή υπό όρους εκτελείται στον πηγαίο κώδικα. Για παράδειγμα, στον παραπάνω κώδικα, όλες οι δηλώσεις 'If' και τυχόν συνοδευτική δήλωση 'Else' θα πρέπει να καλύπτονται από τη δοκιμή για κάλυψη 100% υποκαταστήματος.
Για παράδειγμα, στον παραπάνω κώδικα εάν χρησιμοποιούνται σύνολα τιμών (2, 3), (4, 2), (1, 1), τότε η κάλυψη κλάδου θα είναι 100%. Όταν χρησιμοποιείται το σύνολο δεδομένων (2, 3) τότε (b> a) και εκτελείται ο πρώτος κλάδος «If». Παρομοίως, όταν χρησιμοποιείται το σύνολο δεδομένων (4, 2) τότε (a> b) αξιολογείται σε true και εκτελείται ο δεύτερος κλάδος «If».
Στη συνέχεια, με το σύνολο δεδομένων (1, 1) ο κλάδος «Else» αξιολογείται σε true και εκτελείται. Με αυτόν τον τρόπο, εξασφαλίζοντας 100% κάλυψη υποκαταστήματος.
Κάλυψη καταστήματος έναντι κάλυψης κατάστασης
Η κάλυψη κλάδου συχνά συγχέεται με την κάλυψη κατάστασης, ωστόσο, τα δύο είναι διαφορετικά.
Ας το καταλάβουμε με ένα απλό παράδειγμα.
If (a >0) & (b >0) Then Print “Hello” Else Print “Bye”
Ας γράψουμε το σύνολο δεδομένων που απαιτείται για πλήρη Κάλυψη καταστήματος:
(1, 1) - Σε αυτήν την περίπτωση, τα 'a' και 'b' ισχύουν και τα δύο, οπότε η συνθήκη If εκτελείται.
(1, 0) - Σε αυτήν την περίπτωση, το 'a' είναι αληθές και το 'b' θα ήταν ψευδές, οπότε το τμήμα Else του κώδικα εκτελείται.
Όπως γνωρίζουμε, ο σκοπός της κάλυψης καταστημάτων είναι να εκτελεστεί κάθε υποκατάστημα τουλάχιστον μία φορά και αυτός ο σκοπός επιτυγχάνεται.
Κάλυψη κατάστασης:
(1, 0) - Σε αυτήν την περίπτωση, το 'a' είναι αληθές και το 'b' θα ήταν ψευδές.
(0, 1) - Σε αυτήν την περίπτωση, το 'a' είναι ψευδές και το 'b' θα ισχύει.
Ο σκοπός της κάλυψης συνθηκών είναι να κάνουμε κάθε αληθινό και ψευδές για κάθε συνθήκη που εκτελείται και αυτός ο σκοπός επιτυγχάνεται εδώ.
Παρατηρήσατε ότι το άλλο μέρος δεν εκτελείται στην κάλυψη κατάστασης; Αυτό είναι όπου η κάλυψη συνθηκών διαφέρει από την κάλυψη κλάδου.
Εργαλεία για κάλυψη κώδικα
Για να μετρήσετε την Κάλυψη Κωδικού οποιουδήποτε Λογισμικού, υπάρχουν πολλά διαθέσιμα εργαλεία στην αγορά.
Παρατίθενται παρακάτω μερικά από τα εργαλεία για την αναφορά σας:
- Parasoft JTest
- Testwell CTC ++
- Κάλυψη
- JaCoCo
- CodeCover
- BullseyeCoverage
- ΕΜΑ
- OpenCover
- NCover
- Σκουός COCO
- Μετρητής κάλυψης
- GCT
- TCAT C / C ++
- Γκρέτελ
- JCov
Συνιστώμενη ανάγνωση => Εργαλεία κάλυψης κώδικα
Ο παραπάνω σύνδεσμος θα περιλαμβάνει τις ακόλουθες πληροφορίες για αυτά τα εργαλεία:
- Βασικά χαρακτηριστικά
- Τύπος άδειας
- Επίσημη διεύθυνση URL
- Υπέρ και κατά
- Τελευταία έκδοση
Οφέλη
Όπως φαίνεται παραπάνω, είναι πολύ χρήσιμες μετρήσεις δοκιμής για τους παρακάτω λόγους:
- Βοηθά στον εντοπισμό αυτών των περιοχών σε έναν πηγαίο κώδικα που θα παρέμενε μη δοκιμασμένος / ανακάλυψε από τις δοκιμές.
- Είναι βολικό στον προσδιορισμό του χρησιμοποιημένου / νεκρού κώδικα βελτιώνοντας έτσι την ποιότητα του κώδικα.
- Η αποτελεσματικότητα των δοκιμών μονάδας μπορεί να γίνει γνωστή με τη βοήθεια του Code Coverage.
- Λογισμικό με καλύτερη ποιότητα μπορεί να παραδοθεί χρησιμοποιώντας αυτές τις μετρήσεις.
Μειονεκτήματα
- Η προσπάθεια να στοχεύσετε σε κάλυψη κώδικα 100% προκαλεί μερικές φορές έλλειψη ευρωστίας των δοκιμών, με αποτέλεσμα να λείπει η καταγραφή σεναρίων επιρρεπή σε ελαττώματα.
- Σε αντίθεση με την κοινή αντίληψη, δεν μπορεί να εγγυηθεί εάν το σχεδιασμένο λογισμικό ικανοποιεί όλες τις απαιτήσεις.
Μύθοι εναντίον γεγονότων
Μύθος | Γεγονός |
---|---|
Έχοντας 100% Κάλυψη κώδικα διασφαλίζει ότι το λογισμικό δεν θα έχει σφάλματα. | Όχι, η κάλυψη κώδικα 100% δεν μπορεί να εγγυηθεί λογισμικό χωρίς σφάλματα. Μια καλή κάλυψη κώδικα σε συνδυασμό με καλές προσπάθειες από την ομάδα QC μπορεί να διασφαλίσει ένα λογισμικό με ελάχιστα ή καθόλου σφάλματα. |
Έχοντας 100% Κάλυψη Κωδικού σημαίνει ότι ο γραμμένος κώδικας είναι τέλειος. | Όχι, στην πραγματικότητα, εάν σημαντικές απαιτήσεις δεν έχουν καταγραφεί από τον κώδικα, τότε ο κωδικός δεν μπορεί να χαρακτηριστεί τέλειος παρά το γεγονός ότι η Κάλυψη Κώδικα είναι 100%. |
Κάλυψη κώδικα μετρά την αποτελεσματικότητα των δοκιμών που πραγματοποιούνται σε ένα προϊόν λογισμικού. | Όχι, η Κάλυψη κώδικα είναι απλώς ένα μέτρο που χρησιμοποιείται για τον έλεγχο της αποτελεσματικότητας των δοκιμών μονάδας, δηλαδή των δοκιμών που εκτελούνται μόνο στον πηγαίο κώδικα ενός Λογισμικού. |
Συχνές ερωτήσεις
Q # 1) Τι είναι μια αποδεκτή κάλυψη κώδικα;
Απάντηση: Η επίτευξη κάλυψης κώδικα 100% δεν πρέπει να είναι ο στόχος, ενώ ο κωδικός λογισμικού δοκιμής μονάδας. Μα γιατί όχι? Για να καταλάβετε τον λόγο, ίσως χρειαστεί να βουτήξετε λίγο πιο βαθιά για να κατανοήσετε την υποκείμενη έννοια.
Όταν στοχεύουμε μια κάλυψη 100%, τότε συμβαίνει συχνότερα ότι όλη η εστίαση στο σχεδιασμό των δοκιμών γίνεται για να διασφαλιστεί εάν κάθε δήλωση, βρόχος, κλάδος ή κατάσταση δοκιμάζεται. Γι 'αυτό καταλήγουμε να καταβάλουμε πάρα πολλές προσπάθειες που μπορεί να μην αξίζουν τον χρόνο που ξοδεύουμε.
Επιπλέον, η εστίαση σε υψηλή κάλυψη οδηγεί επίσης σε απώλεια των σημαντικών σεναρίων που είναι πιθανό να έχουν τα ελαττώματα, επειδή το μόνο που στοχεύουμε είναι να διασφαλίσουμε ότι κάθε γραμμή κώδικα δοκιμάζεται.
Η εστίαση σε υψηλή κάλυψη κώδικα δεν είναι τόσο σημαντική πάντα και δεν μπορεί ούτε να είναι ένας σταθερός αριθμός για στόχευση για τη δοκιμή διαφορετικών κωδικών. Ωστόσο, σε γενικές γραμμές, η κάλυψη 75% - 80% πρέπει να είναι ένας ιδανικός αριθμός.
Κατά τη δοκιμή του κωδικού μας, το κύριο επίκεντρο πρέπει να είναι η διασφάλιση της κάλυψης των κρίσιμων και πιθανών σεναρίων επιρρεπή σε λάθη. Εάν αυτά τα χάσετε, παρά το γεγονός ότι έχετε 100% Κάλυψη κώδικα, οι δοκιμές μας θα είχαν απλώς κακή αποτελεσματικότητα δοκιμής.
Q # 2) Πώς μπορώ να ελέγξω την Κάλυψη κώδικα;
Απάντηση: Για να ελέγξετε το ποσοστό κάλυψης κώδικα που μπορεί να έχετε επιτύχει από τις δοκιμές που έχουν σχεδιαστεί για τη δοκιμή του κώδικα, διαθέτουμε αρκετά εργαλεία στην αγορά. Ανάλογα με τη γλώσσα προγραμματισμού που χρησιμοποιούμε έχουμε διάφορα εργαλεία.
Μερικά από αυτά αναφέρονται παρακάτω:
- Ιάβα - Κάλυψη, JaCoCo
- Javascript - Blanket.js, Κωνσταντινούπολη
- Πύθων - Coverage.py
- Ρουμπίνι - SimpleCov
Χρησιμοποιώντας αυτά τα εργαλεία μπορούμε να λάβουμε μια πλήρη αναφορά κάλυψης των δοκιμών μας που μας βοηθούν να γνωρίζουμε ποιο μέρος του κώδικα θα εκτελεστεί και ποιο θα χάσει τις δοκιμές μας.
Q # 3) Είναι η Κάλυψη κώδικα καλή μέτρηση;
Απάντηση: Σε σενάρια πραγματικής ζωής, αυτό είναι χρήσιμο σε κάποιο βαθμό και με ορισμένους συγκεκριμένους τρόπους.
Εξετάζοντας πρώτα τους περιορισμούς του, γνωρίζουμε πολύ καλά ότι η κάλυψη 100% δεν εγγυάται ότι ο Κώδικας είναι χωρίς σφάλματα, ούτε εγγυάται ότι όλες οι απαιτήσεις έχουν καλυφθεί στον κώδικα, δηλαδή παρά το 100% Κάλυψη Κώδικα είμαστε πολύ πιθανό να έχουν σφάλματα στον κώδικα, με τον λόγο ότι η κάλυψη δεν διασφαλίζει ότι έχουν δοκιμαστεί όλα τα σενάρια.
Επιπλέον, εάν οι απαιτήσεις έχουν παραλειφθεί κατά τη σύνταξη του κώδικα, τότε δεν υπάρχει αντιστοίχιση απαιτήσεων με τον κώδικα που λαμβάνεται υπόψη ως μέρος της Κάλυψης Κώδικα.
Τούτου λεχθέντος, δεν μπορούμε να αρνηθούμε ότι όταν χρησιμοποιούμε Κάλυψη κώδικα ως μετρήσεις, μας δίνει μια ιδέα εάν έχουμε καλύψει τις βασικές απαιτήσεις της δοκιμής κάθε γραμμής του κώδικα μας. Αυτό το ποσοστό κάλυψης μας δίνει μια ιδέα για το πόσα μέρη του κώδικα μας εκτελούνται με τις δοκιμές μονάδας μας.
Γνωρίζουμε πόσος κώδικας δεν θα εκτελεστεί. Αυτό με τη σειρά του μας βοηθά να αποφασίσουμε πόσες περισσότερες δοκιμές μονάδας χρειάζονται και για ποια μέρη του κώδικα.
Μπορούμε λοιπόν να συμπεράνουμε, ότι η κακή κάλυψη μας δίνει μια ιδέα για την αναποτελεσματικότητα των δοκιμών μονάδας. Ταυτόχρονα, η διασφάλιση κάλυψης 100% δεν αποτελεί εγγύηση για κώδικα χωρίς ελαττώματα. Επομένως, πρέπει να έχουμε μια ισορροπημένη προσέγγιση όπου δεν τονίζουμε υπερβολικά τη σημασία της στόχευσης ενός υψηλού ποσοστού κάλυψης κώδικα.
Q # 4) Πώς μπορώ να βελτιώσω την κάλυψη κώδικα;
Απάντηση: Η Έκθεση Κάλυψης Κώδικα που παρέχεται από εργαλεία κάλυψης όπως JaCoCo, Κωνσταντινούπολη κ.λπ. δείχνει τις περιοχές που καλύπτονται από τις δοκιμές και επίσης εκείνες που δεν θα δοκιμαστούν.
διαφορά μεταξύ εντολών unix και linux
Γνωρίζοντας τα μη δοκιμασμένα μέρη του κώδικα, οι δοκιμές μπορούν να γραφτούν είτε χειροκίνητα είτε με χρήση οποιουδήποτε εργαλείου αυτοματισμού για την κάλυψη των περιοχών που διαφορετικά δεν θα δοκιμαστούν και, ως εκ τούτου, θα αυξήσουν την Κάλυψη κώδικα.
Ένα σημαντικό πράγμα που πρέπει να σημειωθεί εδώ είναι ότι ενώ μπορούμε να γράψουμε εκατοντάδες γραμμές κώδικα για να δοκιμάσουμε μια συνάρτηση σε κώδικα, αλλά η κάλυψη μπορεί να είναι πολύ μικρότερη. Ο λόγος είναι ότι το να βάλετε πολύ βαθιά για να δοκιμάσετε ένα μέρος του τεράστιου κώδικα δεν θα βοηθήσει στην αύξηση της Κάλυψης Κώδικα.
Επομένως, εάν ο στόχος είναι να αυξηθεί η κάλυψη, τότε πρέπει να ληφθεί μέριμνα για να καλύψει όλες τις λειτουργίες, τις συνθήκες και τους βρόχους αντί να βυθιστεί βαθιά σε μία μόνο λειτουργία και να γράψει μεγάλες δοκιμές για τη συγκεκριμένη λειτουργία.
συμπέρασμα
Ένα υψηλής ποιότητας προϊόν λογισμικού είναι αυτό που απαιτείται στον σημερινό γρήγορο κόσμο του Διαδικτύου.
Η διασφάλιση λογισμικού καλής ποιότητας δεν είναι μόνο ευθύνη ενός μηχανικού QA αλλά και ευθύνη του προγραμματιστή. Ο Κώδικας Κάλυψης είναι επομένως πολύ χρήσιμος όσον αφορά την παράδοση ενός ποιοτικού προϊόντος στην ομάδα QA από τους προγραμματιστές.
Αυτό το σεμινάριο εξήγησε τα πάντα για την Κάλυψη κώδικα και τις χρήσεις του. Επίσης, σκάψαμε λίγο πιο βαθιά για να κατανοήσουμε τη διαφορά μεταξύ Κάλυψης Κώδικα και Κάλυψης Δοκιμών. Εκτός αυτού, κατανοήσαμε τις μεθοδολογίες που χρησιμοποιήθηκαν μαζί με μια ποικιλία εργαλείων Κάλυψης Κώδικα.
Εδώ ενημερώθηκαν τα οφέλη και τα μειονεκτήματα. Τέλος, καταργήσαμε μερικούς από τους μύθους και τις συχνές ερωτήσεις που σχετίζονται με την Κάλυψη κώδικα
Καλή ανάγνωση !!
Συνιστώμενη ανάγνωση
- Κορυφαία 15 εργαλεία κάλυψης κώδικα (για Java, JavaScript, C ++, C #, PHP)
- 15 καλύτερα εργαλεία JAVA για ανάπτυξη, κατασκευή, προφίλer, κάλυψη κώδικα και κριτική
- C # Λειτουργίες / Μέθοδοι Εκμάθηση με παραδείγματα κώδικα
- C # Εκμάθηση χειρισμού εξαιρέσεων με παραδείγματα κώδικα
- Tutorial Tortoise SVN: Αναθεωρήσεις στο αποθετήριο κώδικα
- Εκμάθηση μήκους σειράς Java με παραδείγματα κώδικα
- AWS CodeBuild Tutorial: Εξαγωγή κώδικα από το Maven Build
- Εκπαιδευτικό πρόγραμμα SVN: Διαχείριση πηγαίου κώδικα χρησιμοποιώντας ανατροπή