Τι είναι το Thread Testing στο Software Testing;

⚡ Έξυπνη Σύνοψη

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

  • 🧵 Βασική ιδέα: Ένα νήμα είναι μια ολοκληρωμένη επιχειρηματική συναλλαγή και η δοκιμή ακολουθεί αυτή τη διαδρομή σε όλες τις ενσωματωμένες ενότητες.
  • Όταν εκτελείται: Στην αρχή της φάσης δοκιμών ολοκλήρωσης, ως στρατηγική σταδιακής ολοκλήρωσης συστήματος.
  • 🔀 Δύο γεύσεις: Η δοκιμή ενός νήματος εκτελεί μία συναλλαγή κάθε φορά, ενώ η δοκιμή πολλαπλών νημάτων εκτελεί πολλές ταυτόχρονα.
  • 🐞 Τι πιάνει: Συνθήκες κούρσας, αδιέξοδα, συγκρούσεις κοινόχρηστων πόρων και αλλοίωση δεδομένων που δεν εντοπίζονται από τις δοκιμές μίας διαδρομής.
  • 🧰 Πώς να το εκτελέσετε: Επαναλαμβανόμενες εκτελέσεις με ποικίλα μείγματα εφαρμογών, πολλαπλές παρουσίες, διαφορετικό έλεγχο υλικού και κώδικα.
  • 📉 Ειλικρινές όριο: Οι αναπαραγώγιμες δοκιμές μονάδας για πολυνηματικό κώδικα παραμένουν δύσκολες, επομένως τα ελαττώματα χρονισμού μπορεί να είναι διαλείποντα.

Τι είναι η δοκιμή νημάτων σε δοκιμές λογισμικού με τύπους μονού και πολλαπλών νημάτων;

Τι είναι το Thread Testing;

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

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

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

Διάγραμμα δοκιμής νημάτων που δείχνει νήματα ενσωματωμένα σταδιακά σε ένα υποσύστημα και στη συνέχεια σε ένα πλήρες σύστημα

Τύποι δοκιμής νημάτων

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

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

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

Πώς να κάνετε τη δοκιμή νημάτων

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

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

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

Συμβουλές για δοκιμές πολλαπλών νημάτων

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

  • Δοκιμάστε το πολυνηματικό σας πρόγραμμα εκτελώντας το επανειλημμένα με διαφορετικό συνδυασμό εφαρμογών που εκτελούνται.
  • Δοκιμάστε το πολυνηματικό σας πρόγραμμα έχοντας πολλαπλές παρουσίες του προγράμματος ενεργές ταυτόχρονα.
  • Εκτελέστε το πολυνηματικό σας πρόγραμμα σε διαφορετικά μοντέλα υλικού με ποικίλα επίπεδα καταπόνησης και φόρτους εργασίας.
  • Χρησιμοποιήστε έλεγχο κώδικα, καθώς ορισμένα σφάλματα συγχρονισμού είναι πιο εύκολο να διαβαστούν παρά να αναπαραχθούν.
  • Συλλέγετε μόνο σφάλματα και αποτυχίες που παρουσιάστηκαν σε νήματα εκτός από το κύριο.

Συνηθισμένα ελαττώματα που εντοπίστηκαν κατά τη δοκιμή νημάτων

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

  • Όροι αγώνα: Δύο νήματα διαβάζουν και γράφουν την ίδια τιμή χωρίς να ταξινομούνται, επομένως το τελικό αποτέλεσμα εξαρτάται από το ποιο νήμα τελείωσε πρώτο. Σύμπτωμα: σύνολα που είναι σωστά σε ορισμένες εκτελέσεις και λανθασμένα σε άλλες.
  • Αδιέξοδο: Δύο νήματα κρατούν το καθένα ένα κλείδωμα που χρειάζεται το άλλο και κανένα δεν προχωρά. Σύμπτωμα: η συναλλαγή κολλάει επ' αόριστον αντί να αποτυγχάνει με σφάλμα.
  • Διεκδίκηση πόρων: Τα νήματα μπαίνουν στην ουρά για την ίδια σύνδεση, χειρισμό αρχείου ή εγγραφή και η απόδοση καταρρέει πολύ πριν επιτευχθεί το όριο υλικού.
  • Αλλοίωση δεδομένων: Οι μερικώς γραμμένες κοινόχρηστες δομές αφήνουν τα αρχεία σε μια κατάσταση που καμία έγκυρη συναλλαγή δεν θα μπορούσε να παράγει.
  • Πείνα: Ένα νήμα χαμηλής προτεραιότητας δεν λαμβάνει ποτέ τον πόρο που χρειάζεται, επομένως το χρονικό όριο μιας διαδρομής χρήστη λήγει ενώ το υπόλοιπο σύστημα φαίνεται υγιές.

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

