Δοκιμή Λογισμικού

Unit Testing Tutorial για αρχάριους

30 Οκτωβρίου 2021

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

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

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

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

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

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

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

Επίπεδα δοκιμών:

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

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

Ταχύτερος και πιο αποτελεσματικός τρόπος δοκιμών:

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

Ελεγχος ποιότητας:

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

Κάνει τον κώδικα διαχειρίσιμο και πιο άνετο στην επεξεργασία:

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

Πιο φυσικό να εντοπίσουμε το πρόβλημα:

Ένας άλλος ουσιαστικός σκοπός της δοκιμής μονάδας είναι να παρέχει πληροφορίες σχετικά με τον αντίκτυπο των αλλαγών στη διαδικασία ανάπτυξης, όπως αλλαγές στη διεπαφή χρήστη ή την εφαρμογή νέων λειτουργιών. Με βάση την αποτυχία των δοκιμαστικών περιπτώσεων, το Unit Test Framework βοηθά επίσης στη διακοπή των σχετικών δοκιμών.

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

  • Ακόμη και οι πιο έμπειροι προγραμματιστές συμφωνούν ότι είναι καλή ιδέα να εξασκηθείτε στη δοκιμή μονάδων. Το Unit Testing επιτρέπει στους προγραμματιστές να υπολογίσουν εκ νέου τον κώδικα σε μεταγενέστερο χρονικό σημείο και να κάνουν τη λειτουργική μονάδα.
  • Ένα από τα πιο σημαντικά πλεονεκτήματα της δοκιμής μονάδας είναι ότι ο προγραμματιστής μπορεί να χρησιμοποιήσει εργαλεία και πλαίσια δοκιμών.
  • Η δοκιμή μονάδας καθιστά ασφαλέστερη και πιο άνετη την ανανέωση κώδικα, επειδή εισάγει δοκιμές που διασφαλίζουν ότι η αναδιαμόρφωση εκτελείται ομαλά ή χωρίς διακοπές.
  • Η δοκιμή μονάδας οδηγεί επίσης σε λογισμικό που είναι ευκολότερο να διατηρηθεί σε όλη τη διάρκεια του κύκλου ζωής του λογισμικού και λιγότερο επιρρεπές σε σφάλματα όταν προστίθενται νέες δυνατότητες ή ενημερώσεις.
  • Η δοκιμή μονάδας παρέχει μια σαφή και συνοπτική περιγραφή του σχεδιασμού και των προδιαγραφών ενός προϊόντος ή μιας υπηρεσίας με τη μορφή εκτέλεσης. Χρησιμοποιώντας δοκιμές μονάδας για προδιαγραφές σχεδιασμού, κατανοούμε καλύτερα τι πρέπει να ελέγξουμε την εφαρμογή και τι να χρησιμοποιήσουμε για δοκιμή.
  • Οι δοκιμές μονάδας χρειάζονται δυσανάλογο χρόνο σε σύγκριση με τον κωδικό που δοκιμάστηκε. Για παράδειγμα, εάν το κόστος σύνταξης μιας δοκιμής μονάδας είναι 2 λεπτά, αλλά το κόστος εκτέλεσής της είναι σχεδόν μηδενικό ή η τιμή της μη αυτόματης δοκιμής του κώδικα είναι 1 λεπτό, τότε σπάστε το νεκρό σημείο αν ο προγραμματιστής εκτελέσει τη δοκιμή εις διπλούν. Η χρήση δοκιμών μονάδας αντί για μη αυτόματες επιθεωρήσεις ολόκληρης της βάσης κώδικα σημαίνει ότι ο προγραμματιστής μειώνει το συνολικό κόστος του έργου.
  • Ένας κακώς γραμμένος κώδικας μπορεί να είναι αδύνατο ή δύσκολο να δοκιμαστεί σε μονάδα, και επομένως η δοκιμή μονάδας μπορεί να αναγκάσει τους προγραμματιστές να δομήσουν καλύτερα τις λειτουργίες και τα αντικείμενα. Η δοκιμή μονάδας κάνει έναν κώδικα όσο τέλειο μπορεί να είναι. Ο προγραμματιστής πρώτα γράφει τη δοκιμή μονάδας, παρατηρεί ότι αποτυγχάνει, στη συνέχεια γράφει μια δεύτερη δοκιμή για να την περάσει και ο κύκλος επαναλαμβάνεται μέχρι να παραδοθεί η προβλεπόμενη λειτουργικότητα.

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

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

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

    Τεχνική Black Box: Μαύρο κουτί Η τεχνική είναι μια μέθοδος δοκιμής μονάδας όπου το SUT (υπό δοκιμή λογισμικό) είναι η λειτουργικότητα μιας εφαρμογής χωρίς να παρακολουθεί την υλοποίηση, την εσωτερική δομή ή τον κώδικα. Η τεχνική του μαύρου κουτιού εστιάζει στην είσοδο και την έξοδο αντί στον εσωτερικό κώδικα ή γνώση.Τεχνική White Box:Σε Ασπρο κουτί Τεχνική, ο ελεγκτής γνωρίζει τα εσωτερικά του κώδικα, τη δομή σε αυτήν τη μέθοδο, την εσωτερική δομή και το έργο του κώδικα, όχι τη λειτουργικότητα. Κατά προτίμηση, ο ελεγκτής θα πρέπει να έχει εξαιρετικές δεξιότητες προγραμματισμού ως εσωτερική προοπτική της ενότητας και οι δεξιότητες προγραμματισμού δοκιμάζονται.Τεχνική Grey Box: Γκρι κουτί Η τεχνική έχει μερική γνώση του κώδικα. Αυτή η δοκιμή βελτιώνει την ακατάλληλη δομή κώδικα ή τη χρήση ακατάλληλης λειτουργίας μιας εφαρμογής. Είναι ένας συνδυασμός τεχνικών μαύρου και λευκού κουτιού. Είναι ένας ισχυρός τρόπος δοκιμής μιας μονάδας.

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

  • Nunit : Μία από τις οικογένειες της οικογένειας xunit, το Nunit είναι μια δοκιμή μονάδας ανοιχτού κώδικα που έχει σχεδιαστεί για . ΚΑΘΑΡΑ και το Mono Framework είναι το πιο χρησιμοποιούμενο εργαλείο για τη γραφή δοκιμών μονάδων.
  • Jmockit : Το JMockit είναι μια άλλη βιβλιοθήκη λογισμικού ανοιχτού κώδικα. Περιλαμβάνει API για κοροϊδία, παραποίηση και δοκιμές ενσωμάτωσης και ένα εργαλείο κάλυψης κώδικα. Η βιβλιοθήκη πρόκειται να χρησιμοποιηθεί μαζί με ένα πλαίσιο δοκιμών όπως το JUnit ή το Nunit.
  • Junit: Ακριβώς όπως το Nunit, είναι μια μονάδα ανοιχτού κώδικα που δοκιμάζει αλλά έχει σχεδιαστεί για Java. Είναι επίσης από την οικογένεια των Ξουνίτ. Χρησιμοποιείται για προγραμματιστές για τη σύνταξη επαναλαμβανόμενων δοκιμών, έχει ισχυρή βάση για δοκιμές μονάδων.
  • Τυπογραφείο : Το TypeMock μπορεί να κοροϊδεύει σχεδόν τα πάντα μέσω διεπαφών. Επιπλέον, είναι δυνατό να κοροϊδέψουμε στατικές μεθόδους και κλάσεις που ένα τυπικό εργαλείο ανοιχτού κώδικα δεν μπορεί να κοροϊδέψει. Τα πρότυπα τακτοποίησης, δράσης, επιβεβαίωσης και δοκιμής εφαρμόζονται και κατασκευάζονται μονωτές από αυτά.
  • Embunit : Το Embedded Unit Test Framework Embunit είναι ένα νέο πλαίσιο για ενσωματωμένα συστήματα. Έχει σχεδιαστεί ως πλαίσιο δοκιμής για εφαρμογές λογισμικού γραμμένες σε C /C++ και υποστηρίζει όλες τις γλώσσες δικτύου. Αυτό το πλαίσιο εξυπηρετεί τον ίδιο σκοπό με το JUnit στην Java, αλλά με διαφορετικό στόχο: να χρησιμεύσει ως πλαίσιο δοκιμών ανοιχτού κώδικα, μεταξύ πλατφορμών.

Συμβουλές δοκιμής μονάδας:

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

Σχετικά θέματα

Έλεγχος ολοκλήρωσης Δοκιμή συστήματος Δοκιμή αποδοχής