Parametrizzazione, Funzioni, Transazioni in LoadRunner

⚡ Riepilogo intelligente

Parametrizzazione, transazioni e impostazioni di runtime sono i tre miglioramenti che trasformano una semplice registrazione VuGen in uno script che si comporta come un utente reale e fornisce tempistiche affidabili.

  • 🔘 Le operazioni: Per misurare i tempi di esecuzione di una richiesta, racchiudila tra le funzioni lr_start_transaction e lr_end_transaction.
  • ☑️ Codici di stato: Chiudere una transazione con LR_AUTO, LR_PASS o LR_FAIL.
  • Appuntamento: Raggruppa gli utenti virtuali (VUsers) in un punto d'incontro in modo che si connettano al server contemporaneamente.
  • 🧪 Parametrizzazione: Sostituisci date, ID e login codificati in modo statico con valori specifici per ogni iterazione.
  • Impostazioni di runtime: Logica di esecuzione, ritmo, registrazione, tempo di riflessione, larghezza di banda, browser, proxy.
  • 📊 ripetibilità: Impostazioni incoerenti sono la causa più comune di risultati non ripetibili.

Parametrizzazione, transazioni e funzioni in LoadRunner VuGen

Uno script registrato può simulare un utente virtuale; tuttavia, una semplice registrazione potrebbe non essere sufficiente a replicare il comportamento di un utente reale.

Quando si registra uno script, questo riproduce un singolo flusso lineare all'interno dell'applicazione in questione. Un utente reale, tuttavia, potrebbe eseguire più volte un processo prima di disconnettersi. Il tempo di attesa tra un clic e l'altro (tempo di riflessione) varia da persona a persona e alcuni utenti accedono all'applicazione tramite una connessione veloce, mentre altri no. Pertanto, per ottenere un'esperienza utente realistica, è necessario ottimizzare gli script in modo che si comportino nel modo più simile possibile a un utente reale.

Questa è la considerazione più significativa quando si conduce “Test di Performance"Ma uno script VUser è molto più complesso. Come si può misurare il tempo impiegato da un VUser durante il test del sistema sotto carico (SUL)? Come si può sapere se il VUser ha superato o fallito il test in un determinato punto, e se un processo di backend si è bloccato o le risorse del server si sono esaurite?

Dobbiamo migliorare la nostra sceneggiatura per poter rispondere a tutte le domande di cui sopra.

Nota del marchio: VuGen è stato distribuito come HP, poi Micro Focus, e ora fa parte di OpenText Ingegneria delle prestazioni professionaliLe funzioni e le impostazioni riportate di seguito rimangono invariate.

Utilizzo delle transazioni

Le transazioni misurano il tempo di risposta del server per qualsiasi operazione. In parole semplici, una "transazione" misura il tempo impiegato dal sistema per una particolare richiesta. Può trattarsi di un'operazione semplice come il clic di un pulsante o una chiamata AJAX attivata quando una casella di testo perde il focus.

Applicare le transazioni è semplice. Basta scrivere una riga di codice prima di effettuare la richiesta e chiudere la transazione al termine della stessa. LoadRunner richiede solo una stringa come nome della transazione.

Per aprire una transazione, utilizzare questa riga di codice:

lr_start_transaction(“Transaction Name”);

Per chiudere la transazione, utilizzare questa riga di codice:

lr_end_transaction(“Transaction Name”, <status>);

IL indica a LoadRunner se questa particolare transazione ha avuto esito positivo o negativo. I possibili parametri potrebbero essere:

  • LR_AUTO
  • LR_PASS
  • LR_FAIL

Esempio:

lr_end_transaction(“My_Login”, LR_AUTO);
lr_end_transaction(“001_Opening_Dashboard Name”, LR_PASS);
lr_end_transaction(“Business_Workflow_Transaction Name”, LR_FAIL);

Code Nota: I frammenti di codice sono riprodotti esattamente come pubblicati, virgolette tipografiche incluse. Uno script VuGen autentico richiede virgolette doppie ASCII dritte, quindi riscrivile se copi questo codice.

