Επεξεργαστής μέσα JMeter: Προεπεξεργαστής & Μεταεπεξεργαστής

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

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

  • ⚙️ Βασικός Ορισμός: Ένας επεξεργαστής τροποποιεί το Sampler εντός του πεδίου εφαρμογής του, εκτελώντας είτε πριν από το αίτημα είτε μετά την απόκριση.
  • 🔍 Ρόλος Προεπεξεργαστή: Οι προεπεξεργαστές ορίζουν μεταβλητές, ξαναγράφουν URLs, αναλύστε συνδέσμους HTML και εφαρμόστε παραμέτρους χρήστη πριν από την εκτέλεση ενός Sampler.
  • 📤 Ρόλος PostProcessor: Οι PostProcessors διαβάζουν απαντήσεις, π.χ.tract δυναμικές τιμές σε μεταβλητές και αποφασίστε εάν η εκτελούμενη δοκιμή συνεχίζεται.
  • 🧩 ExtracΕπιλογή tor: Κανονική έκφραση, όριο, JSON, CSS/jQuery και XPath extracΚάθε ένας από τους tors ταιριάζει σε διαφορετική μορφή απόκρισης.
  • 🛑 Έλεγχος ροής: Ο Χειριστής Ενέργειας Κατάστασης Αποτελέσματος διακόπτει ένα νήμα ή ολόκληρη τη δοκιμή όταν αποτύχει ένα Sampler.
  • 🧪 Εφαρμοσμένη αναλυτική παρουσίαση: Έξι βήματα για να δημιουργήσετε ένα σχέδιο που σταματά αυτόματα μόλις μια μη έγκυρη διαδρομή επιστρέψει ένα σφάλμα διακομιστή.

Επεξεργαστής μέσα JMeter

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

Υπάρχουν 2 τύποι επεξεργαστών:

  1. Προεπεξεργαστής
  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. Ας ξεκινήσουμε με το απλό σενάριο δοκιμής.

  1. JMeter στέλνει ένα αίτημα HTTP στον υπό δοκιμή διακομιστή ιστού www.google.com.
  2. JMeter παίρνει απάντηση από τον Google διακομιστή.
  3. Εάν η απόκριση διακομιστή είναι ένα λάθος, JMeter Η ενέργειά σου στάση το τέστ.
  4. Εάν η απάντηση διακομιστή OK (χωρίς λάθος), JMeter Η ενέργειά σου ΣΥΝΕΧΕΙΑ το τέστ.

Εδώ είναι η οδικός χάρτης αυτού του παραδείγματος:

Παράδειγμα Post Processor

Προϋπόθεση:

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.

Διαμόρφωση του αιτήματος HTTP

Όταν μπαίνετε "αλφάβητο" στο μονοπάτι, 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 αλλά παρέδωσε λάθος περιεχόμενο.

Αντιμετώπιση προβλημάτων

Εάν αντιμετωπίσετε το πρόβλημα κατά την εκτέλεση του παραπάνω σεναρίου… κάντε τα εξής:

  1. Ελέγξτε εάν συνδέεστε στο διαδίκτυο μέσω διακομιστή μεσολάβησης. Εάν ναι, αφαιρέστε τον διακομιστή μεσολάβησης.
  2. Ανοίξτε μια νέα παρουσία του Jmeter
  3. Ανοίξτε το ProcessorTestPlan.jmx σε Jmeter
  4. Double-Κάντε κλικ στο Thread Group -> View Results Tree
  5. Εκτελέστε το Test

Εάν ένας μετα-επεξεργαστής φαίνεται να μην κάνει τίποτα, ελέγξτε πρώτα τη θέση του. Ένας μετα-επεξεργαστής που τοποθετείται εκτός του πεδίου εφαρμογής του δειγματολήπτη στον οποίο στοχεύει δεν εκτελείται ποτέ, κάτι που είναι η πιο συχνή αιτία ενός κενού ex.tracμεταβλητή ted. Σχετικά στοιχεία όπως ελεγκτές και κατανεμημένες δοκιμές ακολουθήστε την ίδια λογική πεδίου εφαρμογής.

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

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

Ο πρώηνtracΤο tor αποθηκεύει την τιμή σε ένα JMeter όνομα μεταβλητής που ορίζετε εσείς. Οποιοδήποτε μεταγενέστερο Sampler στο ίδιο νήμα το αναφέρει με τη σύνταξη ${variableName}, σε μια διαδρομή, κεφαλίδα ή σώμα αιτήματος.

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

Ναι. Οι βοηθοί τεχνητής νοημοσύνης συγκρίνουν την ακατέργαστη απόκριση με την πρώηνtracέκφραση tor και επισήμανση αναντιστοιχιών στο escaping, ομάδαpingή πεδίο εφαρμογής. Επαληθεύστε την επιδιόρθωση μέσα στο Δέντρο Προβολής Αποτελεσμάτων πριν την εμπιστευτείτε σε μια εκτέλεση φόρτωσης.

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

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