LoadRunner Transactions, Text and Image Checks, Comments and Rendezvous Points

Introduzione ai miglioramenti di base dello script VuGen:

Abbiamo esplorato la correlazione in LoadRunner in dettaglio nel nostro precedente tutorial in questo tutorial completo di LoadRunner Training.

Negli ultimi due tutorial, abbiamo lavorato sulla gestione dei dati in uno script VuGen (Correlazione e parametrizzazione).

In questo tutorial LoadRunner, vedremo gli altri miglioramenti di base (elencati di seguito) che sono necessari per il nostro script:

  1. Transazioni-Per misurare il tasso e il tempo di risposta delle azioni dell’utente.
  2. Controlli di testo e immagini-Per garantire che la risposta restituita sia corretta.
  3. Punti Rendezvous: per far sì che gli utenti eseguano un’attività contemporaneamente.

=> Clicca Qui Per Completare la Serie di LoadRunner Tutorial

transazioni, testo e immagine, i controlli, i commenti e i punti di rendezvoustransazioni, testo e immagine, controlli, commenti e i punti di rendezvous

Transazioni in VuGen Script

La mera riproduzione di prestazioni script sarà solo messo un carico di applicazione, ma non misura nulla. L’obiettivo finale di qualsiasi script di prestazioni è quello di iniettare il carico e misurare la velocità e il tempo di risposta delle azioni dell’utente sull’applicazione.

Ad esempio, quanto tempo ha impiegato una ricerca di prodotti quando 100 utenti si trovano sull’applicazione, quanti report vengono generati in un tempo di 15 minuti e così via. Per misurarli, dobbiamo inserire le transazioni in uno script VuGen (dopo il test, possiamo vedere la velocità e il tempo di risposta di queste transazioni nei risultati).

‘Una transazione è una misurazione end to end di un’azione utente (o di un gruppo di azioni utente) su un’applicazione’.

Le transazioni possono essere inserite in due modi:

  1. Durante la registrazione
  2. Dopo la registrazione (dove inseriamo manualmente le funzioni di transazione nello script)

Inseriamo la transazione per l’azione utente ‘Login’ sulla nostra applicazione ‘Web Tours’.

Nel nostro primo tutorial, abbiamo visto come registrare le azioni dell’utente. Durante la registrazione, dopo aver inserito il ‘Username ‘e’ Password ‘nella pagina di login, poco prima di fare clic sul pulsante’ Login’, fare clic sull’icona’ Inserisci Start Transaction ‘ sulla barra di registrazione mobile.

1.Durante la registrazione

VuGen richiede il nome della transazione. Immettere un nome significativo. Abbiamo dato “Login” qui, ma è una buona pratica seguire una convenzione come questa (numero di transazione, nome dello scenario, azione dell’utente ecc.): 01_WebTours_Launch 02_WebTours_Login (e così via).

2.VuGen richiede il nome della transazione

Ora fai clic sul pulsante Login.

3.Ora fai clic sul pulsante Login

Una volta raggiunta la home page (pagina principale), fai clic sull’icona ‘Inserisci fine transazione’ sulla barra di registrazione mobile.

4.fare clic sull'icona' Inserisci fine transazione ' sulla barra di registrazione mobile.

Seleziona la transazione che vogliamo terminare (transazione’ Login ‘ qui).

5. Transazione 'Login' che vogliamo terminare

Interrompere la registrazione e vedere lo script generato. Possiamo vedere che le funzioni di inizio e fine transazione sono inserite nello script (evidenziate in giallo) e tutte le richieste corrispondenti all’azione utente “Login” sono racchiuse tra queste funzioni.

lr_start_transaction("Login");web_submit_data("login.pl","Action=http://127.0.0.1:1080/cgi-bin/login.pl","Method=POST","TargetFrame=","RecContentType=text/html","Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in=home","Snapshot=t3.inf","Mode=HTML",ITEMDATA,"Name=userSession", "Value=123530.624949372zDftVAzpfcAiDDDDDiVctpzDQVcf", ENDITEM,"Name=username", "Value=jojo", ENDITEM,"Name=password", "Value=bean", ENDITEM,"Name=JSFormSubmit", "Value=off", ENDITEM,"Name=login.x", "Value=69", ENDITEM,"Name=login.y", "Value=8", ENDITEM,LAST);lr_end_transaction("Login",LR_AUTO);