Punti da notare:

  • Non dimenticare che stai lavorando con la "C" e questo è un linguaggio con distinzione tra maiuscole e minuscole.
  • Il punto (.) non è consentito nel nome di una transazione, mentre è possibile utilizzare spazi e trattini bassi.
  • Se hai ben strutturato il tuo codice e aggiunto dei checkpoint per verificare la risposta del server, puoi utilizzare una gestione degli errori personalizzata come LR_PASS o LR_FAIL. In caso contrario, puoi utilizzare LR_AUTO e LoadRunner gestirà automaticamente gli errori del server (HTTP 500, 400 ecc.).
  • Quando si applicano le transazioni, assicurarsi che non vi sia alcuna istruzione relativa al tempo di riflessione inserita al suo interno, altrimenti la transazione includerà sempre tale periodo.
  • Poiché LoadRunner richiede una stringa costante come nome della transazione, un problema comune durante l'applicazione delle transazioni è la mancata corrispondenza delle stringhe. Se si specifica un nome diverso per l'apertura e la chiusura di una transazione, si otterranno almeno due errori. La transazione aperta non è mai stata chiusa, quindi LoadRunner genera un errore; e la transazione che si sta tentando di chiudere non è mai stata aperta, il che genera un secondo errore.
  • Entrambi gli errori compaiono nel registro di riproduzione, quindi ogni volta che viene segnalato uno dei due, controlla prima il nome della transazione nelle dichiarazioni di apertura e chiusura.
  • Poiché LoadRunner gestisce automaticamente la sincronizzazione delle richieste e delle risposte, non dovrai preoccuparti dei tempi di risposta durante l'applicazione delle transazioni.

Punti di incontro, commenti e funzioni di script

Tre piccoli miglioramenti fanno sì che uno script si comporti e si legga come codice di produzione: i punti di incontro, i commenti e il browser delle funzioni integrato in VuGen.

Punti d'incontro

Un punto di rendezvous è un "punto d'incontro". Si tratta di una singola istruzione che indica a LoadRunner di introdurre la concorrenza. I punti di rendezvous vengono inseriti negli script VUser per emulare un carico utente elevato sul server.

I punti di incontro indicano a un utente virtuale (VUser) di attendere durante l'esecuzione finché più utenti virtuali non raggiungono un determinato punto, in modo da poter svolgere un'attività contemporaneamente. Ad esempio, per simulare un picco di carico su un server bancario, è possibile inserire un punto di incontro che inviti 100 utenti virtuali a depositare denaro contante nello stesso momento.

Se i punti di incontro non sono posizionati correttamente, gli utenti virtuali (VUser) accederanno a parti diverse dell'applicazione, anche per lo stesso script. Questo accade perché ogni utente virtuale ha un tempo di risposta diverso e quindi alcuni utenti rimangono indietro.

Sintassi:

lr_rendezvous(“Logical Name”);

Nota di correzione: la pagina pubblicata scrive questo lr_rendesvous. Il nome corretto della funzione è lr_rendezvous; la forma con l'errore di ortografia non verrà compilata.

migliori pratiche:

  • Prefisso un punto di incontro con "rdv_" per una migliore leggibilità del codice; ad esempio "rdv_Login"
  • Rimuovere tutte le istruzioni think-time immediatamente adiacenti
  • Applicare i punti di incontro nella vista Script, dopo la registrazione

La vista Script qui sotto mostra un'istruzione di rendezvous inserita in un'azione registrata:

Istruzione Rendezvous inserita in un'azione VuGen registrata nella vista Script.

Commenti

Aggiungi commenti per descrivere un'attività, una porzione di codice o una riga di codice. I commenti contribuiscono a rendere il codice comprensibile a chiunque lo consulti in futuro. Forniscono informazioni su un'operazione specifica e distinguono due sezioni.

Puoi aggiungere commenti

  • Durante la registrazione (utilizzando lo strumento)
  • Dopo la registrazione (scrivendo direttamente nel codice)

Migliore pratica: contrassegnare eventuali commenti all'inizio di ogni file di script.

