Επεξεργαστής μέσα JMeter: Προεπεξεργαστής & Μεταεπεξεργαστής
⚡ Έξυπνη Σύνοψη
Επεξεργαστής μέσα JMeter τροποποιεί τα αιτήματα του Sampler πριν ή μετά την εκτέλεση. Το PreProcessor προετοιμάζει τα δεδομένα αιτήματος, ενώ το PostProcessor extracτιμές ts και ελέγχει τη ροή δοκιμών, επιτρέποντας τη συσχέτιση, τη δυναμική παραμετροποίηση και την αξιόπιστη συμπεριφορά δοκιμών απόδοσης.

Ένας επεξεργαστής σε Apache JMeter είναι ένα στοιχείο σχεδίου δοκιμών που τροποποιεί τους δειγματολήπτες εντός του πεδίου εφαρμογής του. Εκτελείται αυτόματα, είτε λίγο πριν φύγει ένα αίτημα JMeter ή αμέσως μετά την άφιξη μιας απάντησης, γεγονός που την καθιστά τον κύριο μηχανισμό για τη διαχείριση δυναμικών δεδομένων κατά τη διάρκεια μιας δοκιμή απόδοσης.
Υπάρχουν 2 τύποι επεξεργαστών:
- Προεπεξεργαστής
- Μετα-επεξεργαστής
Το πεδίο εφαρμογής αποφασίζει πόσο μακριά φτάνει ένας επεξεργαστής. Ένας επεξεργαστής τοποθετημένος απευθείας κάτω από ένα Σχέδιο δοκιμής ή μια Ομάδα Νημάτων εφαρμόζεται σε κάθε Δειγματολήπτη που βρίσκεται από κάτω της, ενώ ένας επεξεργαστής που είναι ενσωματωμένος σε έναν μόνο Δειγματολήπτη επηρεάζει μόνο αυτό το αίτημα. Η κατανόηση αυτού του κανόνα αποτρέπει τα λάθη διαμόρφωσης που καλύπτονται στην ενότητα αντιμετώπισης προβλημάτων αυτής της σελίδας.
Προεπεξεργαστής
Ο προεπεξεργαστής εκτελεί κάποια ενέργεια πριν κάνοντας Αίτημα Sampler.
Εξετάστε ένα απλό παράδειγμα: ας πούμε ότι θέλατε JMeter για «αράχνη» μέσω του υπό δοκιμή ιστότοπου, αναλύω πρόταση σύνδεσμος (ελέγξτε όλους τους συνδέσμους στη σελίδα) και απόδοση το HTML. Θα προσθέσετε κάποια ενέργεια, όπως "αναλυτής συνδέσμων HTML" στον ελεγκτή σας πριν δημιουργήσετε ένα αίτημα HTTP.
Το παραπάνω διάγραμμα δείχνει τον Προεπεξεργαστή που βρίσκεται ανάμεσα στον ελεγκτή και το εξερχόμενο αίτημα. Επειδή εκτελείται πρώτος, είναι το σωστό μέρος για τη δημιουργία δεδομένων αιτήματος: δημιουργία χρονικής σήμανσης, ανάγνωση τιμής από μια στήλη CSV, επανεγγραφή ενός αναγνωριστικού περιόδου σύνδεσης στο URLή αντιστοίχιση διαφορετικών διαπιστευτηρίων σε κάθε εικονικό χρήστη.
Μετα-επεξεργαστής
Ο μετα-επεξεργαστής εκτελεί κάποια ενέργεια μετά την υποβολή ενός αιτήματος δειγματοληψίας.
Εξετάστε ένα απλό παράδειγμα: JMeter στέλνει ένα αίτημα HTTP στον υπό δοκιμή διακομιστή ιστού (κ.λπ www.google.com) και λάβετε την απάντηση. Θέλεις JMeter για να διακόψετε τη δοκιμή εάν η απόκριση του διακομιστή είναι σφάλμα. Μπορείτε να χρησιμοποιήσετε τον μετα-επεξεργαστή για να εκτελέσετε την παραπάνω εργασία ως εξής:
Όπως απεικονίζεται στο δεύτερο διάγραμμα, ο Post-processor διαβάζει την απόκριση αφού ολοκληρωθεί το Sampler. Αυτή είναι επίσης η τυπική απάντηση στη συσχέτιση. Όταν ένας διακομιστής επιστρέφει ένα διακριτικό, ένα αναγνωριστικό περιόδου σύνδεσης ή έναν αριθμό παραγγελίας που αλλάζει σε κάθε εκτέλεση, ένας Post-processor καταγράφει αυτήν την τιμή σε ένα JMeter μεταβλητή, ώστε ο επόμενος δειγματολήπτης να μπορεί να την επαναχρησιμοποιήσει.
Τύποι προεπεξεργαστών σε JMeter
Apache JMeter Διαθέτει ένα συμπαγές σύνολο προεπεξεργαστών. Κάθε ένας προετοιμάζει ένα δειγματολήπτη με διαφορετικό τρόπο, επομένως η επιλογή του σωστού στοιχείου διατηρεί ένα σχέδιο δοκιμών ευανάγνωστο και εύκολο στη συντήρηση.
- Χρονικό όριο δείγματος: Ορίζει μια μέγιστη διάρκεια για ένα αίτημα. Οποιοδήποτε Sampler εκτελείται περισσότερο από την διαμορφωμένη τιμή επισημαίνεται ως αποτυχημένο.
- Παράμετροι χρήστη: Αντιστοιχίζει συγκεκριμένες τιμές σε μεταβλητές ανά εικονικό χρήστη, έτσι ώστε κάθε νήμα να στέλνει το δικό του σύνολο δεδομένων.
- Αναλυτής συνδέσμων HTML: Η λειτουργία "spider" (αράχνες) επεξεργάζεται την υπό δοκιμή σελίδα, αναλύει τους συνδέσμους που βρίσκει και τους τροφοδοτεί στο ακόλουθο αίτημα HTTP.
- HTTP URL Τροποποιητής επανεγγραφής: Εισάγει ένα αναγνωριστικό συνεδρίας στο URL για εφαρμογές που track συνεδρίες χωρίς cookies.
- Παράμετροι χρήστη RegEx: Συμπληρώνει τις παραμέτρους αιτήματος χρησιμοποιώντας τιμές που καταγράφονται από μια κανονική έκφραση από μια προηγούμενη απόκριση.
- Προεπεξεργαστής JDBC: Εκτελεί μια πρόταση SQL πριν από το Sampler, η οποία είναι χρήσιμη για την τοποθέτηση ή την επαναφορά εγγραφών βάσης δεδομένων.
- Προεπεξεργαστής JSR223: Εκτελεί ένα Groovy or Java σενάριο για οποιαδήποτε προσαρμοσμένη λογική προετοιμασίας. Αντικαθιστά τον παλαιότερο BeanShell PreProcessor και αποδίδει σημαντικά καλύτερα υπό φορτίο.
💡 Συμβουλές: Προτιμήστε τον προεπεξεργαστή JSR223 με το Groovy γλώσσα μέσω BeanShell. Groovy Τα σενάρια μεταγλωττίζονται και αποθηκεύονται στην προσωρινή μνήμη, επομένως καταναλώνουν πολύ λιγότερη CPU όταν χιλιάδες νήματα εκτελούνται παράλληλα.
Τύποι PostProcessors σε JMeter
Οι PostProcessors εμπίπτουν σε δύο ομάδες: π.χ.tractors που εξάγουν τιμές από μια απόκριση και handlers που αντιδρούν στο αποτέλεσμα ενός Sampler. Ο παρακάτω πίνακας αντιστοιχίζει κάθε στοιχείο στη μορφή απόκρισης που του ταιριάζει καλύτερα.
| Επεξεργαστής άρθρων | Κατάλληλο για | Τυπική χρήση |
| Κανονική έκφραση ExtracTor | Οποιαδήποτε απάντηση μέσω κειμένου | Λήψη διακριτικών ή αναγνωριστικών από HTML και απλό κείμενο |
| Εξόρυξη ορίωνtracTor | Οποιαδήποτε απάντηση μέσω κειμένου | Καταγραφή μιας τιμής χρησιμοποιώντας ένα αριστερό και ένα δεξί όριο αντί για μια πλήρη κανονική έκφραση |
| JSON ExtracTor | Απαντήσεις JSON | Ανάγνωση πεδίων από φορτία REST κατά τη διάρκεια Δοκιμή API |
| CSS/jQuery ExtracTor | Αποκρίσεις HTML | Επιλογή ενός στοιχείου από τον επιλογέα CSS |
| XPath ExtracTor | Αποκρίσεις XML και XHTML | Πλοήγηση σε ένα δομημένο δέντρο εγγράφων |
| Επεξεργαστής ανάρτησης JDBC | Αποτελέσματα βάσης δεδομένων | Επαλήθευση ή καθαρισμός γραμμών μετά από ένα αίτημα |
| JSR223 Μεταεπεξεργαστής | Οποιαδήποτε απάντηση | Προσαρμοσμένη ανάλυση σεναρίων και ισχυρισμοί |
| Result Status Action Handler | Οποιαδήποτε απάντηση | στάσηping ένα νήμα ή ολόκληρη τη δοκιμή όταν αποτύχει ένας δειγματολήπτης |
Το Όριο ExtracΟ Tor έφτασε στο JMeter 4.0 και είναι συχνά η πιο γρήγορη επιλογή για γραφή, επειδή ζητά μόνο το κείμενο ακριβώς αριστερά και δεξιά της τιμής. Το παράδειγμα της κανονικής έκφρασηςtracΤο tor παραμένει η πιο ευέλικτη επιλογή όταν η περιβάλλουσα σήμανση ποικίλλει μεταξύ των απαντήσεων.
Διαφορά μεταξύ προεπεξεργαστή και μεταεπεξεργαστή
Και τα δύο στοιχεία μοιράζονται τους ίδιους κανόνες πεδίου εφαρμογής, ωστόσο επιλύουν αντίθετα προβλήματα. Η παρακάτω σύγκριση συνοψίζει τη διάκριση πριν από το επεξεργασμένο παράδειγμα.
| Παράμετρος | Προεπεξεργαστής | Επεξεργαστής άρθρων |
| Χρόνος εκτέλεσης | Εκτελείται πριν ο Sampler στείλει το αίτημά του | Εκτελείται αφού ο Sampler λάβει την απάντησή του |
| Κύριος σκοπός | Προετοιμάζει και τροποποιεί τα δεδομένα αιτήματος | Διαβάζει τα δεδομένα απόκρισης και αντιδρά σε αυτά |
| Τυπικά στοιχεία | Παράμετροι χρήστη, αναλυτής συνδέσμων HTML, προεπεξεργαστής JSR223 | Κανονική έκφραση Extractor, JSON Extractor, Χειριστής ενέργειας κατάστασης αποτελέσματος |
| Επίδραση στη ροή | Δεν είναι δυνατή η διακοπή της δοκιμής, μόνο διαμορφώνει το αίτημα | Μπορεί να σταματήσει ένα νήμα ή ολόκληρη την εκτέλεση της δοκιμής |
| Κοινός στόχος | Παραμετροποίηση | Συσχέτιση και διαχείριση σφαλμάτων |
Στην πράξη, τα δύο λειτουργούν ως ζεύγος. Ένας PostProcessor καταγράφει ένα διακριτικό συνεδρίας από μια απόκριση σύνδεσης και ένας PreProcessor στο επόμενο αίτημα εισάγει αυτό το διακριτικό πριν από την αποστολή της κλήσης. Το παράδειγμα που ακολουθεί δείχνει το μισό PostProcessor αυτού του μοτίβου.
Παράδειγμα Post Processor
Αυτό το σεμινάριο θα σας δείξει βήμα προς βήμα οδηγίες για τον τρόπο χρήσης του Post-processor in JMeter. Ας ξεκινήσουμε με το απλό σενάριο δοκιμής.
- JMeter στέλνει ένα αίτημα HTTP στον υπό δοκιμή διακομιστή ιστού www.google.com.
- JMeter παίρνει απάντηση από τον Google διακομιστή.
- Εάν η απόκριση διακομιστή είναι ένα λάθος, JMeter Η ενέργειά σου στάση το τέστ.
- Εάν η απάντηση διακομιστή OK (χωρίς λάθος), JMeter Η ενέργειά σου ΣΥΝΕΧΕΙΑ το τέστ.
Εδώ είναι η οδικός χάρτης αυτού του παραδείγματος:
Προϋπόθεση:
We επαναχρησιμοποίηση το Βήμα 1 και το Βήμα 2 στο άρθρο JMeter Δοκιμές Απόδοσης. Αν JMeter δεν έχει εγκατασταθεί ακόμα, ακολουθήστε τις οδηγίες JMeter οδηγός εγκατάστασης πρώτη.
Βήμα 1) Προσθήκη ομάδας νημάτων
Κάντε δεξί κλικ στο Σχέδιο δοκιμής και προσθέστε μια νέα ομάδα νημάτων: Πρόσθεση -> Νήματα (Χρήστες) -> Ομάδα νημάτων
Αλλά στον πίνακα ελέγχου Ομάδας νημάτων, εισαγάγετε τις ιδιότητες νήματος ως εξής:
Αυτή η ρύθμιση επιτρέπει JMeter δημιουργία 10 αίτημα χρήστη προς http://www.google.com 10 φορές.
Βήμα 2) Προσθέστε JMeter στοιχεία
- Προσθήκη προεπιλεγμένου αιτήματος HTTP
- Προσθήκη αιτήματος HTTP
Ακόμα φτιάχνουμε JMeter Στείλε αίτημα http://www.google.com προς την Google διακομιστή.
Βήμα 3) Προσθήκη στοιχείου μετα-επεξεργαστή
Κάντε δεξί κλικ Ομάδα νημάτων -> Πρόσθεση -> Επεξεργαστής ανάρτησης -> Result Status Action Handler
Result Status Action Handler επιτρέπει στο χρήστη να σταματήσει το νήμα ή ολόκληρη τη δοκιμή εάν το αίτημα χρήστη απέτυχε.
Στο Παράθυρο λαβής ενεργειών κατάστασης αποτελεσμάτων, επιλέξτε Σταματήστε τη δοκιμή τώρα. Αυτή η επιλογή θα σταματήσει τη δοκιμή εάν JMeter λάβετε το σφάλμα από την απάντηση διακομιστή.
Βήμα 4) Διαμόρφωση του αιτήματος HTTP
Ανοίξτε τον πίνακα αιτήματος HTTP. Εισαγω "αλφάβητο" στο πεδίο Path.
Όταν μπαίνετε "αλφάβητο" στο μονοπάτι, JMeter θα δημιουργήσει ένα URL ζητήστε να Google διακομιστής: http://www.google.com/abc. Αυτό URL δεν υπάρχει σε Google διακομιστή. Είναι κακό URL αίτημα έτσι Google ο διακομιστής θα επιστρέψει σφάλμα.
Βήμα 5) Προσθήκη Δέντρου Προβολής Αποτελεσμάτων
Κάντε δεξί κλικ Ομάδα νημάτων -> Πρόσθεση -> Ακροατής -> Προβολή δέντρου αποτελεσμάτων
Βήμα 6) Εκτελέστε τη δοκιμή
Επιλέξτε View Result Tree, πατήστε το κουμπί Run στη γραμμή μενού. Θα δείτε το σφάλμα απάντηση από Google διακομιστή και η δοκιμή θα σταματήσει χωρίς συμπληρώνοντας 100 νήματα.
Τώρα επιστρέψτε στο βήμα 4, ανοίξτε το παράθυρο αιτήματος HTTP, πληκτρολογήστε "ημερολόγιο” στο τζάμι. Κάνει JMeter δημιουργία URL ζητήσει https://calendar.google.com/calendar/u/0/r στο Google διακομιστή. Αυτό είναι διορθώσει URL αίτημα έτσι Google Ο διακομιστής θα επιστρέψει OK (κανένα σφάλμα).
Επιλέξτε View Result Tree, πατήστε το κουμπί Run στη γραμμή μενού. Θα δείτε το OK απάντηση από Google διακομιστή και η δοκιμή θα συνεχιστεί μέχρι να ολοκληρωθούν και τα 100 νήματα.
Προσθήκη ενός ισχυρισμός παράλληλα με τον Χειριστή Ενέργειας Κατάστασης Αποτελέσματος (Result Status Action Handler) ο έλεγχος γίνεται πιο αυστηρός, επειδή μια διεκδίκηση μπορεί να αποτύχει σε ένα Sampler που επέστρεψε HTTP 200 αλλά παρέδωσε λάθος περιεχόμενο.
Αντιμετώπιση προβλημάτων
Εάν αντιμετωπίσετε το πρόβλημα κατά την εκτέλεση του παραπάνω σεναρίου… κάντε τα εξής:
- Ελέγξτε εάν συνδέεστε στο διαδίκτυο μέσω διακομιστή μεσολάβησης. Εάν ναι, αφαιρέστε τον διακομιστή μεσολάβησης.
- Ανοίξτε μια νέα παρουσία του Jmeter
- Ανοίξτε το ProcessorTestPlan.jmx σε Jmeter
- Double-Κάντε κλικ στο Thread Group -> View Results Tree
- Εκτελέστε το Test
Εάν ένας μετα-επεξεργαστής φαίνεται να μην κάνει τίποτα, ελέγξτε πρώτα τη θέση του. Ένας μετα-επεξεργαστής που τοποθετείται εκτός του πεδίου εφαρμογής του δειγματολήπτη στον οποίο στοχεύει δεν εκτελείται ποτέ, κάτι που είναι η πιο συχνή αιτία ενός κενού ex.tracμεταβλητή ted. Σχετικά στοιχεία όπως ελεγκτές και κατανεμημένες δοκιμές ακολουθήστε την ίδια λογική πεδίου εφαρμογής.









.gif)

.gif)