Τι είναι το Test Harness; (Παραδείγματα)
⚡ Έξυπνη Σύνοψη
Το Test Harness στις Δοκιμές Λογισμικού συνδυάζει stubs, προγράμματα οδήγησης, δεδομένα δοκιμών και εργαλεία εκτέλεσης, έτσι ώστε οι ομάδες να επικυρώνουν τις ενότητες πριν από την εμφάνιση κάθε εξάρτησης, μετατρέποντας τους αποκλεισμένους κύκλους δοκιμών σε επαναλήψιμη, αυτοματοποιημένη επαλήθευση που αναφέρει αποτελέσματα χωρίς χειροκίνητη προσπάθεια.

Δοκιμαστική πλεξούδα στη δοκιμή λογισμικού
Δοκιμαστική πλεξούδα στη δοκιμή λογισμικού είναι μια συλλογή από στελέχη, προγράμματα οδήγησης και άλλα υποστηρικτικά εργαλεία που απαιτούνται για την αυτοματοποίηση της εκτέλεσης της δοκιμής. Η εξάρτηση δοκιμής εκτελεί δοκιμές χρησιμοποιώντας μια βιβλιοθήκη δοκιμών και δημιουργεί αναφορές δοκιμών. Η δοκιμαστική πλεξούδα περιέχει όλες τις πληροφορίες που απαιτούνται για τη μεταγλώττιση και εκτέλεση μιας δοκιμής, όπως περιπτώσεις δοκιμής, θύρα ανάπτυξης στόχου (TDP), αρχείο προέλευσης υπό δοκιμή, στελέχη κ.λπ.
Με απλά λόγια, μια καλωδίωση περιβάλλει το στοιχείο που θέλετε να επαληθεύσετε μέσα σε ένα ελεγχόμενο περιβάλλον. Οι γειτονικές μονάδες που λείπουν αντικαθίστανται από μικρά εικονικά προγράμματα, οι είσοδοι προέρχονται από ένα σταθερό σύνολο δεδομένων και κάθε αποτέλεσμα καταγράφεται σε ένα αρχείο καταγραφής αντί να διαβάζεται από μια οθόνη. Οι ενότητες που ακολουθούν εξηγούν γιατί οι ομάδες κατασκευάζουν ένα, από τι είναι κατασκευασμένο, πώς λειτουργεί και πού ταιριάζει.
Γιατί να χρησιμοποιήσετε το Test Harness;
Υπάρχει μια καλωδίωση για να αφαιρεθεί η αναμονή από τον κύκλο δοκιμών. Επειδή προσομοιώνει οτιδήποτε δεν είναι ακόμα έτοιμο, ένα δοκιμές λογισμικού Η ομάδα μπορεί να ξεκινήσει την επαλήθευση της συμπεριφοράς στο πρώτο σπριντ και όχι μετά την τελική ενσωμάτωση. Το παρακάτω διάγραμμα δείχνει πού βρίσκεται μια καλωδίωση μεταξύ των σεναρίων δοκιμών και της εφαρμογής που δοκιμάζεται.
- Αυτοματοποιήστε τη διαδικασία δοκιμής
- Εκτελέστε δοκιμαστικές σειρές δοκιμών
- Δημιουργήστε σχετικές αναφορές δοκιμών
- Υποστήριξη για αποσφαλμάτωση
- Για να καταγράψετε τα αποτελέσματα των δοκιμών για κάθε ένα από τα τεστ
- Βοηθά τους προγραμματιστές να μετρήσουν την κάλυψη κώδικα σε επίπεδο κώδικα
- Αύξηση της παραγωγικότητας του συστήματος μέσω της αυτοματοποίησης
- Βελτιώστε την ποιότητα των στοιχείων λογισμικού και της εφαρμογής
- Για τον χειρισμό της περίπλοκης συνθήκης που οι δοκιμαστές δυσκολεύονται να προσομοιώσουν
Αυτά τα οφέλη έχουν τη μεγαλύτερη σημασία σε σύντομους κύκλους κυκλοφορίας. Όταν ο κώδικας αποστέλλεται αρκετές φορές την εβδομάδα, ένα ελάττωμα που επιβιώνει μέχρι το στάδιο της ενσωμάτωσης κοστίζει πολύ περισσότερο. tracπερισσότερο από ένα που πιάστηκε ενάντια σε ένα απόκομμα την ημέρα που γράφτηκε. Αυτή η ανταμοιβή έρχεται μόνο όταν η εξάρτυση συναρμολογηθεί από τα σωστά μέρη.
Βασικά στοιχεία μιας καλωδίωσης δοκιμής
Μια καλωδίωση δεν είναι ένα μόνο πρόγραμμα, αλλά ένα σύνολο εξαρτημάτων, καθένα από τα οποία αφαιρεί ένα εμπόδιο που διαφορετικά θα εμπόδιζε την εκτέλεση μιας δοκιμής χωρίς επίβλεψη.
- Σενάρια δοκιμών: Αυτόματες οδηγίες που αναφέρουν τα βήματα που πρέπει να εκτελεστούν και το αναμενόμενο αποτέλεσμα, γραμμένες σύμφωνα με τις οδηγίες. σενάριο δοκιμής συμβάσεις.
- Μηχανή εκτέλεσης δοκιμών: Ο εκτελεστής που διαβάζει τα σενάρια με τη σειρά, επιλύει τις εξαρτήσεις και ενεργοποιεί τη διαδοχική ή παράλληλη εκτέλεση.
- Αποθετήριο δεδομένων δοκιμών: Τιμές εισόδου που διατηρούνται εκτός του σεναρίου σε CSV, JSON, XML ή σε μια βάση δεδομένων με seed, και συχνά συμπληρώνονται από δοκιμαστικά εργαλεία παραγωγής δεδομένων.
- Οι οδηγοί: Εικονικές κλήσεις μονάδων που καλούν το υπό δοκιμή στοιχείο όταν το πραγματικό ανώτερο επίπεδο, όπως μια διεπαφή χρήστη, δεν έχει ολοκληρωθεί.
- Στερεά: Ο Dummy κάλεσε ενότητες που επέστρεφαν προκαθορισμένες απαντήσεις, για παράδειγμα μια υπηρεσία πληρωμών που απαντούσε «Επιτυχής πληρωμή» χωρίς να επικοινωνήσει με μια τράπεζα.
- Επικυρωτής εξόδου: Λογική ισχυρισμού που συγκρίνει την πραγματική έξοδο με την αναμενόμενη τιμή και βαθμολογεί κάθε περίπτωση ως επιτυχή ή αποτυχημένη.
- Επίπεδο καταγραφής και αναφοράς: Χρονικές σημάνσεις, στιγμιότυπα οθόνης, έξοδος κονσόλας και μια σύνοψη εκτέλεσης που καταγράφουν κάθε αποτυχία tracεφικτό στη συνέχεια.
Αφαιρέστε οποιοδήποτε εξάρτημα και η καλωδίωση σταματά να είναι αυτόματη, επειδή κάτι πρέπει να παρέχεται χειροκίνητα σε κάθε διαδρομή.
Πώς λειτουργεί μια δοκιμαστική καλωδίωση;
Μια καλωδίωση επαναλαμβάνει τον ίδιο βρόχο σε κάθε εκτέλεση. Γνωρίζοντας αυτόν τον βρόχο, σας λέει ακριβώς πού βρίσκεται ο δικός σας δοκιμές αυτοματισμού συνδέονται τα στοιχεία και ποιο βήμα αποτυγχάνει όταν μια εκτέλεση γίνεται κόκκινη.
- Προετοιμάστε το περιβάλλον: Η καλωδίωση επιλύει τη διαμόρφωση του περιβάλλοντος, ανοίγει συνδέσεις και φορτώνει εξαρτήματα, έτσι ώστε κάθε εκτέλεση να ξεκινά από την ίδια γνωστή κατάσταση.
- Φόρτωση των δοκιμαστικών σεναρίων: Τα σενάρια, οι παράμετροι και τα αναμενόμενα αποτελέσματα διαβάζονται από το αποθετήριο. Δεν πληκτρολογείται τίποτα κατά τον χρόνο εκτέλεσης, γεγονός που καθιστά μια δεύτερη εκτέλεση συγκρίσιμη με την πρώτη.
- Αντικαταστήστε τις ενότητες που λείπουν: Οι οδηγοί αντικαθιστούν τους καλούντες που δεν υπάρχουν ακόμη και τα stubs αντικαθιστούν τις υπηρεσίες που είναι ημιτελείς, ασταθείς ή δαπανηρές στην κλήση.
- Κλήση της εφαρμογής υπό δοκιμή: Η μηχανή εκτέλεσης ενεργοποιεί τη ροή εργασίας που περιγράφεται από το σενάριο, είτε πρόκειται για κλήση μεθόδου, είτε για API αίτημα ή μια αλληλεπίδραση με το πρόγραμμα περιήγησης.
- Καταγράψτε την πραγματική έξοδο: Οι τιμές επιστροφής, τα ωφέλιμα φορτία απόκρισης, οι γραμμές βάσης δεδομένων, οι γραμμές καταγραφής και η κατάσταση οθόνης καταγράφονται όλα καθώς παράγονται.
- Συγκρίνετε με τα αναμενόμενα αποτελέσματα: Ο επικυρωτής εξόδου κάνει επιβεβαίωση για κάθε καταγεγραμμένη τιμή. Οποιαδήποτε αναντιστοιχία επισημαίνει την περίπτωση ως αποτυχημένη και καταγράφει τόσο την αναμενόμενη όσο και την παρατηρούμενη τιμή.
- Καταγραφή και αναφορά: Η καλωδίωση γράφει μια χρονική σήμανση trace της εκτέλεσης και δημιουργεί μια αναφορά επιτυχίας/αποτυχίας την οποία ένας προγραμματιστής μπορεί να διαβάσει χωρίς να εκτελέσει ξανά τίποτα.
- Κρημνίζω: Τα προσωρινά δεδομένα, οι συνδέσεις και η κατάσταση stub διαγράφονται, επομένως η επόμενη περίπτωση δεν μπορεί να κληρονομήσει υπόλειμμα από αυτήν.
💡 Συμβουλές: Ανανεώνετε τα stub σας κάθε φορά που αλλάζει η πραγματική ενότητα. Ένα stub που εξακολουθεί να απαντά με τη μορφή του τελευταίου τριμήνου θα αναφέρει μια πράσινη εκτέλεση ενώ η ζωντανή ενσωμάτωση έχει ήδη διακοπεί.
Ένα λειτουργικό παράδειγμα καθιστά τον βρόχο συγκεκριμένο. Ας υποθέσουμε ότι η σελίδα ολοκλήρωσης αγοράς είναι έτοιμη, αλλά η πύλη πληρωμής όχι. Ένας οδηγός ενεργοποιεί το αίτημα που θα έστελνε κανονικά η διεπαφή, ένα stub απαντά πρώτα με την ένδειξη "Επιτυχής πληρωμή" και στη συνέχεια με χρονικό όριο, και ο επικυρωτής επιβεβαιώνει την παραγγελία στη μία περίπτωση και μια προτροπή επανάληψης στην άλλη. Και οι δύο διαδρομές επαληθεύονται πριν η ομάδα πύλης γράψει μια γραμμή κώδικα.
Υπάρχουν δύο περιβάλλοντα όπου χρησιμοποιείται το Test Harness
Ο ίδιος μηχανισμός εξυπηρετεί δύο διαφορετικούς σκοπούς και το λεξιλόγιο αλλάζει ελαφρώς ανάλογα με τον έναν από αυτούς.
- Δοκιμή αυτοματισμού: Περιέχει το δοκιμαστικά σενάρια, τις απαραίτητες παραμέτρους για την εκτέλεση αυτών των σεναρίων και τη συλλογή αποτελεσμάτων για την ανάλυσή τους
- Δοκιμή ενοποίησης: Χρησιμοποιείται για να συνδυάσει δύο μονάδες κώδικα ή μονάδα που αλληλεπιδρούν μεταξύ τους για να ελέγξει εάν η συνδυασμένη συμπεριφορά είναι η αναμενόμενη ή όχι
Θεωρήστε μια ενότητα σύνδεσης και μια ενότητα προφίλ που πρέπει να ανταλλάξουν ένα διακριτικό χρήστη. Στο πλαίσιο της ενσωμάτωσης, ένας οδηγός προσομοιώνει μια επιτυχημένη σύνδεση και παραδίδει το διακριτικό στη λογική προφίλ, έτσι ώστε ο χάρτης δεδομένωνping, ο έλεγχος δικαιωμάτων και η απόδοση της οθόνης μπορούν να επαληθευτούν πριν ολοκληρωθεί η πραγματική υπηρεσία ελέγχου ταυτότητας. Στο πλαίσιο αυτοματισμού, το ίδιο ζεύγος περιπτώσεων προστίθεται σε μια σουίτα και εκτελείται ξανά σε κάθε έκδοση χωρίς να την αγγίξει ξανά κανείς.
Τύποι ιμάντων δοκιμής
Επειδή το λογισμικό είναι ενσωματωμένο σε επίπεδα, μια καλωδίωση συνήθως εξειδικεύεται στο επίπεδο που επαληθεύει. Τέσσερις τύποι καλύπτουν σχεδόν κάθε έργο.
A καλωδίωση δοκιμής μονάδας ασκεί τα μικρότερα κομμάτια κώδικα, όπως μια μεμονωμένη συνάρτηση ή μέθοδο, με κάθε εξάρτηση να αντικαθίσταται από ένα stub. Είναι το πιο γρήγορο στην εκτέλεση και το πιο φθηνό στη συντήρηση, γι' αυτό και δοκιμή μονάδας Οι σουίτες είναι συνήθως η πρώτη εξάρτηση που κατασκευάζει μια ομάδα. Η δοκιμή ενός υπολογισμού φόρου χωρίς να αγγίξετε τη μονάδα χρέωσης είναι μια τυπική χρήση.
An καλωδίωση δοκιμής ολοκλήρωσης ελέγχει ότι δύο ή περισσότερες μονάδες συνεργάζονται σωστά και είναι το επίπεδο όπου εμφανίζονται αναντιστοιχίες δεδομένων και αποτυχημένες κλήσεις. Είναι η καλωδίωση που περιγράφεται στο δοκιμή ολοκλήρωσης στο παραπάνω πλαίσιο, για παράδειγμα επαλήθευση ότι μια υπηρεσία παραγγελιών παραδίδει το σωστό ωφέλιμο φορτίο σε μια υπηρεσία πληρωμών.
A καλωδίωση δοκιμής συστήματος οδηγεί μια πλήρη ροή από άκρο σε άκρο σε διεπαφή, υπηρεσία και βάση δεδομένων, έτσι δοκιμή συστήματος μπορεί να επιβεβαιώσει ότι οι επιχειρηματικοί κανόνες ισχύουν όταν υπάρχει κάθε επίπεδο. Ένα δέσμη δοκιμής παλινδρόμησης στη συνέχεια, εκτελεί ξανά τη συσσωρευμένη σουίτα μετά από κάθε αλλαγή, η οποία είναι αυτή που κάνει δοκιμή παλινδρόμησης πρακτικό όταν αρκετές εκατοντάδες σενάρια πρέπει να επαναληφθούν σε κάθε συγχώνευση.
Εργαλεία καλωδίωσης δοκιμής
Κάθε ένας από αυτούς τους τύπους συνήθως βασίζεται σε ένα υπάρχον εργαλείο και όχι από την αρχή. Οι δύο κλασικές επιλογές παραμένουν τα πλαίσια σε επίπεδο μονάδας:
- Junit: Εργαλείο που χρησιμοποιείται κατά τη χρήση Java
- Nunit: Εργαλείο που χρησιμοποιείται για χρήση .Πλαίσιο δικτύου
Πέρα από αυτά τα δύο, οι περισσότερες ομάδες προσθέτουν εργαλεία που επεκτείνουν την καλωδίωση στο πρόγραμμα περιήγησης, στο επίπεδο API ή στο προφίλ φόρτωσης. Ο παρακάτω πίνακας αντιστοιχίζει τις κοινές επιλογές με τον ρόλο που παίζει το καθένα.
| Εργαλείο | καλυτερα suited for | Ρόλος μέσα στην πλεξούδα |
|---|---|---|
| JUnit | Java σουίτες μονάδων και ενοποιήσεων | Προμήθειες, προγράμματα οδήγησης και εξαρτήματα |
| Μονάδα | Κώδικας C# και VB.NET στην πλατφόρμα .NET | Ίδιος ρόλος με JUnit για γλώσσες .NET |
| Selenium | Ροές από άκρο σε άκρο που βασίζονται σε πρόγραμμα περιήγησης | Λειτουργεί ως οδηγός για το επίπεδο διεπαφής χρήστη |
| TestNG | Μεγάλο Java σουίτες που χρειάζονται ομάδαping και παράλληλες διαδρομές | Λειτουργεί ως μηχανή εκτέλεσης δοκιμών |
| PyTest | Python υπηρεσίες και έλεγχοι σε επίπεδο API | Τα προγράμματα χρησιμεύουν και ως stubs και ως πάροχοι δεδομένων |
| Apache JMeter | Σενάρια φορτίου, καταπόνησης και απόδοσης | Δημιουργεί συνθετική επισκεψιμότητα στην εφαρμογή που βρίσκεται υπό δοκιμή |
| Postman | Συνεργασία με REST APItracεπαλήθευση t | Παρέχει εικονικούς διακομιστές που αντικαθιστούν ημιτελή τελικά σημεία |
Όποιον συνδυασμό κι αν επιλέξετε, η καλωδίωση αποσβένει τα έξοδά της μόνο όταν δεν λειτουργεί χωρίς επίβλεψη, οπότε συνδέστε την σε ένα συνεχή ολοκλήρωση εργασία νωρίς. Ένας ευρύτερος κατάλογος επιλογών παρατίθεται στο Guru99 εργαλεία δοκιμής στρογγυλοποίηση. Μία διάκριση εξακολουθεί να προκαλεί σύγχυση και αξίζει να την διευθετήσετε πριν επιλέξετε οτιδήποτε.
Test Harness Vs Test Framework
Μια καλωδίωση και ένα πλαίσιο αυτοματισμού συχνά αντιμετωπίζονται ως το ίδιο πράγμα, ωστόσο απαντούν σε διαφορετικά ερωτήματα: η καλωδίωση είναι αυτό που εκτελεί μια δοκιμή, ενώ το πλαίσιο είναι η δομή μέσα στην οποία σχεδιάζονται οι δοκιμές. Ο παρακάτω πίνακας τα παρουσιάζει δίπλα-δίπλα.
| Δοκιμαστική ζώνη | Πλαίσιο δοκιμής αυτοματισμού |
|---|---|
| Μια ζώνη δοκιμής αποτελείται από προγράμματα οδήγησης και στελέχη, τα οποία είναι μικρά εικονικά προγράμματα που αλληλεπιδρούν με το υπό δοκιμή λογισμικό | Είναι ένα σύνολο διεργασιών, διαδικασιών, abstract concept και ένα περιβάλλον στο οποίο σχεδιάζονται και υλοποιούνται αυτοματοποιημένες δοκιμές |
| Δεν μπορείτε να κάνετε "Εγγραφή & Αναπαραγωγή" σεναρίου στο Test Harness | Ένας δοκιμαστής μπορεί με μη αυτόματο τρόπο το σενάριο "Εγγραφή & Αναπαραγωγή" σε αυτό το πλαίσιο |
| Η δοκιμαστική πλεξούδα περιέχει όλες τις πληροφορίες που απαιτούνται για τη μεταγλώττιση και εκτέλεση μιας δοκιμής, όπως περιπτώσεις δοκιμής, θύρα ανάπτυξης στόχου (TDP), αρχείο προέλευσης υπό δοκιμή, στελέχη κ.λπ. | Το πλαίσιο αυτοματισμού δοκιμής περιέχει πληροφορίες όπως βιβλιοθήκη δοκιμών, εργαλεία δοκιμών, αυτοματοποιημένες πρακτικές δοκιμών, πλατφόρμα δοκιμών κ.λπ. |
| Μια ζώνη δοκιμής κατηγοριοποιείται σε Δοκιμές Αυτοματισμού Δοκιμή ολοκλήρωσης |
Πλαίσιο αυτοματισμού παραδείγματα Δοκιμές βάσει δεδομένων Δοκιμές βάσει λέξεων-κλειδιών Δοκιμές βάσει σπονδυλωτών Υβριδική δοκιμή Δοκιμές βάσει μοντέλου Code δοκιμές με γνώμονα Δοκιμές με γνώμονα τη συμπεριφορά |