Inserimento di funzioni tramite il menu

Sebbene sia possibile scrivere direttamente semplici righe di codice, potrebbe essere necessario un suggerimento per ricordare una funzione. È anche possibile utilizzare la Casella degli strumenti Passaggi (nota come Inserisci funzione prima della versione 12) per trovare e inserire qualsiasi funzione direttamente nello script.

È possibile trovare la Casella degli strumenti Passaggi in Visualizza → Casella degli strumenti Passaggi, come mostrato di seguito.

Menu Vista di VuGen con il comando Casella degli strumenti Passaggi evidenziato

Si aprirà una finestra laterale. Guarda l'immagine:

Elenco delle funzioni VuGen disponibili per l'inserimento nel pannello laterale di Steps Toolbox.

Cos'è la parametrizzazione?

In VuGen, un parametro è un contenitore che memorizza un valore registrato, il quale viene sostituito per i diversi utenti.

Durante l'esecuzione dello script (in VuGen o nel Controller), un valore proveniente da una fonte esterna (come un file .txt, XML o un database) sostituisce il valore precedente del parametro.

La parametrizzazione è utile per inviare valori dinamici (o univoci) al server. Ad esempio, un processo aziendale potrebbe dover essere eseguito 10 volte, scegliendo ogni volta un nome utente univoco.

Aiuta inoltre a simulare comportamenti reali rispetto al sistema in esame. Dai un'occhiata agli esempi qui sotto.

Esempi di problemi:

  • Un processo aziendale funziona solo per la data corrente, che proviene dal server, quindi non può essere passata come richiesta hardcoded.
  • A volte l'applicazione client trasmette al server un ID univoco (ad esempio session_id) affinché il processo possa proseguire, anche per un singolo utente. In tal caso, la parametrizzazione risulta utile.
  • Spesso l'applicazione client mantiene una cache dei dati inviati e ricevuti dal server. Di conseguenza, il server non riceve il comportamento reale dell'utente (in cui il server esegue un algoritmo diverso a seconda dei criteri di ricerca). Lo script VUser verrà eseguito correttamente, ma le statistiche sulle prestazioni generate non saranno significative. L'utilizzo di dati diversi tramite la parametrizzazione aiuta a emulare l'attività lato server, come le stored procedure, e a testare il sistema.
  • Una data codificata in modo fisso nel VUser durante la registrazione potrebbe non essere più valida una volta trascorsa tale data. La parametrizzazione della data consente l'esecuzione del VUser sostituendo la data codificata in modo fisso. Tali campi o richieste sono i candidati ideali per la parametrizzazione.

Per crearne uno, fai clic con il pulsante destro del mouse sul valore registrato nella vista Script e scegli Sostituisci con un parametro. VuGen ti chiederà quindi quale tipo fornisce il valore:

Tipo di parametro Valore che fornisce
Compila il Valori letti da una colonna in un file .dat.
Table Un blocco di righe e colonne contemporaneamente.
Date / Time Data e ora attuali nel formato scelto.
Numero casuale Un numero compreso in un intervallo da te definito.
Numero univoco Un numero univoco per ogni utente virtuale, a partire da un valore iniziale e da una dimensione del blocco.
Numero di iterazione Il numero di iterazioni corrente.
ID utente virtuale L'identificativo assegnato durante la riproduzione.
Gruppo / Carico Generator Nome Il gruppo VUser o la macchina generatrice.
XML Un frammento di un set di dati XML.
Funzione definita dall'utente Un valore restituito dalla funzione della tua libreria.

Altre due opzioni determinano come vengono utilizzati i dati nel corso delle iterazioni:

Opzione scelte Cosa controlla
Seleziona la riga successiva Sequenziale, casuale, unico Quale riga leggerà successivamente un VUser.
Aggiorna il valore su Ogni iterazione, ogni occorrenza, una volta Quando il valore viene aggiornato.

La procedura descritta di seguito mostra l'applicazione dei parametri a uno script registrato:

Clicchi Qui. se il video non è accessibile.

