Εκμάθηση δοκιμών μονάδας: Τι είναι, Τύποι, Εργαλεία & ΠΑΡΑΔΕΙΓΜΑ δοκιμής

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

Anonim

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

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

Σε SDLC, STLC, V Model, η δοκιμή μονάδας είναι το πρώτο επίπεδο δοκιμών που έγινε πριν από τη δοκιμή ολοκλήρωσης. Η δοκιμή μονάδας είναι μια τεχνική δοκιμής WhiteBox που συνήθως εκτελείται από τον προγραμματιστή. Αν και, σε έναν πρακτικό κόσμο, λόγω της χρονικής κρίσης ή της απροθυμίας των προγραμματιστών σε δοκιμές, οι μηχανικοί της QA κάνουν επίσης δοκιμές μονάδας.

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

  • Γιατί δοκιμή μονάδας;
  • Πώς να κάνετε δοκιμές μονάδας
  • Τεχνικές δοκιμής μονάδας
  • Εργαλεία δοκιμής μονάδας
  • Δοκιμή βάσει ανάπτυξης (TDD) & Δοκιμή μονάδας
  • Μονάδα δοκιμής μονάδας
  • Πλεονέκτημα δοκιμής μονάδας
  • Μειονεκτήματα δοκιμής μονάδας
  • Βέλτιστες πρακτικές δοκιμής μονάδας

Γιατί δοκιμή μονάδας;

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

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

Επίπεδα δοκιμής μονάδας
  1. Οι δοκιμές μονάδας βοηθούν στην επίλυση σφαλμάτων νωρίς στον κύκλο ανάπτυξης και εξοικονομεί κόστος.
  2. Βοηθά τους προγραμματιστές να κατανοήσουν τη βάση του κώδικα δοκιμών και τους επιτρέπει να κάνουν γρήγορα αλλαγές
  3. Οι καλές δοκιμές μονάδας χρησιμεύουν ως τεκμηρίωση έργου
  4. Οι δοκιμές μονάδας βοηθούν στην επαναχρησιμοποίηση κώδικα. Μετεγκαταστήστε τον κωδικό και τις δοκιμές σας στο νέο σας έργο. Ρυθμίστε τον κωδικό μέχρι να εκτελεστούν ξανά οι δοκιμές.

Πώς να κάνετε δοκιμές μονάδας

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

Η δοκιμή μονάδας είναι δύο τύπων

  • Εγχειρίδιο
  • Αυτόματο

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

Σύμφωνα με την αυτοματοποιημένη προσέγγιση-

  • Ένας προγραμματιστής γράφει ένα τμήμα κώδικα στην εφαρμογή μόνο για να ελέγξει τη λειτουργία. Αργότερα θα σχολίαζαν και τελικά θα αφαιρούσαν τον δοκιμαστικό κώδικα κατά την ανάπτυξη της εφαρμογής.
  • Ένας προγραμματιστής θα μπορούσε επίσης να απομονώσει τη λειτουργία για να την ελέγξει πιο αυστηρά. Πρόκειται για μια πιο διεξοδική πρακτική δοκιμής μονάδας που περιλαμβάνει αντιγραφή και επικόλληση κώδικα στο δικό της περιβάλλον δοκιμών από το φυσικό περιβάλλον. Η απομόνωση του κώδικα βοηθά στην αποκάλυψη περιττών εξαρτήσεων μεταξύ του κώδικα που δοκιμάζεται και άλλων μονάδων ή χώρων δεδομένων στο προϊόν. Αυτές οι εξαρτήσεις μπορούν στη συνέχεια να εξαλειφθούν.
  • Ένας κωδικοποιητής χρησιμοποιεί γενικά ένα UnitTest Framework για την ανάπτυξη αυτοματοποιημένων περιπτώσεων δοκιμής. Χρησιμοποιώντας ένα πλαίσιο αυτοματισμού, ο προγραμματιστής κωδικοποιεί κριτήρια στη δοκιμή για να επαληθεύσει την ορθότητα του κώδικα. Κατά την εκτέλεση των δοκιμαστικών περιπτώσεων, το πλαίσιο καταγράφει αποτυχημένες περιπτώσεις δοκιμών. Πολλά πλαίσια θα επισημάνουν επίσης αυτόματα και θα αναφέρουν, συνοπτικά, αυτές τις αποτυχημένες περιπτώσεις δοκιμών. Ανάλογα με τη σοβαρότητα μιας αποτυχίας, το πλαίσιο ενδέχεται να σταματήσει τις επόμενες δοκιμές.
  • Η ροή εργασιών του Unit Testing είναι 1) Δημιουργία δοκιμαστικών περιπτώσεων 2) Επανεξέταση / εργασία 3) Βασική γραμμή 4) Εκτέλεση δοκιμαστικών περιπτώσεων.

Τεχνικές δοκιμής μονάδας

Οι Τεχνικές Μονάδας Δοκιμών κατηγοριοποιούνται κυρίως σε τρία μέρη, τα οποία είναι δοκιμές Black Box που περιλαμβάνουν δοκιμή διεπαφής χρήστη μαζί με είσοδο και έξοδο, Δοκιμή λευκού κουτιού που περιλαμβάνει δοκιμή της λειτουργικής συμπεριφοράς της εφαρμογής λογισμικού και δοκιμή Gray box που χρησιμοποιείται για την εκτέλεση δοκιμής σουίτες, μέθοδοι δοκιμών, περιπτώσεις δοκιμών και εκτέλεση ανάλυσης κινδύνου.

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

  • Κάλυψη δήλωσης
  • Κάλυψη αποφάσεων
  • Κάλυψη υποκαταστήματος
  • Κάλυψη κατάστασης
  • Κάλυψη μηχανών πεπερασμένης κατάστασης

