loadrunner vugen scripting challenges
Εισαγωγή στις προκλήσεις που εμπλέκονται στο σενάριο LoadRunner VuGen:
Σε αυτό Ενημερωτική σειρά εκπαίδευσης LoadRunner , διερευνήσαμε Βελτιώσεις σεναρίου VuGen στο προηγούμενο σεμινάριό μας. Από τα προηγούμενα σεμινάρια μας μέχρι τώρα, έχουμε σημειώσει μεγάλη πρόοδο με το VuGen.
Μάθαμε πώς να καταγράφουμε ένα σενάριο στο πρωτόκολλο HTTP / HTML Ιστού, πώς να φροντίζουμε δεδομένα / τιμές με συσχέτιση και παραμετροποίηση, πώς να διασφαλίσουμε εάν η απόκριση είναι σωστή με σημεία ελέγχου, πώς να εισάγουμε συναλλαγές που μετρούν το ρυθμό και το χρόνο απόκρισης του χρήστη δράσεις και άλλα πράγματα.
Με αυτά, θα πρέπει να είμαστε σε θέση να δημιουργήσουμε με επιτυχία σενάρια για όλες σχεδόν τις εφαρμογές ιστού.
=> Κάντε κλικ εδώ για πλήρη σειρά μαθημάτων LoadRunner
Γλώσσα LR
Μπορεί να υπάρχουν καταστάσεις όπου πρέπει να κάνουμε πιο απαιτητικές εργασίες σε ένα σενάριο VuGen. Σε αυτό το σεμινάριο, θα συζητήσουμε μερικές από τις προκλήσεις σεναρίων μαζί με τις διαθέσιμες τεχνικές για την αντιμετώπισή τους.
Πριν συζητήσουμε αυτά, ας καταλάβουμε μερικά πράγματα. Το VuGen (ή Load Runner) μπορεί να καταλάβει μόνο τη δική του γλώσσα (ας το ονομάσουμε ως γλώσσα LR, ενώ το LR είναι η σύντομη μορφή του Load Runner). Έτσι, όποιο σενάριο δημιουργεί μπορεί να ειπωθεί ότι είναι στη γλώσσα LR. Στη γλώσσα LR, υπάρχει μόνο ένας τύπος δεδομένων - String (και πιο συγκεκριμένα 'LR String').
Τώρα, για να κάνουμε βελτιώσεις σε ένα σενάριο VuGen, συνήθως χρησιμοποιούμε τη γλώσσα Γ.
Γνωρίζουμε ότι στη γλώσσα C υπάρχουν πολλοί τύποι δεδομένων όπως int, char, float, long κ.λπ. Εάν ορίσουμε και χρησιμοποιούμε άμεσα τιμές C σε ένα αίτημα, το VuGen δεν θα καταλάβει (καθώς καταλαβαίνει μόνο «LR string») και θα ρίξει ένα λάθος. Επομένως, πρέπει να μετατρέψουμε οποιαδήποτε τιμή C (οποιουδήποτε τύπου δεδομένων) σε «συμβολοσειρά LR» πριν τη χρησιμοποιήσουμε σε ένα αίτημα.
Έχοντας καταλάβει αυτό, ας πάμε σε μερικά σενάρια σε πραγματικό χρόνο.
Σενάριο 1:Πώς να χρησιμοποιήσετε μια συμβολοσειρά C σε ένα αίτημα VuGen
Ας υποθέσουμε ότι σε ένα σενάριο VuGen έχουμε ένα αίτημα που έχει ένα πεδίο που ονομάζεται «PlanName» (υποθέστε ότι αυτό το σενάριο προορίζεται για κάποια εφαρμογή οικονομικού προγραμματισμού). Κατά την εγγραφή, εισαγάγαμε την τιμή ως 'NewPlan'.
web_submit_data('MyPlan', 'Action= {pURL} ', 'Method= POST ', 'TargetFrame=', 'RecContentType= text/html ', 'Snapshot= t21.inf ', 'Mode= HTML ', ITEMDATA , 'Name= PlanId ', 'Value= 67213 ', ENDITEM , 'Name= PlanName ', 'Value= NewPlan ', ENDITEM , 'Name= Age ', 'Value= 57 ', ENDITEM , 'Name= MaritalStaus ', 'Value= Married ', ENDITEM , LAST );
Ας υποθέσουμε ότι θέλουμε να χρησιμοποιήσουμε μια συμβολοσειρά καθορισμένη από το χρήστη ως το όνομα του σχεδίου.
Έτσι, πρέπει να δηλώσουμε και να ορίσουμε μια συμβολοσειρά όπως φαίνεται παρακάτω
char sPlanName() = ' MyFinancialPlan ';
Το «sPlanName» είναι μια συμβολοσειρά C και ως εκ τούτου πρέπει να το μετατρέψουμε σε συμβολοσειρά LR (για να το χρησιμοποιήσουμε στο αίτημα).
Αυτό το κάνουμε χρησιμοποιώντας τη λειτουργία 'lr_save_string' όπως φαίνεται παρακάτω:
lr_save_string(sPlanName,”LRPlanName”);
Αυτή η συνάρτηση εκχωρεί μια τιμή στην παράμετρο LR / μεταβλητή. Χρειάζονται δύο χαρακτηριστικά - Το πρώτο χαρακτηριστικό είναι η πηγή (C String) και το δεύτερο χαρακτηριστικό είναι ο προορισμός (παράμετρος / μεταβλητή LR).
Έτσι, αυτή η συνάρτηση αποθηκεύει την τιμή της μεταβλητής C που ορίσαμε στην παράμετρο LR «LRPlanName».
Τώρα μπορούμε να αντικαταστήσουμε το 'LRPlanName' όπως οποιαδήποτε άλλη παράμετρο στο αίτημα VuGen.
web_submit_data('MyPlan', 'Action= {pURL} ', 'Method= POST ', 'TargetFrame=', 'RecContentType= text/html ', 'Snapshot= t21.inf ', 'Mode= HTML ', ITEMDATA , 'Name= PlanId ', 'Value= 67213 ', ENDITEM , 'Name= PlanName ', 'Value= {LRPlanName} ', ENDITEM , 'Name= Age ', 'Value= 57 ', ENDITEM , 'Name= MaritalStaus ', 'Value= Married ', ENDITEM , LAST );
Σημειώστε ότι όταν εκτελούμε αυτό το σενάριο, όλα τα Vusers και όλες οι επαναλήψεις θα έχουν την ίδια τιμή με το όνομα του σχεδίου. Έτσι, για να κάνουμε το όνομα του σχεδίου μοναδικό σε κάθε εκτέλεση, μπορούμε να κάνουμε κάτι τέτοιο.
char sPlanName() = ' MyFinancialPlan _{pVuserId}_{pIteration}'; lr_save_string( lr_eval_string(sPlanName),'LRPlanName' );
Εδώ «pVuserId» και «pIteration» είναι οι παράμετροι «Vuser ID» και «Iteration Number» (που συζητήσαμε σε τύπους παραμέτρων στα προηγούμενα σεμινάρια). Αυτά χρησιμοποιούνται στο όνομα σχεδίου για να διασφαλίσουμε ότι έχουμε μοναδικά ονόματα για κάθε Vuser και επανάληψη.
ο «Lr_eval_string» Η συνάρτηση επιστρέφει τη συμβολοσειρά εισόδου αφού αξιολογήσει τυχόν ενσωματωμένες παραμέτρους. Έτσι, σε αυτήν την περίπτωση, η έξοδος αυτής της συνάρτησης θα είναι «MyFinancialPlan_1_1» για την πρώτη επανάληψη του Vuser, «MyFinancialPlan_1_2» για τη δεύτερη επανάληψη του Vuser και ούτω καθεξής.
Και φυσικά, ξέρουμε τι «Lr_save_string» η λειτουργία.
Τώρα μπορούμε να αντικαταστήσουμε την παράμετρο «LRPlanName» όπως φαίνεται παραπάνω.
Σενάριο 2:Πώς να μετατρέψετε μια μεταβλητή load runner σε C ακέραιο
Στο τελευταίο σεμινάριο, είδαμε ένα παράδειγμα για να κατανοήσουμε πώς περνάμε ή αποτυγχάνουμε με μη αυτόματο τρόπο μια συναλλαγή ανάλογα με μια συνθήκη.
Παράδειγμα:
web_reg_find('Text= Welcome ','SaveCount= WelcomeCount ', LAST ); web_submit_data('login.pl', 'Action= http://127.0.0.1:1080/cgi-bin/login.pl ', 'Method= POST ', 'TargetFrame= body ', 'RecContentType= text/html ', 'Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in= home ', 'Snapshot= t2.inf ', 'Mode= HTML ', ITEMDATA , 'Name= userSession ', 'Value= {corUserSession} ', ENDITEM , 'Name= username ', 'Value= jojo ', ENDITEM , 'Name= password ', 'Value= bean ', ENDITEM , 'Name= JSFormSubmit ', 'Value= off ', ENDITEM , 'Name= login.x ', 'Value= 66 ', ENDITEM , 'Name= login.y ', 'Value= 12 ', ENDITEM , LAST ); if( atoi (lr_eval_string('{WelcomeCount}'))>0) { lr_end_transaction('Login', LR_PASS ); } else { lr_end_transaction('Login', LR_FAIL ); }
Χρησιμοποιήσαμε εδώ 'if statement' με το χαρακτηριστικό 'SaveCount'. Η παράμετρος 'WelcomeCount' που αποθηκεύει τον αριθμό των εμφανίσεων του κειμένου δεν μπορεί να χρησιμοποιηθεί απευθείας στην κατάσταση 'if', καθώς είναι μια συμβολοσειρά φόρτωσης. Επομένως, αυτή η παράμετρος πρέπει να μετατραπεί πρώτα σε συμβολοσειρά C και μετά σε ακέραιο αριθμό C. «Lr_eval_string» και «Atoi» χρησιμοποιούνται συναρτήσεις (αντίστοιχα) για τη φροντίδα αυτού.
ο «Atoi» Η συνάρτηση C μετατρέπει μια συμβολοσειρά C σε ακέραιο αριθμό C.
Μετά από αυτήν τη μετατροπή, αυτό μπορεί να χρησιμοποιηθεί όπως κάθε άλλος ακέραιος αριθμός C.
Σενάριο 3:Πώς να στείλετε μια τυχαία τιμή σε ένα αίτημα
Πολύ συχνά συναντάμε σενάρια εφαρμογής όπου πρέπει να επιλέξουμε μια τυχαία τιμή (ας πούμε από ένα αναπτυσσόμενο μενού). Πώς το χειριζόμαστε σε σενάρια VuGen; Πώς διασφαλίζουμε ότι επιλέγεται τυχαία τιμή για κάθε επανάληψη; Ας το δούμε λεπτομερώς.
Ας πάρουμε το παράδειγμα της εφαρμογής «Περιηγήσεις Ιστού». Όπως είδαμε νωρίτερα, έχουμε μια σελίδα «Εύρεση πτήσης» όπου πρέπει να επιλέξουμε μια πτήση.
Ας πούμε ότι επιλέγουμε το πρώτο στη λίστα. Το αντίστοιχο αίτημα στο σενάριο είναι έτσι (όπου έχει επιλεγεί η αντίστοιχη τιμή για την πτήση).
web_submit_data('reservations.pl_2', 'Action= http://127.0.0.1:1080/cgi-bin/reservations.pl ', 'Method= POST ', 'TargetFrame=', 'RecContentType= text/html ', 'Referer= http://127.0.0.1:1080/cgi-bin/reservations.pl ', 'Snapshot= t5.inf ', 'Mode= HTML ', ITEMDATA , 'Name= outboundFlight ', 'Value= 020 ;338;04/03/2018', ENDITEM , 'Name= numPassengers ', 'Value= 1 ', ENDITEM , 'Name= advanceDiscount ', 'Value= 0 ', ENDITEM , 'Name= seatType ', 'Value= Coach ', ENDITEM , 'Name= seatPref ', 'Value= None ', ENDITEM , 'Name= reserveFlights.x ', 'Value= 39 ', ENDITEM , 'Name= reserveFlights.y ', 'Value= 10 ', ENDITEM , LAST );
Πρέπει πρώτα να καταγράψουμε τις αντίστοιχες τιμές και για τις τέσσερις πτήσεις από μία από τις προηγούμενες απαντήσεις. Μπορούμε να το κάνουμε αυτό χρησιμοποιώντας τη λειτουργία συσχέτισης (web_reg_save_param) με το χαρακτηριστικό 'ORD = ALL' πριν από το αίτημα του οποίου η απόκριση έχει αυτές τις τιμές.
Η έξοδος αυτού θα είναι έτσι όταν η συσχετισμένη παράμετρος «cFlight» έχει μια σειρά τεσσάρων τιμών που αντιστοιχούν στις τέσσερις πτήσεις.
Το επόμενο βήμα θα ήταν να επιλέξετε τυχαία μία από αυτές τις τιμές και να υποβάλετε στο αίτημα. Αυτό μπορεί να γίνει χρησιμοποιώντας «Lr_paramarr_random» λειτουργία όπως φαίνεται παρακάτω.
strcpy (flightVal,lr_eval_string(lr_paramarr_random('cFlight')));
Η είσοδος στο «Lr_paramarr_random» Η συνάρτηση είναι ένας πίνακας παραμέτρων και η έξοδος είναι μια τυχαία τιμή από αυτόν τον πίνακα. Εδώ λοιπόν η έξοδος αυτής της συνάρτησης είναι μία από τις τέσσερις τιμές πτήσης. Και καθώς αυτή η τυχαία τιμή είναι μια συμβολοσειρά LR, χρησιμοποιείται η συνάρτηση «lr_eval_string» (για να μετατραπεί η ίδια σε συμβολοσειρά C).
«Strcpy» Η συνάρτηση C αντιγράφει τελικά αυτήν την τιμή σε μια μεταβλητή συμβολοσειράς C «flightVal».
Τώρα πάλι πρέπει να μετατρέψουμε αυτήν τη μεταβλητή C String σε συμβολοσειρά LR για να μπορέσουμε να στείλουμε το αίτημα.
lr_save_string(flightVal,'randomFlight'); web_submit_data('reservations.pl_2', 'Action= http://127.0.0.1:1080/cgi-bin/reservations.pl ', 'Method= POST ', 'TargetFrame=', 'RecContentType= text/html ', 'Referer= http://127.0.0.1:1080/cgi-bin/reservations.pl ', 'Snapshot= t5.inf ', 'Mode= HTML ', ITEMDATA , 'Name= outboundFlight ', 'Value= {randomFlight} ', ENDITEM , 'Name= numPassengers ', 'Value= 1 ', ENDITEM , 'Name= advanceDiscount ', 'Value= 0 ', ENDITEM , 'Name= seatType ', 'Value= Coach ', ENDITEM , 'Name= seatPref ', 'Value= None ', ENDITEM , 'Name= reserveFlights.x ', 'Value= 39 ', ENDITEM , 'Name= reserveFlights.y ', 'Value= 10 ', ENDITEM , LAST );
Σενάριο 4:Πώς να χωρίσετε μια συμβολοσειρά σε διακριτικά
Ας πούμε ότι υπάρχει ένα σενάριο όπου πρέπει να χωρίσουμε μια συμβολοσειρά σε κομμάτια / μάρκες. Ας πάρουμε το παράδειγμα από την εφαρμογή 'Περιηγήσεις Ιστού' από την τιμή πτήσης 020 ; 338; 04/03/2018 λένε ότι πρέπει να χρησιμοποιήσουμε μόνο το '338', τότε πρέπει να χωρίσουμε αυτήν τη συμβολοσειρά και να την αποθηκεύσουμε σε μια μεταβλητή.
Για να γινει αυτο «Strtok» χρησιμοποιείται η συνάρτηση.
«Strtok» Η συνάρτηση C επιστρέφει ένα διακριτικό από μια συμβολοσειρά που οριοθετείται από καθορισμένους χαρακτήρες. Μετά την πρώτη επίκληση, πρέπει να περάσουμε το 'NULL' ως την τιμή της συμβολοσειράς για να λάβουμε το επόμενο διακριτικό. Το παρακάτω παράδειγμα δείχνει πώς χρησιμοποιείται αυτή η συνάρτηση για τον διαχωρισμό της τιμής πτήσης με βάση το διαχωριστικό ερωτηματικού (;).
Παράδειγμα:
Ας υποθέσουμε ότι η τιμή πτήσης καταγράφεται από τη σχετική απόκριση στην παράμετρο «cFlight».
char string(100); char *token; int i=1; strcpy(string,lr_eval_string('{cFlight}')); token=(char *)strtok(string,';'); lr_output_message('Token %d is %s',i,token); while(token != NULL) { i=i+1; token=(char *)strtok(NULL,';'); lr_output_message('Token %d is %s',i,token); }
Η έξοδος αυτού φαίνεται στο αρχείο καταγραφής επανάληψης.
Μπορούμε να αντιγράψουμε το απαιτούμενο διακριτικό σε μια παράμετρο και να το χρησιμοποιήσουμε.
Σενάριο 5:Πώς να διαβάσετε δεδομένα από και να γράψετε δεδομένα σε ένα αρχείο κειμένου
Μερικές φορές ενδέχεται να απαιτείται ανάγνωση δεδομένων από εξωτερικό αρχείο ή εγγραφή δεδομένων σε εξωτερικό αρχείο. Ας δούμε πώς το κάνουμε αυτό σε ένα σενάριο VuGen.
Ας δούμε πρώτα πώς να διαβάζουμε δεδομένα από ένα αρχείο κειμένου.
Παράδειγμα: Ας πούμε ότι πρέπει να διαβάσουμε ένα XML από ένα εξωτερικό αρχείο δεδομένων και να το χρησιμοποιήσουμε ως αίτημα στο σενάριο.
Για να το κάνουμε αυτό, χρησιμοποιούμε «Απροσδιόριστο» Συνάρτηση C.
Αυτή η συνάρτηση έχει τέσσερα χαρακτηριστικά:
ρυθμιστής - Το buffer για την αποθήκευση της ροής δεδομένων.
Μέγεθος - Το μέγεθος του buffer.
μετρώ - Ο αριθμός των byte για ανάγνωση.
file_pointer - Ο δείκτης του αρχείου
Παράδειγμα κώδικα (με σχόλια) για το ίδιο
char buffer(1000); //The buffer to store the read data stream char *filename = 'C:\Temp\mysamplefile.txt'; /* name and path of the file to be read from */ char * accessmode = 'r'; /* access mode r /r+ = open for reading , w /w+ = open for writing ,a /a+ = open for appending */ /* '+' sign indicates that the file must already exist */ long filepointer; /* declaring a file pointer */ int count=500; /* number of bytes to be read */ filepointer = fopen (filename, accessmode); /* open file in read mode */ fread (buffer,sizeof(char),count,filepointer); /* read from output file */ lr_save_string(buffer,'requestbody'); //we can use this as a LR parmeter and can use in the script now fclose (filepointer); //close the file pointer
Σημειώστε ότι στον κωδικό που εμφανίζεται παραπάνω, διαβάζουμε 500 byte από το αρχείο κειμένου. Προφανώς, ενδέχεται να μην γνωρίζουμε πάντα το μέγεθος του αρχείου. Έτσι μπορούμε να χρησιμοποιήσουμε «Fseek» και «Ftell» Λειτουργίες C (θα το αφήσω για να εξερευνήσετε) για να βρείτε το μέγεθος του αρχείου και να χρησιμοποιήσετε το 'μετρώ' χαρακτηριστικό του «Απροσδιόριστο» λειτουργούν αναλόγως.
Τώρα ας δούμε πώς να γράψετε δεδομένα σε ένα αρχείο κειμένου.
Παράδειγμα: Ας πούμε ότι έχουμε ένα σενάριο που δημιουργεί παραγγελίες και δημιουργεί «παραγγελία». Εάν θέλουμε να μάθουμε όλα τα αναγνωριστικά παραγγελίας που δημιουργήθηκαν από το σενάριό μας σε μια δοκιμή, μπορούμε να κάνουμε το σενάριό μας να αντιγράψει αυτά τα αναγνωριστικά παραγγελίας σε ένα εξωτερικό αρχείο κειμένου.
«Fprintf» - Η συνάρτηση C γράφει τη μορφοποιημένη έξοδο σε ένα αρχείο.
Αυτή η συνάρτηση έχει αυτά τα χαρακτηριστικά:
file_pointer - Ο δείκτης του αρχείου
format_string - Η μορφοποιημένη συμβολοσειρά για εγγραφή στο αρχείο.
υποστηρίζει - Ένα ή περισσότερα προαιρετικά ορίσματα εκτύπωσης.
Το παράδειγμα κώδικα εμφανίζεται παρακάτω. Ας υποθέσουμε ότι έχουμε συσχετίσει και αποθηκεύσει το 'orderid' στην παράμετρο 'cOrderId'.
Παράδειγμα:
char *filename = 'C:\Temp\mysamplefile.txt'; /* name and path of the file to be created or edited */ char * accessmode = 'a+'; /* access mode r /r+ = open for reading , w /w+ = open for writing ,a /a+ = open for appending */ /* '+' sign indicates that the file must already exist */ long filepointer; /* declaring a file pointer */ filepointer = fopen (filename, accessmode); /* open file in append mode */ fprintf (filepointer, '%s
', lr_eval_string('{cOrderId}')); /* write orders id to output file */ fclose (filepointer); /* close the file pointer */
Ελπίζω, είμαστε τώρα καλοί με τις έννοιες της ανάγνωσης δεδομένων ή της σύνταξης δεδομένων σε ένα εξωτερικό αρχείο (φυσικά θα μπορούσαν να υπάρχουν οι άλλοι τρόποι να κάνουμε το ίδιο πράγμα από αυτό που συζητήσαμε παραπάνω). Θα ήταν πολύ χρήσιμο να κάνετε μια εμπεριστατωμένη μελέτη σχετικά με τις λειτουργίες αρχείων στο C (μπορείτε να ανατρέξετε σε οποιοδήποτε καλό σεμινάριο ή βιβλία C), καθώς αυτά απαιτούνται πάρα πολύ σε πολλά σενάρια σε πραγματικό χρόνο.
Σενάριο 6:Πώς να χειριστείτε τη συσχέτιση όταν αλλάζουν τα όρια
Στο σεμινάριο συσχετίσεων, χρησιμοποιήσαμε συνάρτηση συσχέτισης βάσει ορίων για να καταγράψουμε τις δυναμικές τιμές από την απόκριση. Αλλά, τι γίνεται αν έχουμε ένα σενάριο όπου τα όρια αλλάζουν; Υπάρχουν διάφοροι τρόποι αντιμετώπισης τέτοιων καταστάσεων. Ας τα δούμε αναλυτικά.
α) Χρησιμοποιώντας τις σημαίες «IC», «DIG» και «ALNUM»:
IC - Αυτή η σημαία δίνει εντολή στο VuGen να αγνοήσει την υπόθεση στο όριο Αριστερά / Δεξιά.
Παράδειγμα: Εάν το Αριστερό Όριο είναι μερικές φορές κεφαλαίο και μερικές φορές πεζά, χρησιμοποιούμε αυτήν τη σημαία.
web_reg_save_param ('corUserSession','LB/IC= name='userSession' value='','RB='/>', LAST);
ΕΣΥ - Αυτή η σημαία δίνει εντολή στο VuGen να εξετάσει οποιονδήποτε μεμονωμένο αριθμό όπου ο χαρακτήρας μπαλαντέρ '#' χρησιμοποιείται στο όριο Αριστερά / Δεξιά.
εφαρμογή που σας επιτρέπει να κατασκοπεύετε άλλα τηλέφωνα
Παράδειγμα: Εάν το Αριστερό όριο (ή το Δεξιό όριο) αλλάζει έτσι (μόνο ένας αριθμός σε μια συγκεκριμένη θέση).
GJHi3rty
1GJHi8rty
GJHi7rty
Μπορούμε να χρησιμοποιήσουμε τη σημαία «DIG» όπως φαίνεται παρακάτω, καθώς θα φροντίσει για τον μεταβαλλόμενο αριθμό.
LB / DIG = GJHi # rty
άλτερ - Αυτή η σημαία δίνει εντολή στο VuGen να εξετάσει οποιονδήποτε αλφαριθμητικό χαρακτήρα όπου ο χαρακτήρας μπαλαντέρ «^» χρησιμοποιείται στο όριο Αριστερά / Δεξιά.
Παράδειγμα: Εάν το Αριστερό όριο (ή το Δεξιό όριο) αλλάζει έτσι (μόνο ένας αλφαριθμητικός χαρακτήρας σε μια συγκεκριμένη θέση).
GJHi3rty
GJHiKrty
GJHitrty
Μπορούμε να χρησιμοποιήσουμε τη σημαία 'ALNUM' όπως φαίνεται παρακάτω, καθώς θα φροντίσει για τον αλφαριθμητικό χαρακτήρα που αλλάζει
LB / ALNUM = GJHi ^ rty
Επίσης, μπορούμε να χρησιμοποιήσουμε δύο σημαίες μαζί - όπως το 'ALNUMIC' που είναι και το 'ALNUM' και το 'IC'.
β) Χρήση των χαρακτηριστικών 'SaveLen' και 'SaveOffset':
Μπορούμε να χρησιμοποιήσουμε αυτά τα δύο χαρακτηριστικά του «Web_reg_save_param» Λειτουργεί κατάλληλα για την εισαγωγή μόνο του στατικού τμήματος των Αριστερών / Δεξιών ορίων.
γ) Χρήση τυπικών εκφράσεων:
Μπορούμε να χρησιμοποιήσουμε «Web_reg_save_param_regexp» συνάρτηση συσχέτισης για να αποθηκεύσετε τη δυναμική τιμή (σε μια παράμετρο) που ταιριάζει με μια κανονική έκφραση.
Παράδειγμα: Ας υποθέσουμε ότι η δυναμική τιμή που θέλουμε να καταγράψουμε είναι «3959339» από το δεδομένο κείμενο,
PriceControl_ctl01 Υπόλοιπο 'Όνομα = jack', 'Refid = 3959339'
Δεν μπορούμε να χρησιμοποιήσουμε τη συνάρτηση συσχέτισης με βάση τα όρια, επειδή η τιμή και το μήκος του πεδίου όπως το «Όνομα» παραπάνω μπορεί να αλλάξει (και έτσι δεν μπορούμε να το χρησιμοποιήσουμε στο αριστερό ή το δεξί όριο).
Μπορούμε να χρησιμοποιήσουμε το «Web_reg_save_param_regexp» λειτουργία συσχέτισης όπως φαίνεται παρακάτω για να αντιμετωπιστεί αυτό το πρόβλημα.
web_reg_save_param_regexp('ParamName=corName', 'RegExp= PriceControl_ctl01 'Name=((a-z)+)', 'Refid=((0-9)+)' balance', 'Group=1','Ordinal=All', LAST);
Οι ομάδες τυπικής έκφρασης τοποθετούνται σε παρένθεση και το χαρακτηριστικό 'Ομάδα' αποφασίζει ποια ομάδα θα εξετάσει για την αποθήκευση της αντίστοιχης αντιστοίχισης με την καθορισμένη παράμετρο (στο πρώτο χαρακτηριστικό).
Παρακάτω εμφανίζονται μερικές τακτικές αντιστοιχίσεις έκφρασης:
d - ταιριάζει με ένα μονοψήφιο
w - ταιριάζει με μία λέξη
(A-Z) + - αντιστοιχεί σε οποιαδήποτε λέξη με κεφαλαία γράμματα
(a-z) + - αντιστοιχεί σε οποιαδήποτε λέξη με πεζά γράμματα
(0-9) + - αντιστοιχεί σε οποιαδήποτε αριθμητική τιμή
Σενάριο 7:Πώς να γράψετε και να χρησιμοποιήσετε μια συνάρτηση σε ένα σενάριο VuGen
Όπως σε οποιαδήποτε άλλη γλώσσα προγραμματισμού, μπορούμε να γράψουμε / να ορίσουμε μια συνάρτηση χειροκίνητα (συνήθως ονομάζεται συνάρτηση καθορισμένη από το χρήστη) και να την χρησιμοποιήσουμε οπουδήποτε στο σενάριο VuGen.
Ας υποθέσουμε ότι πρέπει να στείλουμε ένα μοναδικό όνομα σχεδίου σε κάθε αίτημα ενός συγκεκριμένου σεναρίου. Έτσι, αντί να γράφουμε τον απαιτούμενο κωδικό (που δημιουργεί ένα μοναδικό όνομα) πολλές φορές, μπορούμε να ορίσουμε μια συνάρτηση (που δημιουργεί ένα μοναδικό όνομα) και να καλέσουμε όποτε (και οπουδήποτε) απαιτείται στο σενάριο VuGen.
Αν και η συνάρτηση σε ένα σενάριο VuGen μπορεί να γραφτεί μέσα σε οποιαδήποτε ενέργεια, είναι γενικά γραμμένη μέσα στο «Globals.h» αρχείο (στην ενότητα Extra Files του σεναρίου VuGen) ή μέσα σε ένα αρχείο που δημιουργήθηκε πρόσφατα (στην ίδια ενότητα «Extra Files»). Μόλις γραφτεί, η συνάρτηση μπορεί να κληθεί από οποιαδήποτε ενέργεια.
Η παρακάτω εικόνα δείχνει μια συνάρτηση που ορίζεται από το χρήστη «MyFunction» που γράφεται μέσα στο αρχείο «globals.h».
Όπως συζητήθηκε παραπάνω, ο άλλος τρόπος είναι να δημιουργήσετε ένα νέο αρχείο και να γράψετε τη συνάρτηση μέσα σε αυτό.
Το μόνο που πρέπει να θυμάστε κατά τη δημιουργία ενός νέου αρχείου είναι ότι πρέπει να το συμπεριλάβουμε στο αρχείο «globals.h» (χωρίς το οποίο το VuGen δεν θα αναγνωρίσει αυτό το αρχείο).
συμπέρασμα
Έτσι, σε αυτό το σεμινάριο, είδαμε πώς να χειριστούμε κάποιες προκλήσεις σε πραγματικό χρόνο στο σενάριο VuGen και προφανώς θα συναντούσαμε πολλά άλλα σενάρια όταν εργαζόμαστε σε διάφορες εφαρμογές.
Επίσης, θα συνειδητοποιούσατε ότι οι λειτουργίες συμβολοσειράς C και οι λειτουργίες αρχείων C απαιτούνται πολύ (και χρήσιμες) για τον χειρισμό διαφόρων σεναρίων. Ωστόσο, θα σας συνιστούσα να αφιερώσετε λίγο χρόνο σε αυτά.
Στο επόμενο σεμινάριό μας, θα δούμε και θα κατανοήσουμε κάποιες σημαντικές προκαθορισμένες συναρτήσεις που χρησιμοποιούνται σε σενάρια VuGen (έχουμε ήδη δει μερικές από τις συναρτήσεις).
=> Επισκεφθείτε εδώ για πλήρη σειρά εκπαιδευτικών προγραμμάτων LoadRunner
Εκπαιδευτικό πρόγραμμα PREV | ΕΠΟΜΕΝΟ Φροντιστήριο
Συνιστώμενη ανάγνωση
- Έλεγχος απόδοσης υπηρεσιών διαδικτύου χρησιμοποιώντας scripting LoadRunner VuGen
- Advanced Unix Shell Scripting: Arrays, File and String Test Operators, Ειδικές μεταβλητές
- Φόρτωση δοκιμής με HP LoadRunner Tutorials
- Επιλογές εγγραφής VUGen στο LoadRunner
- Τρόπος εγκατάστασης αρχείων δέσμης ενεργειών LoadRunner VuGen και ρυθμίσεων χρόνου εκτέλεσης
- Σημαντικές λειτουργίες LoadRunner που χρησιμοποιούνται σε δέσμες ενεργειών VuGen με παραδείγματα
- Εισαγωγή στο Micro Focus LoadRunner - Δοκιμή φόρτωσης με LoadRunner Tutorial # 1
- JMeter BeanShell Scripting Μέρος 2