- Δοκιμές μονάδας Vs Δοκιμές ολοκλήρωσης Vs Λειτουργικές δοκιμές
- Τι είναι η δοκιμή μονάδας;
- Τι είναι η δοκιμή ολοκλήρωσης;
- Δοκιμές μονάδας έναντι δοκιμών ολοκλήρωσης
- Λειτουργικές δοκιμές
- Συμπέρασμα
- Συνιστώμενη ανάγνωση
Λεπτομερής σύγκριση των δοκιμών μονάδας, ολοκλήρωσης και λειτουργίας:
Για κάθε εφαρμογή λογισμικού, τόσο οι δοκιμές μονάδας όσο και οι δοκιμές ολοκλήρωσης είναι πολύ σημαντικές, καθώς καθεμία από αυτές χρησιμοποιεί μια μοναδική διαδικασία για τη δοκιμή μιας εφαρμογής λογισμικού.
Αλλά κανένα από τα δύο ή ακόμη και τα δύο δεν μπορεί να αντικαταστήσει τη λειτουργική δοκιμή σε κανένα σημείο.
Δοκιμές μονάδας Vs Δοκιμές ολοκλήρωσης Vs Λειτουργικές δοκιμές
Δοκιμές μονάδας σημαίνει δοκιμή μεμονωμένων ενοτήτων μιας εφαρμογής σε απομόνωση (χωρίς καμία αλληλεπίδραση με εξαρτήσεις) για να επιβεβαιωθεί ότι ο κώδικας κάνει τα πράγματα σωστά.
Δοκιμές ολοκλήρωσης σημαίνει να ελέγχετε αν οι διάφορες ενότητες λειτουργούν καλά όταν συνδυάζονται μαζί ως ομάδα.
Λειτουργικές δοκιμές σημαίνει δοκιμή ενός τμήματος της λειτουργικότητας του συστήματος (μπορεί να αλληλεπιδρά με εξαρτήσεις) για να επιβεβαιωθεί ότι ο κώδικας κάνει τα σωστά πράγματα.
Οι λειτουργικές δοκιμές σχετίζονται με τις δοκιμές ολοκλήρωσης, ωστόσο, υποδηλώνουν τις δοκιμές που ελέγχουν τη λειτουργικότητα ολόκληρης της εφαρμογής με όλο τον κώδικα να εκτελείται μαζί, σχεδόν μια υπερ-δοκιμή ολοκλήρωσης.
Η δοκιμή μονάδας εξετάζει τον έλεγχο ενός μεμονωμένου στοιχείου του συστήματος, ενώ η δοκιμή λειτουργικότητας εξετάζει τον έλεγχο της λειτουργίας μιας εφαρμογής σε σχέση με την προβλεπόμενη λειτουργικότητα που περιγράφεται στην προδιαγραφή των απαιτήσεων του συστήματος. Από την άλλη πλευρά, η δοκιμή ολοκλήρωσης εξετάζει τον έλεγχο των ολοκληρωμένων ενοτήτων του συστήματος.
Και, το σημαντικότερο, για να βελτιστοποιήσετε την απόδοση της επένδυσης (ROI), η βάση του κώδικά σας θα πρέπει να έχει όσο το δυνατόν περισσότερες δοκιμές μονάδας, λιγότερες δοκιμές ολοκλήρωσης και τον ελάχιστο αριθμό λειτουργικών δοκιμών.
Αυτό απεικονίζεται καλύτερα στην ακόλουθη πυραμίδα δοκιμών:
Οι δοκιμές μονάδας είναι ευκολότερες στη συγγραφή και ταχύτερες στην εκτέλεση. Ο χρόνος και η προσπάθεια για την υλοποίηση και τη συντήρηση των δοκιμών αυξάνεται από τη δοκιμή μονάδας στη λειτουργική δοκιμή, όπως φαίνεται στην παραπάνω πυραμίδα.
Παράδειγμα:
Ας κατανοήσουμε αυτούς τους τρεις τύπους δοκιμών με ένα υπεραπλουστευμένο παράδειγμα.
Π.χ. Για ένα λειτουργικό κινητό τηλέφωνο, τα κύρια εξαρτήματα που απαιτούνται είναι η "μπαταρία" και η "κάρτα sim".
Παράδειγμα δοκιμών μονάδας - Η μπαταρία ελέγχεται ως προς τη διάρκεια ζωής της, τη χωρητικότητά της και άλλες παραμέτρους. Η κάρτα sim ελέγχεται ως προς την ενεργοποίησή της.
Παράδειγμα δοκιμών ολοκλήρωσης - Η μπαταρία και η κάρτα sim ενσωματώνονται, δηλαδή συναρμολογούνται για να ξεκινήσει το κινητό τηλέφωνο.
Παράδειγμα λειτουργικής δοκιμής - Η λειτουργικότητα ενός κινητού τηλεφώνου ελέγχεται από την άποψη των χαρακτηριστικών του και της χρήσης της μπαταρίας, καθώς και των δυνατοτήτων της κάρτας sim.
Είδαμε ένα παράδειγμα με απλά λόγια.
Τώρα, ας πάρουμε ένα τεχνικό παράδειγμα μιας σελίδας σύνδεσης:
Σχεδόν κάθε διαδικτυακή εφαρμογή απαιτεί από τους χρήστες/πελάτες της να συνδεθούν. Για το σκοπό αυτό, κάθε εφαρμογή πρέπει να έχει μια σελίδα "Σύνδεση" η οποία να περιλαμβάνει τα εξής στοιχεία:
- Λογαριασμός/Όνομα χρήστη
- Κωδικός πρόσβασης
- Κουμπί σύνδεσης/εγγραφής
Για τη δοκιμή μονάδας, οι περιπτώσεις δοκιμής μπορεί να είναι οι ακόλουθες:
- Μήκος πεδίου - πεδία ονόματος χρήστη και κωδικού πρόσβασης.
- Οι τιμές των πεδίων εισαγωγής πρέπει να είναι έγκυρες.
- Το κουμπί σύνδεσης ενεργοποιείται μόνο αφού εισαχθούν έγκυρες τιμές (Μορφή και κατά μήκος) και στα δύο πεδία.
Για τη δοκιμή ολοκλήρωσης, οι περιπτώσεις δοκιμής μπορεί να είναι οι ακόλουθες:
- Ο χρήστης βλέπει το μήνυμα καλωσορίσματος αφού εισάγει έγκυρες τιμές και πατήσει το κουμπί σύνδεσης.
- Ο χρήστης θα πρέπει να πλοηγείται στη σελίδα καλωσορίσματος ή στην αρχική σελίδα μετά την έγκυρη καταχώρηση και το πάτημα του κουμπιού Σύνδεση.
Τώρα, αφού ολοκληρωθούν οι δοκιμές μονάδας και ολοκλήρωσης, ας δούμε τις πρόσθετες περιπτώσεις δοκιμών που εξετάζονται για λειτουργικές δοκιμές:
- Ελέγχεται η αναμενόμενη συμπεριφορά, δηλαδή αν ο χρήστης είναι σε θέση να συνδεθεί κάνοντας κλικ στο κουμπί σύνδεσης, αφού εισάγει ένα έγκυρο όνομα χρήστη και έναν έγκυρο κωδικό πρόσβασης.
- Υπάρχει ένα μήνυμα καλωσορίσματος που πρέπει να εμφανιστεί μετά την επιτυχή σύνδεση;
- Υπάρχει ένα μήνυμα σφάλματος που θα πρέπει να εμφανίζεται σε περίπτωση άκυρης σύνδεσης;
- Υπάρχουν αποθηκευμένα cookies ιστότοπου για τα πεδία σύνδεσης;
- Μπορεί να συνδεθεί ένας απενεργοποιημένος χρήστης;
- Υπάρχει σύνδεσμος 'ξεχάσατε τον κωδικό πρόσβασης' για τους χρήστες που έχουν ξεχάσει τους κωδικούς τους;
Υπάρχουν πολύ περισσότερες τέτοιες περιπτώσεις που έρχονται στο μυαλό ενός λειτουργικού ελεγκτή κατά την εκτέλεση λειτουργικών δοκιμών. Αλλά ένας προγραμματιστής δεν μπορεί να λάβει υπόψη του όλες τις περιπτώσεις κατά την κατασκευή περιπτώσεων δοκιμών μονάδας και ολοκλήρωσης.
Έτσι, υπάρχουν πολλά σενάρια που δεν έχουν ακόμη δοκιμαστεί, ακόμη και μετά τις δοκιμές μονάδας και ολοκλήρωσης.
Τώρα ήρθε η ώρα να εξετάσουμε μία προς μία τις δοκιμές μονάδας, ολοκλήρωσης και λειτουργίας.
Τι είναι η δοκιμή μονάδας;
Όπως υποδηλώνει το όνομα, αυτό το επίπεδο περιλαμβάνει τη δοκιμή μιας "Μονάδας".
Εδώ μονάδα μπορεί να είναι το μικρότερο μέρος μιας εφαρμογής που μπορεί να ελεγχθεί, είτε πρόκειται για την μικρότερη μεμονωμένη λειτουργία, μέθοδο κ.λπ. Οι προγραμματιστές λογισμικού είναι αυτοί που γράφουν τις περιπτώσεις ελέγχου μονάδας. Ο στόχος εδώ είναι να αντιστοιχίσουν τις απαιτήσεις και την αναμενόμενη συμπεριφορά της μονάδας.
Ακολουθούν μερικά σημαντικά σημεία σχετικά με τον έλεγχο μονάδας και τα οφέλη του:
- Οι δοκιμές μονάδας πραγματοποιούνται πριν από τις δοκιμές ολοκλήρωσης από τους προγραμματιστές λογισμικού χρησιμοποιώντας τεχνικές δοκιμών λευκού κουτιού.
- Η δοκιμή μονάδας δεν ελέγχει μόνο τη θετική συμπεριφορά, δηλαδή τη σωστή έξοδο σε περίπτωση έγκυρης εισόδου, αλλά και τις αποτυχίες που εμφανίζονται με άκυρη είσοδο.
- Η εύρεση προβλημάτων/σφαλμάτων σε πρώιμο στάδιο είναι πολύ χρήσιμη και μειώνει το συνολικό κόστος του έργου. Καθώς ο έλεγχος μονάδας γίνεται πριν από την ενσωμάτωση του κώδικα, τα προβλήματα που εντοπίζονται σε αυτό το στάδιο μπορούν να επιλυθούν πολύ εύκολα και ο αντίκτυπός τους είναι επίσης πολύ μικρότερος.
- Μια δοκιμή μονάδας δοκιμάζει μικρά κομμάτια κώδικα ή μεμονωμένες λειτουργίες, έτσι ώστε τα ζητήματα/λάθη που εντοπίζονται σε αυτές τις περιπτώσεις δοκιμής να είναι ανεξάρτητα και να μην επηρεάζουν τις άλλες περιπτώσεις δοκιμής.
- Ένα άλλο σημαντικό πλεονέκτημα είναι ότι οι περιπτώσεις δοκιμών μονάδας απλοποιούν και διευκολύνουν τον έλεγχο του κώδικα. Έτσι, γίνεται ευκολότερη η επίλυση των προβλημάτων και σε μεταγενέστερο στάδιο, καθώς πρέπει να ελεγχθεί μόνο η τελευταία αλλαγή στον κώδικα.
- Η δοκιμή μονάδας εξοικονομεί χρόνο και κόστος και είναι επαναχρησιμοποιήσιμη και εύκολη στη συντήρηση.
Τα JUnit (πλαίσιο Java), PHPUnit (πλαίσιο PHP), NUnit (.Net framework) κ.λπ. είναι δημοφιλή εργαλεία ελέγχου μονάδας που χρησιμοποιούνται για διάφορες γλώσσες.
Τι είναι η δοκιμή ολοκλήρωσης;
Η δοκιμή ολοκλήρωσης είναι η δοκιμή της ολοκλήρωσης διαφορετικών τμημάτων του συστήματος μεταξύ τους. Δύο διαφορετικά τμήματα ή ενότητες του συστήματος πρώτα ενσωματώνονται και στη συνέχεια πραγματοποιείται δοκιμή ολοκλήρωσης.
Σκοπός των δοκιμών ολοκλήρωσης είναι να ελεγχθεί η λειτουργικότητα, η αξιοπιστία και η απόδοση του συστήματος όταν αυτό ενσωματώνεται.
Η δοκιμή ολοκλήρωσης εκτελείται στις ενότητες που δοκιμάζονται πρώτα κατά μονάδα και, στη συνέχεια, η δοκιμή ολοκλήρωσης καθορίζει αν ο συνδυασμός των ενοτήτων δίνει την επιθυμητή έξοδο ή όχι.
Η δοκιμή ολοκλήρωσης μπορεί να γίνει είτε από ανεξάρτητους ελεγκτές είτε από προγραμματιστές.
Υπάρχουν 3 διαφορετικοί τύποι προσεγγίσεων δοκιμών ολοκλήρωσης. Ας συζητήσουμε εν συντομία κάθε έναν από αυτούς:
α) Προσέγγιση ολοκλήρωσης της Μεγάλης Έκρηξης
Σε αυτή την προσέγγιση, όλες οι ενότητες ή μονάδες ενσωματώνονται και δοκιμάζονται ως σύνολο ταυτόχρονα. Αυτό γίνεται συνήθως όταν ολόκληρο το σύστημα είναι έτοιμο για δοκιμή ολοκλήρωσης σε ένα μόνο χρονικό σημείο.
Μην συγχέετε αυτή την προσέγγιση της δοκιμής ολοκλήρωσης με τη δοκιμή συστήματος, δοκιμάζεται μόνο η ολοκλήρωση των ενοτήτων ή μονάδων και όχι ολόκληρο το σύστημα, όπως γίνεται στη δοκιμή συστήματος.
Η προσέγγιση της μεγάλης έκρηξης πλεονέκτημα είναι ότι όλα τα ενσωματωμένα δοκιμάζονται ταυτόχρονα.
Ένα σημαντικό μειονέκτημα είναι ότι καθίσταται δύσκολος ο εντοπισμός των αστοχιών.
Παράδειγμα: Στο παρακάτω σχήμα, οι Μονάδες 1 έως 6 ενσωματώνονται και δοκιμάζονται με την προσέγγιση του Big bang.
β) Προσέγγιση από πάνω προς τα κάτω
Η ενσωμάτωση των μονάδων/μονάδων δοκιμάζεται βήμα προς βήμα από το ανώτερο προς το κατώτερο επίπεδο.
Η πρώτη μονάδα δοκιμάζεται μεμονωμένα με τη συγγραφή STUBS δοκιμών. Μετά από αυτό, τα χαμηλότερα επίπεδα ενσωματώνονται ένα προς ένα, μέχρι να συγκεντρωθεί και να δοκιμαστεί το τελευταίο επίπεδο.
Η προσέγγιση "από πάνω προς τα κάτω" είναι ένας πολύ οργανικός τρόπος ολοκλήρωσης, καθώς συνάδει με τον τρόπο που συμβαίνουν τα πράγματα στο πραγματικό περιβάλλον.
Το μόνο ανησυχία με αυτή την προσέγγιση είναι ότι η κύρια λειτουργικότητα δοκιμάζεται στο τέλος.
γ) Προσέγγιση από κάτω προς τα πάνω
Οι μονάδες/μονάδες δοκιμάζονται από το κατώτερο προς το ανώτερο επίπεδο, βήμα προς βήμα, έως ότου όλα τα επίπεδα μονάδων/μονάδων ενσωματωθούν και δοκιμαστούν ως μία μονάδα. Τα προγράμματα διεγέρτη που ονομάζονται ΟΔΗΓΟΙ Είναι ευκολότερο να εντοπιστούν ζητήματα ή σφάλματα στα χαμηλότερα επίπεδα.
Το σημαντικότερο μειονέκτημα αυτής της προσέγγισης είναι ότι τα ζητήματα υψηλότερου επιπέδου μπορούν να εντοπιστούν μόνο στο τέλος, όταν όλες οι μονάδες έχουν ενσωματωθεί.
Δοκιμές μονάδας έναντι δοκιμών ολοκλήρωσης
Αφού συζητήσαμε αρκετά για τις δοκιμές μονάδας και τις δοκιμές ολοκλήρωσης, ας δούμε γρήγορα τις διαφορές μεταξύ των δύο στον ακόλουθο πίνακα:
Δοκιμές μονάδας | Δοκιμές ενσωμάτωσης |
---|---|
Δοκιμάζει το μεμονωμένο στοιχείο ολόκληρου του συστήματος, δηλαδή δοκιμάζει μια μονάδα μεμονωμένα. | Δοκιμάζει τα στοιχεία του συστήματος που συνεργάζονται, δηλαδή δοκιμάζει τη συνεργασία πολλαπλών μονάδων. |
Γρηγορότερη εκτέλεση | Μπορεί να τρέξει αργά |
Καμία εξωτερική εξάρτηση. Οποιαδήποτε εξωτερική εξάρτηση είναι παρωδία ή αποκομμένη. | Απαιτεί αλληλεπίδραση με εξωτερικές εξαρτήσεις (π.χ. βάση δεδομένων, υλικό κ.λπ.) |
Απλό | Σύνθετο |
Διεξάγεται από τον προγραμματιστή | Διεξάγεται από τον ελεγκτή |
Είναι ένας τύπος δοκιμών λευκού κουτιού | Πρόκειται για ένα είδος δοκιμών "μαύρου κουτιού". |
Πραγματοποιείται στην αρχική φάση των δοκιμών και στη συνέχεια μπορεί να εκτελεστεί ανά πάσα στιγμή. | Πρέπει να πραγματοποιείται μετά τη δοκιμή μονάδας και πριν από τη δοκιμή συστήματος |
Φτηνή συντήρηση | Ακριβή συντήρηση |
Ξεκινά από τις προδιαγραφές της ενότητας | Ξεκινά από τις προδιαγραφές της διεπαφής |
Η δοκιμή μονάδας έχει στενό πεδίο εφαρμογής, καθώς ελέγχει απλώς αν κάθε μικρό κομμάτι κώδικα κάνει αυτό που πρέπει να κάνει. | Έχει ευρύτερο πεδίο εφαρμογής, καθώς καλύπτει το σύνολο της εφαρμογής |
Το αποτέλεσμα των δοκιμών μονάδας είναι η λεπτομερής ορατότητα του κώδικα | Το αποτέλεσμα των δοκιμών ολοκλήρωσης είναι η λεπτομερής ορατότητα της δομής ολοκλήρωσης. |
Αποκαλύπτει τα ζητήματα που αφορούν μόνο τη λειτουργικότητα των επιμέρους ενοτήτων. Δεν αποκαλύπτει σφάλματα ολοκλήρωσης ή ζητήματα σε επίπεδο συστήματος. | Αποκαλύψτε τα σφάλματα που προκύπτουν όταν οι διάφορες ενότητες αλληλεπιδρούν μεταξύ τους για να σχηματίσουν το συνολικό σύστημα. |
Λειτουργικές δοκιμές
Μια τεχνική δοκιμών μαύρου κουτιού, κατά την οποία η λειτουργικότητα της εφαρμογής ελέγχεται ώστε να παράγει την επιθυμητή έξοδο με την παροχή μιας συγκεκριμένης εισόδου, ονομάζεται "Λειτουργική δοκιμή".
Στις διαδικασίες δοκιμής λογισμικού που εφαρμόζουμε, αυτό γίνεται με τη συγγραφή περιπτώσεων δοκιμής σύμφωνα με τις απαιτήσεις και τα σενάρια. Για κάθε λειτουργικότητα, ο αριθμός των περιπτώσεων δοκιμής που γράφονται μπορεί να ποικίλλει από μία έως πολλές.
Συμπέρασμα
Και οι τρεις αυτοί τύποι δοκιμών συσχετίζονται μεταξύ τους.
Για την επίτευξη πλήρους κάλυψης, απαιτείται η ύπαρξη δοκιμών μονάδας για τις διαδρομές/γραμμές κώδικα, λειτουργικών δοκιμών και δοκιμών ολοκλήρωσης για τη διασφάλιση ότι οι "μονάδες" λειτουργούν μαζί με συνοχή.
Ελπίζω αυτό το άρθρο να σας έδωσε μια σαφή ιδέα για τις δοκιμές μονάδας, ολοκλήρωσης και λειτουργικότητας μαζί με τις διαφορές τους, αν και υπάρχουν πολλά περισσότερα σε αυτές τις μορφές δοκιμών!!