Για περισσότερα ανατρέξτε στη διεύθυνση https://www.guru99.com/code-coverage.html

Παράδειγμα δοκιμής μονάδας: Mock Objects

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

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

Εργαλεία δοκιμής μονάδας

Υπάρχουν πολλά διαθέσιμα αυτοματοποιημένα λογισμικά δοκιμής μονάδας για να βοηθήσουν στη δοκιμή μονάδας. Παρακάτω παραθέτουμε μερικά παραδείγματα:

  1. Junit: Το Junit είναι ένα δωρεάν εργαλείο δοκιμής που χρησιμοποιείται για τη γλώσσα προγραμματισμού Java. Παρέχει ισχυρισμούς για τον προσδιορισμό της μεθόδου δοκιμής. Αυτό το εργαλείο δοκιμάζει πρώτα τα δεδομένα και μετά εισάγεται στο κομμάτι του κώδικα.
  2. NUnit: Το NUnit χρησιμοποιείται ευρέως για χρήση πλαισίου δοκιμής μονάδας για όλες τις γλώσσες .net. Είναι ένα εργαλείο ανοιχτού κώδικα που επιτρέπει τη συγγραφή σεναρίων με μη αυτόματο τρόπο. Υποστηρίζει δοκιμές βάσει δεδομένων που μπορούν να εκτελούνται παράλληλα.
  3. JMockit: Το JMockit είναι εργαλείο δοκιμής μονάδας ανοιχτού κώδικα. Είναι ένα εργαλείο κάλυψης κώδικα με μετρήσεις γραμμής και διαδρομής. Επιτρέπει πλαστή API με σύνταξη εγγραφής και επαλήθευσης. Αυτό το εργαλείο προσφέρει κάλυψη γραμμής, κάλυψη διαδρομής και κάλυψη δεδομένων.
  4. EMMA: Το EMMA είναι μια εργαλειοθήκη ανοιχτού κώδικα για την ανάλυση και αναφορά κώδικα γραμμένο σε γλώσσα Java. Τύποι κάλυψης υποστήριξης Emma όπως μέθοδος, γραμμή, βασικό μπλοκ. Είναι βασισμένο σε Java, οπότε δεν έχει εξαρτήσεις εξωτερικής βιβλιοθήκης και μπορεί να έχει πρόσβαση στον πηγαίο κώδικα.
  5. PHPUnit: Το PHPUnit είναι ένα εργαλείο δοκιμής μονάδας για προγραμματιστή PHP. Παίρνει μικρά τμήματα κώδικα που ονομάζονται μονάδες και δοκιμάστε το καθένα ξεχωριστά. Το εργαλείο επιτρέπει επίσης στους προγραμματιστές να χρησιμοποιούν προκαθορισμένες μεθόδους διεκδίκησης για να υποστηρίξουν ότι ένα σύστημα συμπεριφέρεται με συγκεκριμένο τρόπο.

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

Δοκιμή βάσει ανάπτυξης (TDD) & Δοκιμή μονάδας

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

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

Μονάδα δοκιμής μονάδας

Μύθος: Απαιτεί χρόνο και είμαι πάντα προγραμματισμένος. Ο κώδικάς μου είναι στερεός! Δεν χρειάζομαι δοκιμές μονάδας.

Οι μύθοι από τη φύση τους είναι ψευδείς υποθέσεις. Αυτές οι υποθέσεις οδηγούν σε έναν φαύλο κύκλο ως εξής -

Το Truth is Unit testing αυξάνει την ταχύτητα ανάπτυξης.

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

Πλεονέκτημα δοκιμής μονάδας

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

Μειονεκτήματα δοκιμής μονάδας

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

Συνιστάται η δοκιμή μονάδας να χρησιμοποιείται σε συνδυασμό με άλλες δραστηριότητες δοκιμών.

Βέλτιστες πρακτικές δοκιμής μονάδας

  • Οι περιπτώσεις δοκιμής μονάδας πρέπει να είναι ανεξάρτητες. Σε περίπτωση βελτιώσεων ή αλλαγών στις απαιτήσεις, δεν πρέπει να επηρεάζονται οι περιπτώσεις δοκιμής μονάδας.
  • Δοκιμάστε μόνο έναν κωδικό κάθε φορά.
  • Ακολουθήστε σαφείς και συνεπείς συμβάσεις ονομασίας για τις δοκιμές μονάδας σας
  • Σε περίπτωση αλλαγής κώδικα σε οποιαδήποτε ενότητα, βεβαιωθείτε ότι υπάρχει αντίστοιχη μονάδα Test Case για τη μονάδα και ότι η μονάδα περνά τις δοκιμές πριν αλλάξετε την εφαρμογή
  • Τα σφάλματα που εντοπίστηκαν κατά τη δοκιμή μονάδας πρέπει να διορθωθούν πριν προχωρήσουμε στην επόμενη φάση του SDLC
  • Υιοθετήστε μια προσέγγιση "test as your code". Όσο περισσότερος κώδικας γράφετε χωρίς δοκιμή, τόσο περισσότερες διαδρομές πρέπει να ελέγξετε για σφάλματα.

Περίληψη

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