Το JMeter μπορεί να δημιουργήσει δειγματολήπτες αιτημάτων HTTP λειτουργώντας ως τοπικός διακομιστής μεσολάβησης εγγραφής μεταξύ ενός προγράμματος περιήγησης και μιας εξουσιοδοτημένης εφαρμογής-στόχου. Οι τρέχουσες εκδόσεις ονομάζουν αυτό το στοιχείο Καταγραφέα Σεναρίου Δοκιμής HTTP(S) . Καταγράφει μια διαδρομή προγράμματος περιήγησης σε έναν Ελεγκτή Εγγραφής, μετά την οποία το σενάριο πρέπει να καθαριστεί, να συσχετιστεί, να επικυρωθεί και να εκτελεστεί ως δοκιμή σε επίπεδο πρωτοκόλλου.
Τι είναι ο διακομιστής μεσολάβησης HTTP JMeter;
Η συσκευή εγγραφής ακούει σε μια τοπική θύρα, συνήθως 8888Ένα πρόγραμμα περιήγησης στέλνει αιτήματα HTTP και HTTPS σε αυτόν τον διακομιστή μεσολάβησης και το JMeter μετατρέπει την αντίστοιχη επισκεψιμότητα σε δειγματολήπτες υπό έναν επιλεγμένο ελεγκτή. Κατά την αναπαραγωγή, το JMeter στέλνει αιτήματα απευθείας. Δεν εκκινεί ένα πρόγραμμα περιήγησης για κάθε εικονικό χρήστη.
Γιατί να ηχογραφήσετε αντί να κατασκευάσετε το σενάριο χειροκίνητα;
- Καταγράφει ρεαλιστική σειρά αιτημάτων, ανακατευθύνσεις, φόρμες και API φόντου.
- Αποκαλύπτει κλήσεις XHR ή fetch που είναι εύκολο να παραβλεφθούν.
- Δημιουργεί μια γρήγορη γραμμή βάσης για μια σύνθετη διαδρομή χρήστη.
- Μειώνει τα σφάλματα μεταγραφής σε κεφαλίδες και παραμέτρους.
Η χειροκίνητη κατασκευή παραμένει πιο ξεκάθαρη για ένα μικρό τεκμηριωμένο API. Η καταγραφή βοηθάει όταν η συμπεριφορά του δικτύου του προγράμματος περιήγησης δεν είναι ακόμη κατανοητή. Για ορολογία, ανατρέξτε στον οδηγό τύπων proxy.
Πώς να εγγράψετε ένα σενάριο στο JMeter 5.x
- Ξεκινήστε το JMeter σε λειτουργία GUI για τη δημιουργία σεναρίου.
- Προσθέστε μια ομάδα νημάτων στο σχέδιο δοκιμής.
- Προσθέστε έναν Ελεγκτή Εγγραφής στην Ομάδα Νημάτων.
- Προσθέστε προεπιλογές αιτημάτων HTTP και έναν διαχειριστή cookie HTTP όπου χρειάζεται.
- Προσθέστε το HTTP(S) Test Script Recorder και επιλέξτε το Recording Controller ως στόχο του.
- Χρησιμοποιήστε μοτίβα συμπερίληψης/εξαίρεσης για να περιορίσετε την άσχετη επισκεψιμότητα.
Ο επίσημος οδηγός εγγραφής του Apache JMeter είναι η έγκυρη αναφορά για την συγκεκριμένη έκδοση.
Βήμα 1) Ρύθμιση του διακομιστή μεσολάβησης HTTP
8888, ορίστε τον ελεγκτή-στόχο και κάντε κλικ Αρχική.Ρύθμιση παραμέτρων του δοκιμαστικού προγράμματος περιήγησης με κεντρικό υπολογιστή μεσολάβησης HTTP και HTTPS 127.0.0.1 και την ίδια θύρα. Εάν το πρόγραμμα περιήγησης εκτελείται σε άλλη εικονική μηχανή ή κοντέινερ, το localhost αναφέρεται σε αυτό το περιβάλλον. Χρησιμοποιήστε αντ' αυτού μια εγκεκριμένη προσβάσιμη ιδιωτική διεύθυνση.
Proxy host: 127.0.0.1
Proxy port: 8888
Include: https?://test.example.com/.*
Exclude: .*(.png|.jpg|.gif|.css|.woff2)(?.*)?$
Μην φιλτράρετε πολύ επιθετικά στο πρώτο πέρασμα, επειδή ένα API εφαρμογής μπορεί να χρησιμοποιεί άλλο υποτομέα. Καταγράψτε μία φορά, ελέγξτε τους κεντρικούς υπολογιστές και, στη συνέχεια, βελτιώστε τα μοτίβα.
Βήμα 2) Καταγράψτε τη δραστηριότητά σας
- Ξεκινήστε τη συσκευή εγγραφής και θεωρήστε αξιόπιστο το προσωρινό πιστοποιητικό της μόνο στο απομονωμένο πρόγραμμα περιήγησης δοκιμών.
- Ανοίξτε το εξουσιοδοτημένο περιβάλλον δοκιμών.
- Πραγματοποιήστε ένα καθαρό ταξίδι με ανθρώπινη ταχύτητα.
- Διακόψτε την εγγραφή αμέσως μετά την τελική επαγγελματική ενέργεια.
- Επαναφέρετε την κανονική ρύθμιση proxy του προγράμματος περιήγησης.
Μετονομάστε τα δειγματολήπτες κατά επιχειρηματική ενέργεια και ομαδοποιήστε τα σχετικά αιτήματα στην ενότητα Ελεγκτές συναλλαγών. Αφαιρέστε τα αναλυτικά στοιχεία, τις διαφημίσεις, τις ενημερώσεις του προγράμματος περιήγησης, τα γραφικά στοιχεία συνομιλίας και τους διπλότυπους στατικούς πόρους, εκτός εάν εμπίπτουν ρητά στο πεδίο εφαρμογής.
Επιθεωρήστε κάθε δειγματολήπτη για μυστικά. Οι κωδικοί πρόσβασης θα πρέπει να προέρχονται από προστατευμένα δεδομένα χρόνου εκτέλεσης, ενώ η αλλαγή διακριτικών απαιτεί συσχέτιση.
Βήμα 3) Εκτελέστε το σχέδιο δοκιμής σας
Επικυρώστε έναν χρήστη και μία επανάληψη πριν προσθέσετε φορτίο. Χρησιμοποιήστε προσωρινά το Δέντρο Προβολής Αποτελεσμάτων, ελέγξτε τις ανακατευθύνσεις και τα σώματα απόκρισης και προσθέστε ισχυρισμούς για το αναμενόμενο επιχειρηματικό αποτέλεσμα. Το HTTP 200 από μόνο του δεν αποδεικνύει ότι η σύνδεση ή η ολοκλήρωση αγοράς ήταν επιτυχής.
Threads: 1
Ramp-up: 1 second
Loop Count: 1
Μετά τον εντοπισμό σφαλμάτων, αφαιρέστε τους βαρείς ακροατές και εκτελέστε μη-Γραφικό Περιβάλλον Χρήστη (GUI):
jmeter -n -t recorded-test.jmx -l results.jtl -e -o html-report
Ο κατάλογος αναφορών πρέπει να είναι νέος ή κενός. Αυξήστε σταδιακά το φορτίο και παρακολουθήστε το σύστημα-στόχο καθώς και το JMeter.
Βήμα 4) Αποθηκεύστε το αποτέλεσμα της δοκιμής σας
Αποθηκεύστε το επαναχρησιμοποιήσιμο σχέδιο ως .jmx αρχείο και να διατηρείτε τα δεδομένα που δημιουργούνται ξεχωριστά:
- JMX: δειγματολήπτες, ελεγκτές, ισχυρισμοί, χρονιστές, μεταβλητές και διαμόρφωση.
- JTL: ακατέργαστα αποτελέσματα δειγμάτων για ανάλυση.
- Πίνακας ελέγχου HTML: ποσοστημόρια, απόδοση, σφάλματα και ενεργά νήματα.
- Μετρήσεις διακομιστή: Τηλεμετρία CPU, μνήμης, βάσης δεδομένων, ουράς αναμονής και υπηρεσίας.
Δημιουργήστε εκδοχές του σχεδίου με μη μυστικές ιδιότητες και δεδομένα δοκιμών. Καταγράψτε τις εκδόσεις JMeter και Java, την έκδοση-στόχο, το περιβάλλον, τον αριθμό χρηστών, την αύξηση και τη διάρκεια.
Καταγραφή κίνησης HTTPS και πιστοποιητικών
Για το HTTPS, το JMeter δημιουργεί μια προσωρινή αρχή έκδοσης πιστοποιητικών κατά την εκκίνηση του καταγραφέα. Εισαγάγετε την μόνο στο ειδικό πρόγραμμα περιήγησης δοκιμών, καταγράψτε τον εξουσιοδοτημένο ιστότοπο και, στη συνέχεια, καταργήστε την.
- Ξεκινήστε την καταγραφή δέσμης ενεργειών δοκιμής HTTP(S).
- Εντοπίστε το πιστοποιητικό ApacheJMeterTemporaryRootCA που δημιουργήθηκε.
- Εισαγάγετε το ως αξιόπιστη αρχή στο απομονωμένο προφίλ.
- Καταγράψτε την εγκεκριμένη διαδρομή HTTPS.
- Αφαιρέστε το πιστοποιητικό όταν τελειώσετε.
Το καρφίτσωμα πιστοποιητικών, το αμοιβαίο TLS, τα διαχειριζόμενα προγράμματα περιήγησης, οι εφαρμογές για κινητά και τα νεότερα πρωτόκολλα μεταφοράς μπορούν να εμποδίσουν την υποκλοπή. Μην αποδυναμώνετε τους ελέγχους ασφαλείας παραγωγής. Χρησιμοποιήστε μια σταδιακή έκδοση, μια προδιαγραφή API ή μια εγκεκριμένη εναλλακτική μέθοδο καταγραφής.
Συσχέτιση: Πώς να κάνετε ένα ηχογραφημένο σενάριο επαναλήψιμο
Τα αναγνωριστικά περιόδου σύνδεσης, τα διακριτικά CSRF, η κατάσταση OAuth, οι υπογραφές αιτημάτων και τα αναγνωριστικά πόρων αλλάζουν μεταξύ των εκτελέσεων. Η συσχέτιση εξάγει μια νέα τιμή από μία απόκριση και την αντικαθιστά σε μεταγενέστερα αιτήματα.
- Εντοπίστε την απόκριση που περιέχει πρώτη τη δυναμική τιμή.
- Προσθέστε ένα εργαλείο εξαγωγής JSON, CSS, XPath ή Regular Expression.
- Αποθηκεύστε το αποτέλεσμα σε μια επώνυμη μεταβλητή JMeter.
- Αντικαταστήστε μεταγενέστερες τιμές που έχουν κωδικοποιηθεί με την αναφορά μεταβλητής.
- Σαφής αποτυχία όταν η εξαγωγή δεν επιστρέφει καμία αντιστοιχία.
JSON Extractor
Variable: csrfToken
JSON Path: $.csrf.token
Default: NOT_FOUND
Later header:
X-CSRF-Token: ${csrfToken}
Η παραμετροποίηση παρέχει ανεξάρτητα δεδομένα χρήστη, συχνά από CSV. Η συσχέτιση καταγράφει δεδομένα που δημιουργούνται από τον διακομιστή κατά την εκτέλεση. Τα ρεαλιστικά σχέδια συνήθως χρειάζονται και τα δύο.
Αντιμετώπιση προβλημάτων
| Πρόβλημα | Πιθανή αιτία | σταθερός |
|---|---|---|
| Δεν έχουν καταγραφεί αιτήματα | Λάθος διακομιστής μεσολάβησης, διακοπή της συσκευής εγγραφής, διένεξη θυρών ή κανόνας παράκαμψης | Επιβεβαιώστε τον κεντρικό υπολογιστή και τη θύρα, ξεκινήστε τη συσκευή εγγραφής και καταργήστε τις εξαιρέσεις στόχων. |
| Προειδοποίηση HTTPS | Προσωρινή Πιστοποιητική Αρχή (CA) λείπει ή έχει λήξει. | Δημιουργήστε ένα νέο πιστοποιητικό καταγραφής και εισαγάγετέ το μόνο στο προφίλ δοκιμής. |
| Υπερβολική κίνηση | Επεκτάσεις, τηλεμετρία, άλλες καρτέλες ή γενικά μοτίβα | Χρησιμοποιήστε ένα καθαρό προφίλ και βελτιώστε τα φίλτρα συμπερίληψης/εξαίρεσης. |
| Η επανάληψη σύνδεσης αποτυγχάνει | Λείπουν cookie, διακριτικά, ροή OAuth ή συσχέτιση | Προσθέστε το Cookie Manager, εξαγάγετε δυναμικές τιμές και ελέγξτε τις ανακατευθύνσεις. |
| Το πρόγραμμα περιήγησης είναι εκτός σύνδεσης στη συνέχεια, μετά. | Εξακολουθεί να υποδεικνύει τον διακοπτόμενο τοπικό διακομιστή μεσολάβησης | Επαναφορά αυτόματων ρυθμίσεων ή ρυθμίσεων χωρίς proxy. |
| Σφάλμα μνήμης JMeter | Ακροατές GUI ή μεγάλος χώρος αποθήκευσης απόκρισης | Χρησιμοποιήστε λειτουργία χωρίς GUI και περιορίστε τα αποθηκευμένα δεδομένα απόκρισης. |
| Διαφορετικό από το πρόγραμμα περιήγησης | Το JMeter δεν αποδίδει ούτε εκτελεί JavaScript σελίδας | Δοκιμάστε τα υποκείμενα API και χρησιμοποιήστε εργαλεία προγράμματος περιήγησης για την απόδοση μετρήσεων. |
Το JMeter είναι ένα εργαλείο απόδοσης πρωτοκόλλου. Δεν μπορεί να μετρήσει οπτικά συμβάντα όπως το Largest Contentful Paint από μόνο του.
Συχνές Ερωτήσεις
Τι αντικατέστησε το όνομα του διακομιστή μεσολάβησης HTTP στο JMeter;
Το στοιχείο ονομάζεται πλέον HTTP(S) Test Script Recorder.
Ποια θύρα εγγραφής πρέπει να χρησιμοποιήσω;
Οποιαδήποτε αχρησιμοποίητη τοπική θύρα λειτουργεί. Η θύρα 8888 είναι συνηθισμένη και το πρόγραμμα περιήγησης πρέπει να χρησιμοποιήσει την ίδια τιμή.
Μπορεί το JMeter να καταγράψει την κίνηση HTTPS;
Ναι, όταν το απομονωμένο πρόγραμμα περιήγησης δοκιμών εμπιστεύεται το προσωρινό πιστοποιητικό εγγραφής του JMeter.
Γιατί ένα ηχογραφημένο σενάριο αποτυγχάνει κατά την επανάληψη;
Τα δυναμικά διακριτικά, τα cookies, οι ροές ελέγχου ταυτότητας, οι διαφορές μεταξύ των κεντρικών υπολογιστών και τα δεδομένα που λείπουν απαιτούν συνήθως συσχέτιση και παραμετροποίηση.
Μπορεί το JMeter να καταγράψει το Chrome;
Ναι. Ρυθμίστε ένα καθαρό προφίλ Chrome για να χρησιμοποιήσετε την τοπική συσκευή εγγραφής του JMeter.
Πρέπει να εκτελέσω δοκιμές φόρτωσης από το γραφικό περιβάλλον χρήστη του JMeter;
Όχι. Δημιουργήστε και εντοπίστε σφάλματα σε λειτουργία GUI και, στη συνέχεια, εκτελέστε τη φόρτωση σε λειτουργία εκτός GUI.
Συμπεριφέρεται το JMeter σαν ένα πραγματικό πρόγραμμα περιήγησης;
Όχι. Στέλνει αιτήματα πρωτοκόλλου αλλά δεν αποδίδει HTML ούτε εκτελεί JavaScript προγράμματος περιήγησης.
Είναι ασφαλές να καταγράψω μια σύνδεση παραγωγής;
Προτιμήστε λογαριασμούς σταδιοποίησης και δοκιμών. Η καταγραφή παραγωγής απαιτεί ρητή εξουσιοδότηση και αυστηρό μυστικό χειρισμό.