Impostazioni di runtime e loro impatto sulla simulazione VUser

Le impostazioni di runtime sono importanti quanto lo script VuGen. Con configurazioni diverse è possibile ottenere design di test completamente differenti, ed è per questo che impostazioni di runtime incoerenti sono la causa più comune di risultati non ripetibili. Analizziamo ciascun attributo singolarmente.

Esegui Logica

Run Logic definisce il numero di volte in cui verranno eseguite tutte le azioni, eccetto vuser_init e vuser_end.

Questo probabilmente chiarisce perché LoadRunner suggerisce di mantenerloping Tutto il codice di login è contenuto in vuser_init, mentre la parte relativa al logout è contenuta in vuser_end, entrambe in modo esclusivo.

Se hai creato più azioni, ad esempio Accedi, Apri schermata, Calcola noleggio, Invia fondi, Controlla saldo ed Esci, allora lo scenario seguente si verificherà per ogni VUser:

Tutti gli utenti virtuali effettueranno l'accesso, eseguiranno le seguenti operazioni: Apri schermata, Calcola affitto, Invia fondi e Controlla saldo, quindi di nuovo Apri schermata, Calcola affitto e così via, ripetendo il processo 10 volte, per poi effettuare il logout (una sola volta).

Pannello Logica di esecuzione delle impostazioni di runtime di VuGen che mostra il conteggio delle iterazioni

Si tratta di un'impostazione potente che consente allo script di comportarsi in modo più simile a un utente reale. Ricorda, un utente reale non effettua l'accesso e il logout ogni volta; in genere ripete gli stessi passaggi.

Quante volte clicchi su "Posta in arrivo" quando controlli la tua email prima di disconnetterti?

Pacing

Questo è importante. La maggior parte delle persone non riesce a comprendere la differenza tra ritmo e tempo di riflessione. L'unica differenza è che il ritmo si riferisce al ritardo tra le iterazioni, mentre il tempo di riflessione è il ritardo tra due passaggi qualsiasi.

L'impostazione consigliata dipende dalla progettazione del test. Tuttavia, se si desidera applicare un carico elevato, si consiglia di scegliere "Non appena termina l'iterazione precedente", come mostrato di seguito.

Pannello di gestione del ritmo delle impostazioni di runtime con le opzioni di ritardo dell'iterazione

Log

Un log, come generalmente inteso, è una registrazione di tutti gli eventi che si verificano durante l'esecuzione di LoadRunner. È possibile abilitare il log per monitorare lo scambio di informazioni tra l'applicazione e il server.

LoadRunner offre un potente meccanismo di logging, robusto e scalabile. Consente di conservare solo un "Log standard", un log esteso dettagliato e configurabile, oppure di disabilitare completamente il logging.

Un log standard è informativo e facilmente comprensibile. Contiene la giusta quantità di informazioni generalmente necessarie per la risoluzione dei problemi degli script VUser.

Nel caso del log esteso, tutte le informazioni di log standard costituiscono un sottoinsieme. Inoltre, è possibile utilizzare la sostituzione dei parametri. Questa opzione indica al componente LoadRunner di includere informazioni complete su tutti i parametri (derivanti dalla parametrizzazione), comprese le richieste e i dati di risposta.

Se includi "Dati restituiti dal server", il tuo file di log diventerà più lungo. Includerà tutte le informazioni HTML, i tag, le risorse e le informazioni non relative alle risorse direttamente nel file di log. Questa opzione è utile solo se hai bisogno di eseguire una risoluzione dei problemi approfondita. Di solito, ciò rende il file di log molto grande e di difficile interpretazione.

Come avrai intuito ormai, se opti per “Avanzato TracIl tuo file di log sarà enorme. Devi assolutamente provarci. Noterai che anche il tempo impiegato da VuGen aumenta significativamente, sebbene ciò non abbia alcun impatto sul tempo di risposta della transazione riportato da VuGen. Si tratta di informazioni molto avanzate, utili solo se si comprende l'applicazione in questione, la comunicazione client-server tra l'applicazione e l'hardware e i dettagli a livello di protocollo. Solitamente, la lettura e la risoluzione dei problemi di queste informazioni richiedono uno sforzo considerevole.