Δοκιμή νημάτων έναντι δοκιμής ταυτοχρονισμού έναντι δοκιμής ολοκλήρωσης

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

Άποψη Δοκιμή νημάτων Δοκιμή ταυτόχρονης λειτουργίας Δοκιμή ολοκλήρωσης
Μονάδα υπό δοκιμή Μία επιχειρηματική συναλλαγή σε όλες τις ενότητες Πολλαπλοί χρήστες ή νήματα που ενεργούν ταυτόχρονα Διεπαφές μεταξύ δύο ή περισσότερων στοιχείων
Κύρια ερώτηση Λειτουργεί αυτή η βασική διαδρομή από άκρη σε άκρη; Τι χαλάει όταν η πρόσβαση είναι ταυτόχρονη; Συνομιλούν σωστά οι ενότητες μεταξύ τους;
Τυπικό στάδιο Δοκιμή πρώιμης ενσωμάτωσης Δοκιμή συστήματος ή απόδοσης Μετά τη δοκιμή μονάδας
Στοχευμένα ελαττώματα Σπασμένες διαδρομές εκτέλεσης, χαμένες παραδόσεις Αδιέξοδα, συνθήκες αγώνα, διεκδίκηση κλειδαριών Αναντιστοιχίες διεπαφής, λάθος δεδομέναtracts
Σχέση Η παραλλαγή πολλαπλών νημάτων επικαλύπτεται με τον έλεγχο ταυτόχρονης λειτουργίας Ευρύτερο από το κομμάτι πολλαπλών νημάτων της δοκιμής νημάτων Η δοκιμή νημάτων είναι μια σταδιακή στρατηγική μέσα σε αυτό

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

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

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

  • Οι βασικές επιχειρηματικές διαδρομές επικυρώνονται νωρίς, επομένως εντοπίζεται μια προβληματική μεταβίβαση πριν από τη συναρμολόγηση ολόκληρου του συστήματος.
  • Οι ολοκληρωτές αποκτούν μια σαφή εικόνα του πεδίου εφαρμογής, επειδή η μονάδα δοκιμής είναι μια αναγνωρίσιμη συναλλαγή και όχι ένα απόλυτο κενό.tracόριο συνιστώσας t.
  • Ο έλεγχος λογικών διαδρομών εκτέλεσης στο περιβάλλον του συστήματος αποκαλύπτει σφάλματα που απομονώθηκαν δοκιμή εξαρτημάτων δεν μπορεί να δει.
  • Η λειτουργία πολλαπλών νημάτων (multi-threads) επιφανειακά εμφανίζει ελαττώματα ταυτόχρονης λειτουργίας — αδιέξοδα, συνθήκες κούρσας και διενέξεις πόρων — που διαφορετικά θα έφταναν στην παραγωγή.
  • Η σταδιακή ολοκλήρωση διατηρεί την επιφάνεια εντοπισμού σφαλμάτων μικρή, καθώς προστίθεται μόνο ένα νήμα κάθε φορά.
  • Τα αποτελέσματα τροφοδοτούν απευθείας δοκιμή παλινδρόμησης, επειδή ένα περαστικό νήμα αποτελεί προφανή υποψήφιο για τη σουίτα παλινδρόμησης.

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

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

Συχνές Ερωτήσεις

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

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

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

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

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

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

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

Ναι — το νήμα γίνεται μια διαδρομή αιτήματος μεταξύ υπηρεσιών αντί για ενότητες. Κατανεμημένο tracΗ ing αντικαθιστά τη στοίβα τοπικών κλήσεων και ισχύει το ίδιο ερώτημα: επιβιώνει μία επιχειρηματική συναλλαγή άθικτη σε κάθε βήμα;

Συνοψίστε αυτήν την ανάρτηση με: