Συσχέτιση στο LoadRunner με παράδειγμα web_reg_save_param
⚡ Έξυπνη Σύνοψη
Η συσχέτιση στο LoadRunner καταγράφει μια δυναμική τιμή διακομιστή, όπως ένα αναγνωριστικό περιόδου σύνδεσης, και την τροφοδοτεί σε μεταγενέστερα αιτήματα, έτσι ώστε ένα καταγεγραμμένο σενάριο VuGen να αναπαράγεται με επιτυχία αντί να αποτυγχάνει σε παλιά δεδομένα.
Τι είναι η Συσχέτιση;
Η συσχέτιση, όπως υποδηλώνει και το όνομά της, είναι ένας μηχανισμός ορισμού μιας σχέσης μεταξύ δύο μεταβλητών ή οντοτήτων. Ένα λεξικό την ορίζει ως «στατιστική σχέση μεταξύ δύο ή περισσότερων μεταβλητών έτσι ώστε συστηματικές αλλαγές στην άλλη να συνοδεύονται από συστηματικές αλλαγές στην τιμή της μίας μεταβλητής».
Σημείωση μάρκας: αυτό το εργαλείο αποστέλλεται ως HP και στη συνέχεια Micro Focus LoadRunner, και είναι τώρα OpenText Επαγγελματική Μηχανική ΑπόδοσηςΚάθε συνάρτηση συσχέτισης παρακάτω παραμένει αμετάβλητη και ο προμηθευτής γράφει τη γεννήτρια σεναρίων. VuGen.
Γιατί χρειαζόμαστε τη Συσχέτιση;
Ας κατανοήσουμε τη συσχέτιση με το ακόλουθο σενάριο.
Σκεφτείτε ότι ηχογραφείτε ένα σενάριο χρησιμοποιώντας LoadRunner.
Η επικοινωνία πελάτη-διακομιστή κατά την εγγραφή εκτελείται ως εξής και το διάγραμμα τη συνοψίζει:
- Κατά την εγγραφή, ο πελάτης στέλνει ένα αίτημα στον διακομιστή για να ξεκινήσει μια συνεδρία.
- Ένας διακομιστής λαμβάνει το αίτημα και εκχωρεί ένα νέο αναγνωριστικό περιόδου σύνδεσης ABC
- Ο πελάτης αποθηκεύει το αναγνωριστικό περιόδου σύνδεσης ABC στο σενάριο.
- Ο πελάτης ξεκινά την συνεδρία με το ID ABC και στέλνει ένα αίτημα σε έναν διακομιστή για να του επιτρέψει να καταγράψει
- Ο διακομιστής αναγνωρίζει το αναγνωριστικό ABC και επιτρέπει στον πελάτη να καταγράψει το σενάριο
Τώρα, ας μελετήσουμε την επικοινωνία πελάτη-διακομιστή κατά την επανάληψη, όπως φαίνεται μετά από αυτά τα βήματα:
- Κατά τη διάρκεια της Επανάληψης, ένας πελάτης στέλνει ένα αίτημα στον διακομιστή για να ξεκινήσει μια περίοδος λειτουργίας
- Ένας διακομιστής λαμβάνει το αίτημα και εκχωρεί ένα νέο αναγνωριστικό συνεδρίας XYZ
- Ένας πελάτης ξεκινά την συνεδρία με το προηγουμένως καταγεγραμμένο αναγνωριστικό συνεδρίας ABC και στέλνει ένα αίτημα στον διακομιστή για να του επιτρέψει να καταγράψει.
- Ένας διακομιστής δεν μπορεί να αναγνωρίσει το αναγνωριστικό ABC καθώς περίμενε το αναγνωριστικό XYZ που έχει εκχωρήσει και η περίοδος λειτουργίας αποτυγχάνει.
Χρειαζόμαστε μια λύση που να μπορεί να καταγράψει και να αναλύσει τη δυναμική τιμή που αποστέλλεται κατά τον χρόνο εκτέλεσης και να επιστρέψει αυτήν την τιμή πίσω στον διακομιστή. Δείτε πώς θα φαίνεται η επικοινωνία πελάτη-διακομιστή με αυτήν τη λύση, όπως φαίνεται στο παρακάτω διάγραμμα:
- Κατά τη διάρκεια της Επανάληψης, ένας πελάτης στέλνει ένα αίτημα στον διακομιστή για να ξεκινήσει μια περίοδος λειτουργίας
- Ένας διακομιστής λαμβάνει το αίτημα και εκχωρεί ένα νέο αναγνωριστικό περιόδου λειτουργίας ZZZ
- Ένας πελάτης αναλύει αυτό το νέο αναγνωριστικό συνεδρίας ZZZ από το αίτημα.
- Ένας πελάτης στέλνει ένα αίτημα για έναρξη συνεδρίας με αναγνωριστικό ZZZ
- Ένας διακομιστής αναγνωρίζει το αναγνωριστικό ZZZ και επιτρέπει στον πελάτη να αναπαράγει ξανά το σενάριο
Αυτό δεν είναι παρά συσχέτιση.
Το σύντομο βίντεο που ακολουθεί παρουσιάζει το ίδιο πρόβλημα εγγραφής και επανάληψης.
Πατήστε εδώ εάν το βίντεο δεν είναι προσβάσιμο
Στην περίπτωση του VuGen, η συσχέτιση είναι μια δεσμευτική σχέση μεταξύ μιας απόκρισης και οποιουδήποτε προηγούμενου αιτήματος.
Υπάρχουν διάφορες περιπτώσεις όπου ένα αίτημα βασίζεται σε μια προηγούμενη απάντηση που ελήφθη από τον διακομιστή, όπως ένα Session ID ή μια ημερομηνία και ώρα διακομιστή που ανακτάται από τον διακομιστή. Αυτές οι τιμές διαφέρουν κάθε φορά που εκτελείτε μια εφαρμογή ή καταγράφετε ένα σενάριο. Προφανώς, εάν η εκτέλεση του σεναρίου εξαρτάται από μια τιμή που επιστρέφεται από τον διακομιστή, αυτό σημαίνει ότι πρέπει να βρείτε έναν μηχανισμό όπου μπορείτε να "πιάσετε" την απόκριση του διακομιστή και να την επισυνάψετε σε εκείνα τα αιτήματα που αναμένει ο διακομιστής. Αυτό συνήθως ονομάζεται Συσχέτιση στο LoadRunner.
Με απλά λόγια, η λύση με τη χρήση συσχέτισης είναι:
- Καταγράψτε την τιμή εξόδου από ένα βήμα
- Χρησιμοποιήστε την παραπάνω τιμή που καταγράφηκε για να χρησιμεύσει ως είσοδος σε όλα τα επόμενα βήματα
Η συσχέτιση ταξινομείται σε 2 κατηγορίες στο VuGen/LoadRunner:
- Αυτόματος συσχετισμός
- Χειροκίνητη συσχέτιση
Αυτόματος συσχετισμός
Το LoadRunner παρέχει έναν μηχανισμό για την εύκολη εκτέλεση συσχέτισης με αυτόματο τρόπο.
Το VuGen θα απαιτήσει να εκτελέσετε ένα ηχογραφημένο σενάριο τουλάχιστον δύο φορές, ώστε να μπορεί να συγκρίνει εσωτερικά τις μεταβαλλόμενες τιμές στην απόκριση του διακομιστή.
Η αυτόματη συσχέτιση μπορεί να ταξινομηθεί σε 3 κατηγορίες:
- Αυτόματος εντοπισμός συσχέτισης
- Συσχέτιση βάσει κανόνων
- Συσχέτιση όλων των δηλώσεων
| Όνομα κανόνα | Πότε να χρησιμοποιήσετε |
| Αυτόματος εντοπισμός συσχέτισης | Εντοπισμός και συσχέτιση δυναμικών δεδομένων για διακομιστές εφαρμογών που υποστηρίζονται από το LoadRunner |
| Βασισμένο σε κανόνες | Χρησιμοποιείται όταν εργάζεστε με έναν μη υποστηριζόμενο διακομιστή εφαρμογών για τον οποίο είναι γνωστό το περιβάλλον. |
| Συσχετίστε όλα | Βοηθά στη συσχέτιση όλων των δυναμικών δεδομένων με τυφλό τρόπο. |
Αν και η Αυτόματη Συσχέτιση φαίνεται απλούστερη, μπορεί να είναι επιρρεπής σε σφάλματα και να λειτουργεί όχι περισσότερο από το 5% των περιπτώσεων. Συνιστάται πάντα να χρησιμοποιείτε χειροκίνητη συσχέτιση.
Για να διαμορφώσετε την αυτόματη συσχέτιση τη στιγμή της εγγραφής, εκτελέστε την παρακάτω διαμόρφωση στη Ρύθμιση χρόνου εγγραφής μετά την εγγραφή ενός σεναρίου.
Κάντε κλικ στην επιλογή Εγγραφή =>Επιλογές εγγραφής (ή κάντε κλικ στο Ctrl +F7), που εμφανίζεται στο παρακάτω μενού,
Θα ανοίξει το παρακάτω παράθυρο:
Κάντε κλικ στο Συσχέτιση => Διαμόρφωση - θα ανοίξει το παρακάτω παράθυρο.
Εδώ, πρέπει να επισημάνετε ως επιλεγμένες σε σχέση με όλες τις εφαρμογές (ASPNET) κ.λπ., που χρησιμοποιούνται στη θεματική σας εφαρμογή. Στη δεξιά πλευρά, μπορείτε να δείτε τους κανόνες που θα εντοπίσουν πιθανούς υποψηφίους για συσχέτιση π.χ. _VIEWSTATE. Μπορείτε επίσης να προσθέσετε περισσότερες εφαρμογές ή προσαρμοσμένους κανόνες κάνοντας κλικ στο κουμπί Νέος κανόνας.
Μπορείτε επίσης να κάνετε κλικ στους ΚΑΝΟΝΕΣ, θα δείτε ως εξής:
Για να λειτουργήσει η Αυτόματη Συσχέτιση, πρέπει να βεβαιωθείτε ότι η Σάρωση Κανόνων έχει επισημανθεί ως επιλεγμένη. Εάν κάνετε κλικ στην επιλογή Αυτόματη συσχέτιση τιμών που βρέθηκαν, το VuGen δεν θα σας ζητήσει την επιλογή μόλις βρεθεί μια υποψήφια συσχέτιση, αλλά απλώς θα τη συσχετίσει.
Θα καταλάβουμε το API που χρησιμοποιείται για συσχέτιση αργότερα. Ωστόσο, συνιστάται η χρήση σύγκρισης HTML αντί για σύγκριση κειμένου.
Αφού επιλέξετε κάποιους κανόνες, κάντε κλικ στο κουμπί OK για να κλείσετε τα παράθυρα.
Κάντε κλικ στο κουμπί της γραμμής εργαλείων που εμφανίζεται εδώ από το μενού και το VuGen θα αναδημιουργήσει το σενάριο (χωρίς να χρειάζεται εγγραφή) με νέες διαμορφώσεις. Το VuGen θα προσθέσει αυτόματα ένα απαιτούμενο κομμάτι κώδικα για τη διαχείριση της συσχέτισης. Θα εξετάσουμε το δείγμα με περισσότερες λεπτομέρειες στην ενότητα Χειροκίνητη Συσχέτιση.
Λάβετε υπόψη ότι εάν κάνετε συσχέτιση με μη αυτόματο τρόπο ή χρησιμοποιείτε αυτόματη συσχέτιση, το κομμάτι κώδικα θα περιέχει ακριβώς την ίδια σύνταξη και λειτουργία.
Βήματα για την αυτόματη συσχέτιση ενός σεναρίου:
- Ηχογραφήστε ένα σενάριο
- Επανάληψη σεναρίου
- Προσδιορίστε τις τιμές που θα συσχετιστούν
- Επιλέξτε τις τιμές και κάντε κλικ στο κουμπί αυτόματης συσχέτισης
- Επαληθεύστε το σενάριο εκτελώντας ξανά. Μια επιτυχημένη πορεία σημαίνει επιτυχημένη συσχέτιση.
Συμβουλή:
- Η συσχέτιση βοηθά στην εκτέλεση του σεναρίου σας με διαφορετικές τιμές
- Η συσχέτιση μειώνει επίσης το μέγεθος του σεναρίου σας
Χειροκίνητη Συσχέτιση
Η μη αυτόματη συσχέτιση αφορά τη σύνταξη κώδικα απευθείας στο σενάριό σας για να καλύψει συνεχώς μεταβαλλόμενες τιμές. Μπορούμε να το χωρίσουμε στα παρακάτω βήματα:
- Προσδιορίστε την τιμή που θέλετε να καταγράψετε
- Βρείτε τα δεξιά και τα αριστερά όρια κειμένου της τιμής προς λήψη (WEB)
- Βρείτε ποια εμφάνιση των ορίων κειμένου πρέπει να χρησιμοποιηθεί
- Προσθέστε μια συνάρτηση web_reg_save_param στο σενάριο, πάνω από το κομμάτι κώδικα που ζητά από τη σελίδα με την τιμή για καταγραφή
- Προσθέστε ένα όνομα παραμέτρου, το αριστερό όριο, το δεξί όριο και μια εμφάνιση στη συνάρτηση
- Παραμετροποιήστε τη δυναμική τιμή στο σενάριο κάθε φορά που εμφανίζεται
- Επαληθεύστε τη σωστή εκτέλεση
web_reg_save_param (" OracleAppJSESSIONID3", "LB/IC=JSESSIONID=", "RB/IC=;", "Ord=l", "Search=headers", "RelFrameId=l", LAST); web_reg_save_param("Siebel_Analytic_ViewState2", "LB/IC=ViewState\" value=\"", "RB/IC=\"", "Ord=1", "Search=Body", "RelFrameId=l", LAST);
Code σημειώσεις: και τα δύο αποσπάσματα εμφανίζονται ακριβώς όπως δημοσιεύθηκαν. Δείτε τους διατακτικούς αριθμούς: Ord=l και RelFrameId=l χρησιμοποιήστε ένα πεζό L και το VuGen αναμένει το ψηφίο 1.
Ο χειροκίνητος συσχετισμός μπορεί να γίνει με τη σύγκριση VUser. Τα βήματα στη μέθοδο συσχέτισης της σύγκρισης VUser μπορούν να χωριστούν ως εξής:
- Προσδιορίστε δυναμικές τιμές που πρέπει να συσχετιστούν
- Βρείτε την απόκριση διακομιστή που περιέχει την τιμή Dynamic
- Καταγράψτε τη Δυναμική τιμή σε μια παράμετρο
- Αντικαταστήστε κάθε εμφάνιση της τιμής Dynamic με την παράμετρο
- Επαλήθευση αλλαγών
Κατανόηση της συνάρτησης web_reg_save_param
Το VuGen παρέχει πολλαπλές λειτουργίες ή API για τη συσχέτιση υποψηφίων, όπως:
- web_reg_save_param
- web_reg_save_param_ex
- web_reg_save_param_regexp
- web_reg_save_param_xpath
Σημείωση έκδοσης: Οι τρέχουσες κυκλοφορίες της VuGen προσφέρουν μια έκπληξη web_reg_save_param_ex ως διάδοχος της αρχικής λειτουργίας, και web_reg_save_param_regexp ως επιλογή όταν τα ίδια τα όρια αλλάζουν. Το αρχικό παράδειγμα εξακολουθεί να εκτελείται.
Ενώ εδώ παρέχεται μια σύντομη εισαγωγή, για μια λεπτομερή κατανόηση των συναρτήσεων και των παραμέτρων τους, ανοίξτε το VuGen, γράψτε μια συνάρτηση (ή χρησιμοποιήστε το Steps Toolbox), μετακινήστε τον κέρσορα στη συνάρτηση και κάντε κλικ στο F1 – εξοικειωθείτε με Βοήθεια με το VuGen και να το κάνετε συνήθεια. Θα πρέπει να το αντιμετωπίσετε πολύ όταν εργάζεστε στον κλάδο.
Εδώ πάμε με τις λεπτομέρειες της λειτουργίας:
web_reg_save_param(Όνομα παραμέτρου , αριστερό όριο , δεξιό όριο )
Κατάλογος Ιδιοτήτων
Ο παρακάτω πίνακας συλλέγει κάθε χαρακτηριστικό που δέχεται η συνάρτηση, αν είναι υποχρεωτικό και τι ελέγχει.
| Χαρακτηριστικό | Απαιτείται? | Τι κάνει |
| Μετατρέπω | Προαιρετικός | HTML_TO_URL μετατρέπει δεδομένα με κωδικοποίηση HTML σε URL-κωδικοποιημένη μορφή δεδομένων. Το HTML_TO_TEXT μετατρέπει δεδομένα με κωδικοποίηση HTML σε μορφή απλού κειμένου. |
| Αγνοήστε τις ανακατευθύνσεις | Προαιρετικό, προεπιλογή "Παράβλεψη ανακατευθύνσεων=Όχι" | Όταν έχει οριστεί σε Ναι και η απόκριση του διακομιστή είναι πληροφορίες ανακατεύθυνσης (κωδικός κατάστασης HTTP 300-303, 307), δεν γίνεται αναζήτηση σε αυτήν την απόκριση. Το αίτημα GET μεταβαίνει στην ανακατευθυνόμενη θέση και η αναζήτηση εκτελείται στην απόκριση από εκεί. |
| LB | Απαιτείται | Το αριστερό όριο της παραμέτρου ή των δυναμικών δεδομένων. Εάν δεν καθορίσετε μια τιμή LB, χρησιμοποιεί όλους τους χαρακτήρες από την αρχή των δεδομένων ως όριο. Οι παράμετροι ορίου κάνουν διάκριση πεζών-κεφαλαίων. Για να προσαρμόσετε περαιτέρω το κείμενο αναζήτησης, χρησιμοποιήστε μία ή περισσότερες σημαίες κειμένου. |
| ΔΕΝ ΒΡΕΘΗΚΕ | Προαιρετικό, προεπιλεγμένο «σφάλμα» | Χειρισμός όταν δεν βρίσκεται ένα όριο και δημιουργείται μια κενή συμβολοσειρά. Η εντολή "Not found=error" εμφανίζει ένα σφάλμα. Η εντολή "Not found=warning" ("Not found=empty" σε παλαιότερες εκδόσεις) ορίζει την παράμετρο count σε 0 και συνεχίζει, κάτι που είναι ιδανικό όταν θέλετε να δείτε εάν η συμβολοσειρά βρέθηκε χωρίς να αποτύχει το σενάριο. Με ενεργοποιημένη τη Συνέχεια σε Σφάλμα, το σενάριο συνεχίζει ακόμα και με "σφάλμα", αλλά το εκτεταμένο αρχείο καταγραφής το καταγράφει. |
| ΠΑΡΑΓΓΕΛΙΑ | Προαιρετικό, προεπιλογή 1 | Υποδεικνύει τη διατεταγμένη θέση ή την παρουσία της αντιστοίχισης. Εάν καθορίσετε "Όλες", αποθηκεύονται οι τιμές των παραμέτρων σε έναν πίνακα. Η χρήση της παρουσίας αντί για την ORD υποστηρίζεται για συμβατότητα με παλαιότερες εκδόσεις, αλλά έχει καταργηθεί. |
| RB | Απαιτείται | Το δεξιό όριο της παραμέτρου ή των δυναμικών δεδομένων. Εάν δεν καθορίσετε μια τιμή RB, χρησιμοποιεί όλους τους χαρακτήρες μέχρι το τέλος των δεδομένων ως όριο. Οι παράμετροι ορίου κάνουν διάκριση πεζών-κεφαλαίων. Για να προσαρμόσετε περαιτέρω το κείμενο αναζήτησης, χρησιμοποιήστε μία ή περισσότερες σημαίες κειμένου. |
| RelFrameID | Προαιρετικός | Το επίπεδο ιεραρχίας της σελίδας HTML σε σχέση με το ζητούμενο URLΟι πιθανές τιμές είναι ALL ή ένας αριθμός. Το RelFrameID δεν υποστηρίζεται σε σενάρια επιπέδου GUI. |
| SaveLen | Προαιρετικό, προεπιλογή -1 | Το μήκος μιας δευτερεύουσας συμβολοσειράς της τιμής που βρέθηκε, από την καθορισμένη μετατόπιση, για αποθήκευση στην παράμετρο. Η προεπιλογή αποθηκεύει στο τέλος της συμβολοσειράς. |
| SaveOffset | Προαιρετικό, προεπιλογή 0 | Η μετατόπιση μιας υποσυμβολοσειράς της τιμής που βρέθηκε, για αποθήκευση στην παράμετρο. Η τιμή μετατόπισης πρέπει να είναι μη αρνητική. |
| Αναζήτηση | Προαιρετικό, προεπιλογή ALL (ΟΛΑ) | Το εύρος της αναζήτησης — πού θα αναζητηθούν τα οριοθετημένα δεδομένα. Οι πιθανές τιμές είναι Κεφαλίδες (αναζήτηση μόνο στις κεφαλίδες), Σώμα (αναζήτηση μόνο στα δεδομένα του σώματος, όχι στις κεφαλίδες), Χωρίς πόρο (αναζήτηση μόνο στο σώμα HTML, εξαιρουμένων όλων των κεφαλίδων και των πόρων) ή ΟΛΑ (αναζήτηση στο σώμα, τις κεφαλίδες και τους πόρους). |
Μόλις το σενάριο αναπαραχθεί καθαρά, προσθέστε παραμετροποίηση, συναλλαγές και ρυθμίσεις χρόνου εκτέλεσης, εκτελέστε το από το ελεγκτής, και διαβάστε το αποτέλεσμα στο Ανάλυση ως μέρος ευρύτερου Δοκιμές Απόδοσης και Δοκιμές φορτίου.







