Uno script registrato può simulare un utente virtuale; tuttavia, una semplice registrazione potrebbe non essere sufficiente per replicare il "comportamento reale dell'utente".
Quando uno script viene registrato, copre il flusso singolo e diretto dell'applicazione in oggetto. Considerando che, un utente reale può eseguire più iterazioni di qualsiasi processo prima di disconnettersi. Il ritardo tra i pulsanti di clic (tempo di riflessione) varia da persona a persona. È probabile che alcuni utenti reali accedano alla tua applicazione tramite DSL e altri accedano tramite una connessione remota. Quindi, per ottenere la sensazione reale dell'utente finale, dobbiamo migliorare i nostri script in modo che corrispondano esattamente, o almeno molto vicini nel comportamento agli utenti reali.
Quanto sopra è la considerazione più significativa quando si esegue il "test delle prestazioni", ma c'è di più in uno script VU. Come valuterete il tempo preciso impiegato da un VUser quando SUL è sottoposto a un test delle prestazioni? Come fai a sapere se il VUser è passato o non è riuscito a un certo punto? Qual è la causa dell'errore, se un processo di backend non è riuscito o se le risorse del server erano limitate?
Dobbiamo migliorare il nostro script per aiutare a rispondere a tutte le domande di cui sopra.
- Utilizzo delle transazioni
- Comprensione del tempo di riflessione, punti di incontro e commenti
- Inserimento di funzioni tramite menu
- Cos'è la parametrizzazione?
- Impostazioni del tempo di esecuzione e loro impatto sulla simulazione della VU
- Esegui logica
- Stimolazione
- Log
- Think Times
- Simulazione di velocità
- Emulazione del browser
- Proxy
Utilizzo delle transazioni
Le transazioni sono meccanismi per misurare il tempo di risposta del server per qualsiasi operazione. In parole semplici, l'uso di "Transazione" aiuta a misurare il tempo impiegato dal sistema per una particolare richiesta. Può essere piccolo come un clic di un pulsante o una chiamata AJAX quando si perde il focus dalla casella di testo.
L'applicazione delle transazioni è semplice. Basta scrivere una riga di codice prima che la richiesta venga effettuata al server e chiudere la transazione quando la richiesta termina. LoadRunner richiede solo una stringa come nome della transazione.
Per aprire una transazione, utilizza questa riga di codice:
lr_start_transaction ("Nome transazione");
Per chiudere la transazione, utilizza questa riga di codice:
lr_end_transaction ("Nome transazione",);
Lo
- LR_AUTO
- LR_PASS
- LR_FAIL
Esempio:
lr_end_transaction ("My_Login", LR_AUTO);
lr_end_transaction ("Business_Workflow_Transaction Name", LR_FAIL);
Punti da notare:
- Non dimenticare che stai lavorando con "C" e questo è un linguaggio che fa distinzione tra maiuscole e minuscole.
- Il carattere punto (.) Non è consentito nel nome della transazione, sebbene sia possibile utilizzare spazi e trattino basso.
- Se hai ramificato bene il tuo codice e hai aggiunto checkpoint per verificare la risposta dal server, puoi utilizzare la gestione degli errori personalizzata, come LR_PASS o LR_FAIL. Altrimenti, puoi usare LR_AUTO e LoadRunner gestirà automaticamente l'errore del server (HTTP 500, 400 ecc.)
- Quando si applicano le transazioni, assicurarsi che non vi siano istruzioni think_time inserite in sandwich o altrimenti la transazione includerà sempre quel periodo.
- Poiché LoadRunner richiede una stringa costante come nome della transazione, un problema comune quando si applica la transazione è la mancata corrispondenza della stringa. Se dai un nome diverso quando apri e chiudi una transazione, comporterai almeno 2 errori. Poiché la transazione che hai aperto non è mai stata chiusa, LoadRunner restituirà un errore. Inoltre, la transazione che stai tentando di chiudere non è mai stata aperta, quindi si è verificato un errore.
- Puoi usare la tua intelligenza e rispondere a te stesso quale degli errori di cui sopra verrà segnalato per primo? Per convalidare la tua risposta, perché non commetti il tuo errore? Se avessi risposto bene, sei sulla buona strada. Se hai risposto male, devi concentrarti.
- Poiché LoadRunner si occupa automaticamente della sincronizzazione delle richieste e della risposta, non dovrai preoccuparti della risposta quando applichi le transazioni.
Comprensione del tempo di riflessione, punti di incontro e commenti
Punti di incontro
Rendezvous Points significa "punti di incontro". È solo una riga di istruzioni che dice a LoadRunner di introdurre la concorrenza. Si inseriscono punti di incontro negli script del VUser per emulare il carico di utenti pesanti sul server.
I punti di incontro indicano al VUser di attendere durante l'esecuzione del test che più VUser arrivino a un certo punto, in modo che possano eseguire contemporaneamente un'attività. Ad esempio, per emulare i picchi di carico sul server della banca, è possibile inserire un punto di incontro che istruisce 100 VUser a depositare contanti sui propri conti contemporaneamente. Ciò può essere ottenuto facilmente utilizzando rendezvous.
Se i punti di incontro non sono posizionati correttamente, il VUser accederà a parti diverse dell'applicazione, anche per lo stesso script. Questo perché ogni VUser ottiene tempi di risposta diversi e quindi pochi utenti sono in ritardo.
Sintassi: lr_rendesvous ("Nome logico");
Migliori pratiche:
- Prefisso un punto di incontro con "rdv_" per una migliore leggibilità del codice; ad es. "rdv_Login"
- Rimuovere eventuali dichiarazioni temporali di pensiero immediate
- Applicazione di punti di incontro in una vista script (dopo la registrazione)
Commenti
Aggiungi commenti per descrivere un'attività, un pezzo di codice o una riga di codice. I commenti aiutano a rendere il codice comprensibile per chiunque vi faccia riferimento in futuro. Forniscono informazioni su operazioni specifiche e separano due sezioni per distinguerle.
Puoi aggiungere commenti
- Durante la registrazione (utilizzando lo strumento)
- Dopo la registrazione (scrivendo direttamente nel codice)
Best practice: contrassegnare eventuali commenti all'inizio di ogni file di script
Inserimento di funzioni tramite menu
Sebbene sia possibile scrivere direttamente semplici righe di codice, potrebbe essere necessario un indizio per richiamare una funzione. Puoi anche utilizzare Steps Toolbox (noto come Inserisci funzione precedente alla versione 12) per trovare e inserire qualsiasi funzione direttamente nel tuo script.
Puoi trovare la barra degli strumenti dei passaggi in Visualizza nella casella degli strumenti dei passaggi.
Questo aprirà una finestra laterale, guarda l'istantanea:
Cos'è la parametrizzazione?
Un parametro in VUGen è un contenitore che contiene un valore registrato che viene sostituito per vari utenti.
Durante l'esecuzione dello script (in VUGen o Controller), il valore da una fonte esterna (come .txt, XML o database) sostituisce il valore precedente del parametro.
La parametrizzazione è utile per inviare valori dinamici (o univoci) al server, ad esempio; si desidera che un processo aziendale esegua 10 iterazioni scegliendo ogni volta un nome utente univoco.
Aiuta anche a stimolare un comportamento reale nel sistema del soggetto. Dai un'occhiata all'esempio seguente:
Esempi di problemi:
Il processo aziendale funziona solo per la data corrente che proviene dal server, quindi non può essere passato come richiesta hardcoded.
A volte, l'applicazione client passa un ID univoco al server (ad esempio session_id) affinché il processo continui (anche per un singolo utente) - In tal caso, la parametrizzazione aiuta.
Spesso, l'applicazione client mantiene una cache dei dati inviati al e dal server. Di conseguenza, il server non riceve un comportamento utente reale (nel caso in cui il server esegua un algoritmo diverso a seconda dei criteri di ricerca). Sebbene lo script VUser venga eseguito correttamente, le statistiche sulle prestazioni tracciate non saranno significative. L'utilizzo di dati diversi attraverso la parametrizzazione aiuta a emulare l'attività lato server (procedure, ecc.) Ed esercita il sistema.
Una data che è hardcoded nel VUser durante la registrazione potrebbe non essere più valida una volta trascorsa tale data. La parametrizzazione della data consente di eseguire correttamente il VUser sostituendo la data hardcoded. Tali campi o richieste sono i candidati giusti per la parametrizzazione.
Fare clic qui se il video non è accessibile
Impostazioni del tempo di esecuzione e loro impatto sulla simulazione della VU
Le impostazioni del tempo di esecuzione sono significative quanto il tuo script VUGen. Con diverse configurazioni, è possibile ottenere diversi progetti di prova. Questo è il motivo per cui potresti ottenere risultati non ripetibili se le impostazioni del tempo di esecuzione non sono coerenti. Discutiamo ogni attributo uno per uno.
Esegui logica
Run Logic definisce il numero di volte in cui verranno eseguite tutte le azioni, eccetto vuser_init e vuser_end.
Probabilmente questo rende più chiaro il motivo per cui LoadRunner suggerisce di mantenere tutto il codice di accesso all'interno di vuser_init e la parte di disconnessione in vuser_end, entrambi esclusivamente.
Se hai creato più azioni, ad esempio Accedi, Apri schermo, Calcola noleggio, Invia fondi, Verifica saldo ed esci, lo scenario seguente si svolgerà per ciascun VUser:
Tutti i VUser effettueranno il login, eseguiranno Open Screen, Calculate Rental, Submit Funds, Check Balance - quindi - di nuovo Open Screen, Calculate Rentals… e così via - ripetendo 10 volte - seguito da logout (una volta).
Questa è un'impostazione potente che consente di agire più come un utente reale. Ricorda, un utente reale non effettua il login e si disconnette ogni volta: di solito ripete gli stessi passaggi.
Quante volte fai clic su "Posta in arrivo" quando controlli la posta prima di disconnetterti?
Stimolazione
Questo è importante. Per lo più le persone non sono in grado di comprendere la differenza tra il ritmo e il tempo di riflessione. L'unica differenza è che "la stimolazione si riferisce al ritardo tra le iterazioni" mentre il tempo di pensiero è il ritardo tra 2 passaggi qualsiasi.
L'impostazione consigliata dipende dal progetto del test. Tuttavia, se stai cercando di avere un carico aggressivo, valuta la possibilità di scegliere "Non appena termina l'iterazione precedente"
Log
Un registro (come generalmente inteso) è una contabilità di tutti gli eventi durante l'esecuzione di LoadRunner. Puoi abilitare il log per sapere cosa sta succedendo tra la tua applicazione e il tuo server.
LoadRunner offre un potente meccanismo di registrazione che è robusto e scalabile da solo. Consente di mantenere solo il "Registro standard" o un registro esteso dettagliato e configurabile o disabilitarlo del tutto.
Un registro standard è informativo e facilmente comprensibile. Contiene la giusta quantità di conoscenza che generalmente richiederai per la risoluzione dei problemi degli script VUser.
Nel caso del registro esteso, tutte le informazioni del registro standard sono un sottoinsieme. Inoltre, puoi avere la sostituzione dei parametri. Ciò indica al componente LoadRunner di includere le informazioni complete di tutti i parametri (dalla parametrizzazione) comprese le richieste, nonché i dati di risposta.
Se includi "Dati restituiti dal server", il tuo registro avrà una lunghezza maggiore. Ciò includerà tutto l'HTML, i tag, le risorse e le informazioni non risorse incluse direttamente nel registro. L'opzione è valida solo se è necessaria una risoluzione dei problemi seria. Di solito, questo rende il file di registro di dimensioni molto grandi e non facilmente comprensibile.
Come avresti potuto intuire, se opti per "Advance Trace", il tuo file di registro sarà enorme. Devi provarlo. Noterai che anche il tempo impiegato da VUGen è aumentato in modo significativo, sebbene ciò non avrà alcun impatto sul tempo di risposta della transazione riportato da VUGen. Tuttavia, si tratta di informazioni molto avanzate e forse utili se si comprende l'applicazione in oggetto, la comunicazione da client a server tra l'applicazione e l'hardware, nonché i dettagli a livello di protocollo. Di solito, queste informazioni sono essenzialmente morte poiché richiedono sforzi estremi per comprendere e risolvere i problemi.
Suggerimenti:
- Indipendentemente dal tempo impiegato da VUGen quando il registro è abilitato, non ha alcun impatto sul tempo di risposta della transazione. HP chiama questo fenomeno come "tecnologia all'avanguardia".
- Disabilita il registro se non è richiesto.
- Disabilita il registro quando hai finito con i tuoi script. L'inclusione di script con la registrazione abilitata renderà il controller più lento e riporterà messaggi fastidiosi.
- La disabilitazione del registro aumenterà la capacità del numero massimo di utenti che è possibile simulare da LoadRunner.
- Considera l'idea di utilizzare "Invia messaggio solo in caso di errore": in questo modo verranno disattivati i messaggi di informazioni non necessarie e verranno segnalati solo i messaggi relativi all'errore.
Think Times
Think Time è semplicemente il ritardo tra due passaggi.
Think Time aiuta a replicare il comportamento degli utenti poiché nessun utente reale può utilizzare un'applicazione come una macchina (VUGen). VUGen genera automaticamente il tempo di riflessione. Hai ancora il controllo completo per rimuovere, moltiplicare o far oscillare la durata del tempo di riflessione.
Per capire di più, ad esempio, un utente può aprire una schermata (che è una risposta seguita da una richiesta) e quindi fornire nome utente e password prima di premere invio. La successiva interazione dell'applicazione con il server avverrà quando si fa clic su "Accedi". Il tempo impiegato da un utente per digitare il nome utente e la password è Think Time in LoadRunner.
Se stai cercando di simulare un carico aggressivo sull'applicazione, considera la possibilità di disabilitare completamente il tempo di riflessione.
Tuttavia, per simulare un comportamento simile a quello reale, è possibile "User Random Think Time" e impostare le percentuali come desiderato.
Prendi in considerazione l'utilizzo di Limit Think Time a un periodo legittimo. Di solito, 30 secondi sono abbastanza buoni.
Simulazione di velocità
La simulazione della velocità si riferisce semplicemente alla capacità della larghezza di banda per ogni macchina client.
Dal momento che stiamo simulando migliaia di VUser tramite LoadRunner, è sorprendente quanto sia stato semplice LoadRunner per controllare la simulazione della larghezza di banda / velocità della rete.
Se sei un cliente che accede alla tua applicazione oltre i 128 Kbps, puoi controllarla da qui. Potrai simulare un "comportamento simile a quello reale" che dovrebbe aiutarti a ottenere le giuste statistiche sulle prestazioni.
Il miglior consiglio è impostare su Usa la larghezza di banda massima. Ciò consentirà di ignorare eventuali colli di bottiglia delle prestazioni relativi alla rete e di concentrarsi prima su eventuali problemi potenziali nell'applicazione. È sempre possibile eseguire il test più volte per vedere il comportamento variabile in circostanze diverse.
Emulazione del browser
L'esperienza utente non dipende dal browser utilizzato da un utente finale. Chiaramente, questo va oltre l'ambito delle misure di performance. Tuttavia, puoi scegliere quale browser desideri emulare.
Puoi rispondere a te stesso quando esattamente sarà importante per te selezionare il browser giusto in questa configurazione?
Utilizzerai questa configurazione se sei soggetto all'applicazione è un'applicazione web, che restituisce risposte diverse per browser diversi. Ad esempio, puoi vedere immagini e contenuti diversi per IE e Firefox, ecc.
Un'altra impostazione importante è Simula la cache del browser. Se desideri misurare il tempo di risposta quando la cache è abilitata, seleziona questa casella. Se stai cercando la situazione peggiore, questa ovviamente non è una considerazione.
Il download di risorse non HTML consentirà a LoadRunner di scaricare qualsiasi CSS, JS e altri rich media. Questo dovrebbe essere mantenuto controllato. Tuttavia, se desideri eliminarlo dal progetto del test delle prestazioni, puoi deselezionarlo.
Proxy
È meglio eliminare completamente il proxy dall'ambiente di test: ciò renderà i risultati del test inaffidabili. Tuttavia, potresti dover affrontare situazioni in cui è inevitabile. In una situazione del genere, LoadRunner ti facilita le impostazioni del proxy.
Lavorerai (o dovresti lavorare) senza l'impostazione proxy. Puoi ottenerlo dal tuo browser predefinito. Tuttavia, non dimenticare di controllare quale browser è impostato come predefinito e quale è la configurazione del proxy per il browser predefinito.
Se stai utilizzando un proxy e richiede l'autenticazione (o uno script), puoi fare clic sul pulsante Autentica che porta a una nuova finestra. Fare riferimento allo screenshot qui sotto.
Utilizzare questa schermata per fornire nome utente e password per l'autenticazione sul server proxy. Fare clic su OK per chiudere la schermata.
Congratulazioni. Hai finito con la configurazione del tuo script VUGen. Non dimenticare di configurarlo per tutti i tuoi script VUser.