La sintassi delle funzioni “transaction start” e “transaction end” è piuttosto semplice. Entrambi hanno il nome della transazione come primo argomento. La funzione ‘end transaction’ ha un altro attributo – ‘LR_AUTO’, questo indica a VuGen di Passare o fallire automaticamente una transazione (invece di specificare esplicitamente una condizione per un passaggio o un errore).

Se il load runner rileva errori nell’esecuzione delle richieste all’interno di una transazione, fallisce la transazione altrimenti passa la transazione.

Controlli di testo e immagini nello script VuGen

I controlli di testo vengono utilizzati per verificare se la risposta restituita per la richiesta è corretta o meno. Nel tutorial “Correlazione”, abbiamo visto che a volte VuGen potrebbe non mostrare alcun errore, ma la risposta restituita potrebbe non essere quella corretta. Quindi, per garantire che la risposta sia corretta, usiamo i controlli di testo.

Ad esempio, quando accediamo all’applicazione web Tours, andiamo alla home page. Verifichiamo nello script che stiamo ottenendo la risposta corretta (homepage) o meno quando accediamo.

Per fare ciò, dobbiamo identificare un testo nella risposta (homepage qui) che può dire se la risposta è corretta o meno. “Benvenuto” è uno di questi testi.

6.Controlli di testo e immagini

Per il controllo del testo, usiamo la funzione ‘web_reg_find’ poco prima della richiesta.

La sintassi di questa funzione è:

web_reg_find("Text=","SaveCount=","Fail=",LAST);

Qui abbiamo tre attributi (consultare la guida VuGen per ottenere l’elenco completo degli attributi):

‘Testo’- Usato per specificare quale testo cercare.

‘SaveCount’ – Salva il numero di occorrenze del testo specificato in un parametro specificato.

‘Fail’ – Prende uno dei due valori -‘Found’ e ‘NotFound’ e fallisce di conseguenza lo script.

Quindi la funzione, web_reg_find(“Text=Welcome”,”SaveCount=WelcomeCount”,”Fail=NotFound”, LAST) cerca il testo ‘Welcome’ nella risposta e salva il numero di occorrenze nel parametro ‘WelcomeCount’ (e fallisce lo script se il testo non viene trovato).

Lo script è simile a questo:

web_reg_find("Text=Welcome","SaveCount=WelcomeCount","Fail=NotFound",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=123531.149939247zDftVDDpfcfDiVctpiAVVf", 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);

Ora se ripetiamo lo script, otterremo un errore per la richiesta di accesso (vedi nel registro relè) perché VuGen non ha trovato il testo che abbiamo specificato, nella risposta. Questo perché non abbiamo ottenuto la home page corretta (come mostrato nel ‘runtime viewer’).

7.se riproduciamo lo script, otterremo un errore per la richiesta di accesso

Ora correggiamo il nostro script (correla la sessione utente) e riproduciamo di nuovo lo script.

 web_reg_find("Text=Welcome","SaveCount=WelcomeCount","Fail=NotFound",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);

Questa volta non vediamo alcun errore nel registro di riproduzione, ma vediamo un messaggio che il nostro controllo del testo ha avuto successo. Quindi questa volta abbiamo ottenuto la risposta corretta (in quanto è corroborata dal ‘runtime viewer’).

8.correggi il nostro script (correla l'userSession) e ripeti di nuovo lo script.

Possiamo combinare i controlli di testo con le transazioni e fare in modo che VuGen passi una transazione se il controllo di testo ha esito positivo e fallisca una transazione se un controllo di testo non è riuscito.

Questo è mostrato di seguito:

lr_start_transaction("Login");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);}

