Τι είναι το Thread Testing στο Software Testing;
⚡ Έξυπνη Σύνοψη
Η δοκιμή νημάτων επαληθεύει τη βασική λειτουργική δυνατότητα μιας μεμονωμένης επιχειρηματικής εργασίας καθώς αυτή ταξιδεύει μέσα από ένα ολοκληρωμένο σύστημα και εκτελείται νωρίς στη δοκιμή ολοκλήρωσης και όχι μετά την ολοκλήρωση κάθε στοιχείου.
Τι είναι το Thread Testing;
Δοκιμή νημάτων είναι ένας τύπος δοκιμής λογισμικού που επαληθεύει τη βασική λειτουργική ικανότητα μιας συγκεκριμένης εργασίας, που ονομάζεται νήμα. Συνήθως διεξάγεται στο αρχικό στάδιο της δοκιμή ολοκλήρωσης φάση. Η δοκιμή που βασίζεται σε νήματα είναι μια από τις σταδιακές στρατηγικές που υιοθετούνται κατά τη διάρκεια των δοκιμών ολοκλήρωσης συστήματος. Για αυτόν τον λόγο, μια δοκιμή νημάτων περιγράφεται πιο σωστά ως δοκιμή αλληλεπίδρασης νημάτων.
Ένα νήμα εδώ δεν είναι μόνο ένα νήμα λειτουργικού συστήματος. τεχνολογία λογισμικού με όρους, ένα νήμα είναι μία ολοκληρωμένη επιχειρηματική συναλλαγή — για παράδειγμα «ο πελάτης κάνει μια παραγγελία» — tracπερνάει από κάθε ενότητα που αγγίζει. Η δοκιμή νημάτων ρωτά αν αυτή η μοναδική διαδρομή εξακολουθεί να συμπεριφέρεται σωστά αφού οι ενότητες συνδεθούν μεταξύ τους.
Το παρακάτω διάγραμμα δείχνει πώς τα μεμονωμένα νήματα ενσωματώνονται και ασκούνται ως υποσύστημα πριν από τη συναρμολόγηση του πλήρους συστήματος.
Τύποι δοκιμής νημάτων
Οι δοκιμές που βασίζονται σε νήματα ταξινομούνται σε δύο κατηγορίες και η διάκριση καθορίζει τόσο τα δεδομένα δοκιμής όσο και τα ελαττώματα που είναι πιθανό να εντοπίσετε.
- Δοκιμή μονού νήματος: Μια δοκιμή ενός νήματος περιλαμβάνει μία συναλλαγή εφαρμογής κάθε φορά. Εξυπηρετείται μόνο ένα αίτημα, επομένως η συμπεριφορά απόκρισης είναι προβλέψιμη και η δοκιμή είναι εύκολη στη δημιουργία σεναρίου και στην επανάληψη.
- Δοκιμή πολλαπλών νημάτων: Μια δοκιμή πολλαπλών νημάτων περιλαμβάνει αρκετές ταυτόχρονα ενεργές συναλλαγές. Ξεχωριστά νήματα προετοιμάζονται για την ίδια υπηρεσία, έτσι ώστε να μπορούν να παρατηρηθούν η απόκριση και ο χειρισμός σε κοινόχρηστη κατάσταση υπό ταυτόχρονη φόρτωση.
Μια συναλλαγή που περνάει με επιτυχία σε δοκιμές ενός νήματος μπορεί να αποτύχει και σε μια εκτέλεση πολλαπλών νημάτων, επειδή η δεύτερη εκτέλεση προσθέτει ανταγωνισμό για τις ίδιες εγγραφές, συνδέσεις και μνήμη.
Πώς να κάνετε τη δοκιμή νημάτων
Η διαδικασία νημάτων εστιάζει στις δραστηριότητες ενσωμάτωσης και όχι στον πλήρη κύκλο ζωής ανάπτυξης. Στην πράξη, η προσέγγιση λειτουργεί ως εξής.
- Η δοκιμή βάσει νημάτων είναι μια γενικευμένη μορφή δοκιμής που βασίζεται σε συνεδρία, καθώς οι συνεδρίες είναι μια μορφή νήματος, αλλά ένα νήμα δεν είναι απαραίτητα μια περίοδος λειτουργίας.
- Το νήμα ή το πρόγραμμα (μικρή λειτουργικότητα) ενσωματώνεται και δοκιμάζεται σταδιακά ως υποσύστημα και στη συνέχεια εκτελείται για ολόκληρο το σύστημα.
- Στο χαμηλότερο επίπεδο, παρέχει στους ολοκληρωτές καλύτερη γνώση του εύρους του τι πρέπει να δοκιμάσουν.
- Αντί να δοκιμάζουν απευθείας τα στοιχεία λογισμικού, απαιτείται από τους ολοκληρωτές να επικεντρωθούν στον έλεγχο λογικών διαδρομών εκτέλεσης στο πλαίσιο ολόκληρου του συστήματος.
Επειδή η μονάδα εργασίας είναι μια επιχειρηματική διαδρομή και όχι ένα στοιχείο, η δοκιμή νημάτων βρίσκεται φυσικά ανάμεσα δοκιμή ενότητας και πλήρης δοκιμή συστήματος.
Συμβουλές για δοκιμές πολλαπλών νημάτων
Τα ελαττώματα πολλαπλών νημάτων εξαρτώνται από τον χρονισμό, επομένως μια μόνο καθαρή εκτέλεση αποδεικνύει ελάχιστα. Οι παρακάτω συμβουλές αυξάνουν την πιθανότητα να τα εμφανίσετε.
- Δοκιμάστε το πολυνηματικό σας πρόγραμμα εκτελώντας το επανειλημμένα με διαφορετικό συνδυασμό εφαρμογών που εκτελούνται.
- Δοκιμάστε το πολυνηματικό σας πρόγραμμα έχοντας πολλαπλές παρουσίες του προγράμματος ενεργές ταυτόχρονα.
- Εκτελέστε το πολυνηματικό σας πρόγραμμα σε διαφορετικά μοντέλα υλικού με ποικίλα επίπεδα καταπόνησης και φόρτους εργασίας.
- Χρησιμοποιήστε έλεγχο κώδικα, καθώς ορισμένα σφάλματα συγχρονισμού είναι πιο εύκολο να διαβαστούν παρά να αναπαραχθούν.
- Συλλέγετε μόνο σφάλματα και αποτυχίες που παρουσιάστηκαν σε νήματα εκτός από το κύριο.
Συνηθισμένα ελαττώματα που εντοπίστηκαν κατά τη δοκιμή νημάτων
Τα σφάλματα ταυτόχρονης λειτουργίας σπάνια ανακοινώνονται με μια καθαρή στοίβα tracε. Οι παρακάτω κατηγορίες αντιπροσωπεύουν το μεγαλύτερο μέρος των στοιχείων που εκθέτει μια εκτέλεση πολλαπλών νημάτων και η καθεμία έχει ένα ξεχωριστό σύμπτωμα που αξίζει να αναγνωριστεί.
- Όροι αγώνα: Δύο νήματα διαβάζουν και γράφουν την ίδια τιμή χωρίς να ταξινομούνται, επομένως το τελικό αποτέλεσμα εξαρτάται από το ποιο νήμα τελείωσε πρώτο. Σύμπτωμα: σύνολα που είναι σωστά σε ορισμένες εκτελέσεις και λανθασμένα σε άλλες.
- Αδιέξοδο: Δύο νήματα κρατούν το καθένα ένα κλείδωμα που χρειάζεται το άλλο και κανένα δεν προχωρά. Σύμπτωμα: η συναλλαγή κολλάει επ' αόριστον αντί να αποτυγχάνει με σφάλμα.
- Διεκδίκηση πόρων: Τα νήματα μπαίνουν στην ουρά για την ίδια σύνδεση, χειρισμό αρχείου ή εγγραφή και η απόδοση καταρρέει πολύ πριν επιτευχθεί το όριο υλικού.
- Αλλοίωση δεδομένων: Οι μερικώς γραμμένες κοινόχρηστες δομές αφήνουν τα αρχεία σε μια κατάσταση που καμία έγκυρη συναλλαγή δεν θα μπορούσε να παράγει.
- Πείνα: Ένα νήμα χαμηλής προτεραιότητας δεν λαμβάνει ποτέ τον πόρο που χρειάζεται, επομένως το χρονικό όριο μιας διαδρομής χρήστη λήγει ενώ το υπόλοιπο σύστημα φαίνεται υγιές.
Κάθε ένα από αυτά χρειάζεται την καταγραφή της αποτυχημένης εκτέλεσης σε αρχεία καταγραφής, επειδή ένα ελάττωμα που αναπαράγεται μία φορά στις πενήντα προσπάθειες είναι διαφορετικά αδύνατο να εντοπιστεί μέσω του διαδικασία διαχείρισης ελαττωμάτων.
Δοκιμή νημάτων έναντι δοκιμής ταυτοχρονισμού έναντι δοκιμής ολοκλήρωσης
Οι τρεις όροι αλληλεπικαλύπτονται και συχνά αναμειγνύονται στα σχέδια δοκιμών. Ο πίνακας τους διαχωρίζει με βάση την πρόθεση.
| Άποψη | Δοκιμή νημάτων | Δοκιμή ταυτόχρονης λειτουργίας | Δοκιμή ολοκλήρωσης |
| Μονάδα υπό δοκιμή | Μία επιχειρηματική συναλλαγή σε όλες τις ενότητες | Πολλαπλοί χρήστες ή νήματα που ενεργούν ταυτόχρονα | Διεπαφές μεταξύ δύο ή περισσότερων στοιχείων |
| Κύρια ερώτηση | Λειτουργεί αυτή η βασική διαδρομή από άκρη σε άκρη; | Τι χαλάει όταν η πρόσβαση είναι ταυτόχρονη; | Συνομιλούν σωστά οι ενότητες μεταξύ τους; |
| Τυπικό στάδιο | Δοκιμή πρώιμης ενσωμάτωσης | Δοκιμή συστήματος ή απόδοσης | Μετά τη δοκιμή μονάδας |
| Στοχευμένα ελαττώματα | Σπασμένες διαδρομές εκτέλεσης, χαμένες παραδόσεις | Αδιέξοδα, συνθήκες αγώνα, διεκδίκηση κλειδαριών | Αναντιστοιχίες διεπαφής, λάθος δεδομέναtracts |
| Σχέση | Η παραλλαγή πολλαπλών νημάτων επικαλύπτεται με τον έλεγχο ταυτόχρονης λειτουργίας | Ευρύτερο από το κομμάτι πολλαπλών νημάτων της δοκιμής νημάτων | Η δοκιμή νημάτων είναι μια σταδιακή στρατηγική μέσα σε αυτό |
Εν ολίγοις, δοκιμή ταυτόχρονης λειτουργίας ρωτάει τι κάνει η ταυτόχρονη πρόσβαση στο σύστημα, ενώ η δοκιμή νημάτων ρωτάει αν μια σημαντική διαδρομή επιβιώνει καθόλου από την ολοκλήρωση. Οι ομάδες που εκτελούν και τις δύο συνήθως προγραμματίζουν πρώτα τη δοκιμή νημάτων.
Πλεονεκτήματα της δοκιμής νημάτων
Η τεχνική κερδίζει τη θέση της σε ένα σχέδιο ολοκλήρωσης για διάφορους πρακτικούς λόγους.
- Οι βασικές επιχειρηματικές διαδρομές επικυρώνονται νωρίς, επομένως εντοπίζεται μια προβληματική μεταβίβαση πριν από τη συναρμολόγηση ολόκληρου του συστήματος.
- Οι ολοκληρωτές αποκτούν μια σαφή εικόνα του πεδίου εφαρμογής, επειδή η μονάδα δοκιμής είναι μια αναγνωρίσιμη συναλλαγή και όχι ένα απόλυτο κενό.tracόριο συνιστώσας t.
- Ο έλεγχος λογικών διαδρομών εκτέλεσης στο περιβάλλον του συστήματος αποκαλύπτει σφάλματα που απομονώθηκαν δοκιμή εξαρτημάτων δεν μπορεί να δει.
- Η λειτουργία πολλαπλών νημάτων (multi-threads) επιφανειακά εμφανίζει ελαττώματα ταυτόχρονης λειτουργίας — αδιέξοδα, συνθήκες κούρσας και διενέξεις πόρων — που διαφορετικά θα έφταναν στην παραγωγή.
- Η σταδιακή ολοκλήρωση διατηρεί την επιφάνεια εντοπισμού σφαλμάτων μικρή, καθώς προστίθεται μόνο ένα νήμα κάθε φορά.
- Τα αποτελέσματα τροφοδοτούν απευθείας δοκιμή παλινδρόμησης, επειδή ένα περαστικό νήμα αποτελεί προφανή υποψήφιο για τη σουίτα παλινδρόμησης.
Μειονεκτήματα της δοκιμής νημάτων
- Για τις δοκιμές πολλαπλών νημάτων, η μεγαλύτερη πρόκληση είναι η δυνατότητα προγραμματισμού μιας αναπαραγώγιμης δοκιμής για μια δοκιμή μονάδας.
- Η συγγραφή δοκιμών μονάδων για πολυνηματικό κώδικα είναι ένα απαιτητικό έργο.
- Τα κριτήρια δοκιμών για δοκιμές πολλαπλών νημάτων διαφέρουν από τις δοκιμές ενός νήματος. Για τις δοκιμές πολλαπλών νημάτων, παράγοντες όπως το μέγεθος της μνήμης, η χωρητικότητα αποθήκευσης και τα προβλήματα χρονισμού ποικίλλουν όταν ο κώδικας καλείται σε διαφορετικό υλικό.
- Τα νήματα δεν μπορούν να δοκιμαστούν πριν οι ενότητες που διασχίζουν γίνουν διαθέσιμες, επομένως ο προγραμματισμός εξαρτάται από τη σειρά ολοκλήρωσης.
- Οι διαλείπουσες βλάβες είναι εύκολο να θεωρηθούν ως θόρυβος περιβάλλοντος, γεγονός που καθιστά απαραίτητη την πειθαρχημένη καταγραφή.