Pannello di registro delle impostazioni di runtime con opzioni di registro standard ed estese.

Suggerimenti:

  • Indipendentemente dal tempo impiegato da VuGen con il log abilitato, ciò non ha alcun impatto sul tempo di risposta della transazione: l'overhead del logging è escluso dal tempo misurato.
  • Disabilita il registro se non è necessario.
  • Disattiva il log al termine dell'esecuzione degli script. L'inclusione di script con il logging abilitato rallenterà il Controller e genererà messaggi di avviso indesiderati.
  • Disabilitando il registro, aumenterà il numero massimo di utenti che è possibile simulare con LoadRunner.
  • Valuta la possibilità di utilizzare l'opzione "Invia messaggi solo in caso di errore": in questo modo verranno disattivati ​​i messaggi informativi non necessari e verranno segnalati solo i messaggi relativi agli errori.

Pensa ai tempi

Think Time è semplicemente il ritardo tra due passaggi.

Il tempo di riflessione aiuta a replicare il comportamento dell'utente, poiché nessun utente reale può utilizzare un'applicazione come una macchina. VuGen genera automaticamente il tempo di riflessione. Hai comunque il pieno controllo per rimuovere, moltiplicare o variare la durata del tempo di riflessione.

Per comprenderlo meglio: un utente può aprire una schermata (una risposta seguita da una richiesta) e quindi digitare nome utente e password prima di premere Invio. L'interazione successiva tra l'applicazione e il server avviene quando l'utente clicca su "Accedi". Il tempo impiegato dall'utente per digitare nome utente e password è il "Tempo di riflessione" in LoadRunner.

Pannello Tempo di riflessione delle impostazioni di runtime con le opzioni di tempo di riflessione per la riproduzione.

Se stai cercando di simulare un carico aggressivo sull'applicazione, valuta la possibilità di disabilitare completamente il tempo di riflessione.

Tuttavia, per simulare un comportamento reale, è possibile scegliere "Usa tempo di riflessione casuale" e impostare le percentuali desiderate.

Valuta la possibilità di utilizzare la funzione "Limita tempo di riflessione" per impostare un limite massimo ragionevole. Di solito, 30 secondi sono più che sufficienti.

Simulazione della velocità

La simulazione della velocità si riferisce semplicemente alla capacità di banda di ciascuna macchina client.

Visto che stiamo simulando migliaia di utenti virtuali tramite LoadRunner, è sorprendente quanto LoadRunner abbia semplificato la simulazione della larghezza di banda e della velocità di rete.

Se i tuoi clienti accedono alla tua applicazione a una velocità superiore a 128 Kbps, puoi controllare questa impostazione da qui. Potrai simulare il comportamento reale, il che ti aiuterà a ottenere statistiche sulle prestazioni più accurate.

Pannello di simulazione della velocità che offre la larghezza di banda massima o una velocità di connessione fissa.

La raccomandazione migliore è di impostare "Utilizza la larghezza di banda massima". Questo permette di escludere eventuali colli di bottiglia prestazionali legati alla rete e di concentrarsi prima sui potenziali problemi dell'applicazione. È sempre possibile eseguire il test più volte per osservare comportamenti diversi in circostanze differenti.

Emulazione del browser

L'esperienza utente non dipende dal browser utilizzato dall'utente finale, pertanto questo aspetto esula in gran parte dall'ambito delle metriche di prestazione. Tuttavia, è possibile scegliere quale browser emulare, come mostrato nel riquadro sottostante.

Pannello di emulazione del browser con opzioni di simulazione dello user agent e della cache

In quali momenti specifici è davvero importante quale browser si sceglie in questa configurazione?

Utilizzerai questa configurazione se l'applicazione in questione è un'applicazione web che restituisce risposte diverse per browser diversi. Ad esempio, potresti visualizzare immagini e contenuti diversi per Internet Explorer e Firefox.