Abbiamo usato ‘if statement’ qui con l’attributo ‘SaveCount’. Il parametro’ WelcomeCount ‘ (che salva il numero di occorrenze del testo) viene utilizzato come condizione per passare/fallire la transazione. Gli attributi’ LR_PASS ‘e’ LR_FAIL ‘ delle funzioni di transazione vengono utilizzati per passare e fallire esplicitamente (rispettivamente) una transazione.

Nota: Abbiamo usato due nuove funzioni qui – ‘atoi ‘ e’lr_eval_string’. Parleremo di queste funzioni più tardi.

Ulteriori informazioni sulla combinazione degli attributi della funzione ‘web_reg_find’:

#1) Se viene utilizzato solo l’attributo’ Text ‘ –

Esempio: web_reg_find – “Text = Welcome”, LAST) –

VuGen cerca il testo e fallisce lo script se la ricerca non ha successo.

#2) Se vengono utilizzati solo gli attributi ‘Text’ e ‘SaveCount’ –

Esempio: web_reg_find(“Text=Welcome”,”SaveCount=WelcomeCount”, LAST) – VuGen cerca il testo e salva il numero di occorrenze (anche se è zero) nel parametro specificato (non fallisce lo script se la ricerca non ha successo).

#3) Se vengono utilizzati solo gli attributi ‘Text’ e ‘Fail’ –

Esempio: web_reg_find (“Text=Welcome”,” Fail=NotFound”, LAST) – VuGen cerca il testo e fallisce lo script se il testo viene trovato/non trovato.

I controlli di testo possono essere inseriti anche durante la registrazione utilizzando l’icona ‘Inserisci controllo testo’ sulla barra di registrazione mobile. Questo inserirà la stessa funzione ‘web_reg_find’ nello script.

9.Icona 'Inserisci controllo testo'

Ma è meglio inserire questa funzione manualmente poiché avremo un controllo migliore principalmente sugli attributi.

Abbiamo capito chiaramente il controllo del testo, ora andiamo al controllo delle immagini.

Controllo immagine viene utilizzato per verificare la presenza di un’immagine specificata in una risposta. la funzione’ web_image_check ‘ viene utilizzata per il controllo dell’immagine. Questa funzione deve essere messa dopo la richiesta (nella risposta di cui ci aspettiamo l’immagine).

Esempio di questa funzione:

web_image_check("Image","Src=/WebTours/images/flights.gif",LAST)

Dove il primo attributo è un nome significativo e il secondo attributo (‘Src’) è il nome/collegamento dell’immagine (fare riferimento alla guida VuGen per ottenere l’elenco completo degli attributi).

Commenti nello script VuGen

I commenti in uno script VuGen possono essere inseriti durante la registrazione e anche manualmente dopo la registrazione dello script.

Durante la registrazione, fare clic sull’icona’ Inserisci commento ‘ sulla barra di registrazione mobile.

10.'Inserisci commento' icona

Inserisci il commento (dire ‘Login’ qui).

11.Inserisci il commento

Dopo la registrazione, possiamo vedere i commenti nello script come mostrato di seguito.

/* Login */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=t6.inf", "Mode=HTML",

In VuGen, una singola riga può essere commentata semplicemente mettendo ‘/ / ‘ prima della riga come mostrato di seguito:

// web_add_cookie("SRCHD=AF=IESS3N; DOMAIN=www.bing.com");web_add_cookie("SRCHUID=V=2&GUID=89730C3AA700412BAB917005DE9F5F47&dmnchg=1; DOMAIN=www.bing.com");web_add_cookie("SRCHUSR=DOB=20180312; DOMAIN=www.bing.com");

E più linee possono essere collegate mettendo ‘/*’ all’inizio e ‘* / ‘ alla fine (come mostrato di seguito)

/* web_add_cookie("SRCHD=AF=IESS3N; DOMAIN=www.bing.com");web_add_cookie("SRCHUID=V=2&GUID=89730C3AA700412BAB917005DE9F5F47&dmnchg=1; DOMAIN=www.bing.com");web_add_cookie("SRCHUSR=DOB=20180312; DOMAIN=www.bing.com"); */

Nota: Negli esempi sopra riportati, abbiamo commentato le funzioni dei cookie (web_add_cookie). Parleremo delle funzioni dei cookie più avanti in questa serie di tutorial.

È buona norma inserire commenti ad ogni passaggio durante la registrazione perché ci aiuterà a mettere in relazione le richieste nello script con le azioni dell’utente sull’applicazione.

Punto di Rendezvous nello script VuGen

Se abbiamo uno scenario in cui un numero maggiore di utenti esegue un’azione contemporaneamente sull’applicazione (come il controllo dei risultati) e se dobbiamo simulare lo stesso nel nostro test delle prestazioni, possiamo usare un “punto di Rendezvous”.

Un ‘punto di Rendezvous’ è una singola e semplice funzione in uno script VuGen che istruisce load runner (durante un test con più utenti) ad attendere in un passaggio specificato nello script fino a quando tutti i Vusers (eseguendo lo script) arrivano a quel passaggio in modo che la richiesta successiva possa essere eseguita simultaneamente.

La sintassi per la funzione Rendezvous è:

lr_rendezvous("MeaningfulName"); 

Questa funzione può essere inserita durante la registrazione e anche manualmente dopo la registrazione dello script.

Supponiamo di voler mettere un carico simultaneo sulla fase di pagamento nella nostra applicazione ‘Web Tours’. Durante la registrazione in quel passaggio (prima di inviare i dettagli del pagamento ), fare clic sull’icona ‘Inserisci Rendezvous’ sulla barra di registrazione mobile.

12.dettagli di pagamento

E inserire il nome del punto di incontro (qualsiasi nome significativo).

13.inserisci il nome del punto rendezvous

Dopo la registrazione, possiamo vedere la funzione rendezvous nello script in questo modo.

lr_rendezvous("Payment");web_submit_data("reservations.pl_3","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=t13.inf","Mode=HTML",ITEMDATA,"Name=firstName", "Value=Jojo", ENDITEM,"Name=lastName", "Value=Bean", ENDITEM,"Name=address1", "Value=1st Lane, Down Street", ENDITEM,"Name=address2", "Value=567123", ENDITEM,"Name=pass1", "Value=Jojo Bean", ENDITEM,"Name=creditCard", "Value=123456789101", ENDITEM,"Name=expDate", "Value=0520", ENDITEM,"Name=oldCCOption", "Value=", ENDITEM,"Name=numPassengers", "Value=1", ENDITEM,"Name=seatType", "Value=Coach", ENDITEM,"Name=seatPref", "Value=None", ENDITEM,"Name=outboundFlight", "Value=020;338;05/03/2018", ENDITEM,"Name=advanceDiscount", "Value=0", ENDITEM,"Name=returnFlight", "Value=", ENDITEM,"Name=JSFormSubmit", "Value=off", ENDITEM,"Name=.cgifields", "Value=saveCC", ENDITEM,"Name=buyFlights.x", "Value=63", ENDITEM,"Name=buyFlights.y", "Value=12", ENDITEM,LAST);

Ora quando eseguiamo questo script con più utenti nel Controller, lo script verrà eseguito dai Vuser in modo indipendente, ma i Vuser aspetteranno a questo passaggio di “Pagamento” fino a quando tutti (o una certa percentuale di Vuser definiti nella politica Rendezvous) raggiungeranno questo passaggio dopo di che eseguiranno questo passaggio contemporaneamente.

Vedremo di più sulla politica rendezvous (opzioni) nel tutorial Controller.

Conclusione

Fino ad ora abbiamo discusso la correlazione e la parametrizzazione nei precedenti tutorial e transazioni, controlli di testo/immagine, commenti e punti di incontro in questo tutorial, abbiamo anche coperto i più importanti metodi di miglioramento dello script.

Nel nostro prossimo tutorial, vedremo alcune altre sfide di scripting insieme ai modi per gestirle.

=> Visita qui per una serie completa di tutorial LoadRunner

PREV Tutorial / NEXT Tutorial

Leave a Reply