Un'altra impostazione importante è "Simula la cache del browser". Se vuoi valutare il tempo di risposta con la cache abilitata, seleziona questa casella. Se invece stai cercando di simulare la situazione peggiore, ovviamente non è un fattore da considerare.

L'opzione "Scarica risorse non HTML" consentirà a LoadRunner di scaricare qualsiasi file CSS, JavaScript e altri contenuti multimediali. Questa opzione dovrebbe rimanere selezionata. Tuttavia, se si desidera escluderla dalla configurazione del test delle prestazioni, è possibile deselezionarla.

delega

È meglio eliminare completamente il proxy dal tuo Ambiente di test — La presenza di un proxy lungo il percorso rende i risultati del test inaffidabili. Tuttavia, potrebbero verificarsi situazioni in cui ciò è inevitabile. In tal caso, LoadRunner offre delle impostazioni per il proxy.

Dovresti utilizzare (o utilizzare) l'impostazione "Nessun proxy". Puoi ottenerla dal tuo browser predefinito. Tuttavia, non dimenticare di verificare quale browser è impostato come predefinito e qual è la configurazione del proxy per quel browser.

Pannello proxy delle impostazioni di runtime con le opzioni "nessun proxy" e "proxy manuale".

Se stai utilizzando un proxy che richiede l'autenticazione (o uno script), puoi fare clic sul pulsante Autentica, che aprirà una nuova finestra. Fai riferimento allo screenshot qui sotto.

Finestra di autenticazione proxy che richiede nome utente e password

Utilizza questa schermata per inserire nome utente e password per autenticarti sul server proxy. Fai clic su OK per chiudere la schermata.

Congratulazioni! Hai completato la configurazione dello script VuGen. Non dimenticare di configurarlo anche per tutti gli script VUser.

Poi vieni correlazione, eseguendo lo scenario nel Controllere la lettura si traduce in Analisi di LoadRunner. Vedere il Architettura di LoadRunner and Caricare i test guide.

DOMANDE FREQUENTI

Seleziona il valore nella vista Script, fai clic con il pulsante destro del mouse e scegli Sostituisci con un parametro. Assegna un nome, scegli un tipo e VuGen sostituirà ogni occorrenza corrispondente che approverai.

Data/Ora, Numero casuale, Numero univoco, Numero di iterazione, ID utente virtuale, Nome del gruppo e Carico Generator I nomi vengono generati durante la riproduzione. Solo i parametri File, Tabella e XML richiedono un'origine dati da specificare.

L'apprendimento automatico suggerisce potenziali correlazioni, segnala gli script che smettono di funzionare dopo una modifica dell'applicazione e genera dati di test realistici. Le versioni più recenti di VuGen includono la creazione di script assistita dall'IA, sebbene le istruzioni generate necessitino ancora di revisione.

Copilota GitHub Gestisce bene lo scaffolding C (cicli, gestione delle stringhe, wrapper delle transazioni) poiché gli script di VuGen sono scritti in C. È meno efficace con le funzioni web specifiche del protocollo, quindi è consigliabile verificare ogni chiamata generata rispetto al riferimento della funzione.

Indica a un utente virtuale di continuare a eseguire i passaggi rimanenti anche dopo il fallimento di uno di essi, anziché terminare l'iterazione. Utile in una fase iniziale di esplorazione, ma se lasciato attivo nasconde i veri errori.

Aggiungi un controllo del contenuto prima della richiesta in modo che replay cerchi il testo previsto nella risposta. Uno stato HTTP positivo da solo non dimostra nulla, perché una pagina di errore può restituire 200.

No. Il prodotto è passato da HP a Micro Focus ed è ora OpenText Ingegneria delle prestazioni professionaliVuGen mantiene il suo nome, la libreria di funzioni e i pannelli delle impostazioni di runtime.

L'istruzione lr_rendezvous indica solo il punto d'incontro. Il numero di utenti virtuali (VUser) che devono arrivare e il tempo di attesa dell'esecuzione sono impostati nelle opzioni di rendezvous del Controller, non in VuGen.

Riassumi questo post con: