Esempio di correlazione in LoadRunner con web_reg_save_param

⚡ Riepilogo intelligente

La funzionalità di correlazione di LoadRunner cattura un valore dinamico del server, come ad esempio un ID di sessione, e lo utilizza nelle richieste successive, in modo che uno script VuGen registrato venga riprodotto correttamente anziché fallire a causa di dati obsoleti.

  • 🔘 Definizione: La correlazione lega la risposta di un server a ogni richiesta successiva che dipende da essa.
  • ☑️ sintomo: La riproduzione fallisce quando uno script restituisce un ID di sessione registrato che il server non riconosce più.
  • ✅ Automatico: Le regole e il rilevamento automatico di VuGen confrontano due replay, ma coprono solo una piccola parte dei casi.
  • 🧪 Manuale: web_reg_save_param salva il valore che si trova tra un limite sinistro e un limite destro.
  • ️ Placement: Le funzioni di registrazione devono trovarsi al di sopra della fase la cui risposta veicola il valore.
  • 📊 Saldare: Gli script correlati vengono riprodotti con dati aggiornati e rimangono notevolmente più piccoli.

Correlazione in LoadRunner con web_reg_save_param

Cos'è la correlazione?

La correlazione, come suggerisce il nome, è un meccanismo che definisce una relazione tra due variabili o entità. Un dizionario la definisce come "relazione statistica tra due o più variabili tale per cui variazioni sistematiche nelle altre variabili si accompagnano a variazioni sistematiche nel valore di una delle due".

Nota del marchio: questo strumento è stato spedito come HP e poi Micro Focus LoadRunner, ed è adesso OpenText Ingegneria delle prestazioni professionali. Ogni funzione di correlazione sottostante rimane invariata e il fornitore scrive il generatore di script VuGen.

Perché abbiamo bisogno della correlazione?

Cerchiamo di comprendere la correlazione con il seguente scenario.

Considera che stai registrando uno script utilizzando LoadRunner.

La comunicazione client-server durante la registrazione avviene come segue, e il diagramma la riassume:

  1. Durante la registrazione, il client invia una richiesta al server per avviare una sessione
  2. Un server riceve la richiesta e assegna un nuovo ID di sessione ABC
  3. Il client memorizza l'ID sessione ABC nello script.
  4. Il client avvia la sessione con ID ABC e invia una richiesta a un server per consentirgli di registrare
  5. Il Server riconosce l'ID ABC e consente al client di registrare lo script

Scambio di ID di sessione client-server durante la registrazione di uno script LoadRunner

Ora, analizziamo la comunicazione client-server durante la riproduzione, illustrata dopo questi passaggi:

  1. Durante la riproduzione, un client invia una richiesta al server per avviare una sessione
  2. Un server riceve la richiesta e assegna un nuovo ID di sessione XYZ
  3. Un client avvia la sessione con l'ID di sessione precedentemente registrato ABC e invia una richiesta al server per consentirgli di registrare
  4. Un server non è in grado di identificare l'ID ABC poiché si aspettava l'ID XYZ assegnato e la sessione fallisce.

ID di sessione non corrispondente durante la riproduzione quando manca la correlazione

Abbiamo bisogno di una soluzione in grado di acquisire e analizzare il valore dinamico inviato in fase di esecuzione e di restituirlo al server. Ecco come si presenterà la comunicazione client-server con questa soluzione, come mostrato nel diagramma seguente:

  1. Durante la riproduzione, un client invia una richiesta al server per avviare una sessione
  2. Un server riceve la richiesta e assegna un nuovo ID di sessione ZZZ
  3. Un client analizza questo nuovo ID di sessione ZZZ dalla richiesta.
  4. Un client invia una richiesta per avviare la sessione con id ZZZ
  5. Un server riconosce l'ID ZZZ e consente al client di riprodurre lo script

Correlazione che cattura il nuovo ID di sessione e lo restituisce al server

Questo non è altro che correlazione.

Il breve video qui sotto illustra lo stesso problema di registrazione e riproduzione.

Clicchi Qui. se il video non è accessibile

Nel caso di VuGen, la correlazione è una relazione di vincolo tra una risposta e qualsiasi richiesta precedente.

Esistono diverse situazioni in cui una richiesta si basa su una risposta precedentemente ricevuta dal server, come un ID di sessione o una data e ora del server. Questi valori sono diversi ogni volta che si esegue un'applicazione o si registra uno script. Ovviamente, se l'esecuzione dello script dipende da un valore restituito dal server, significa che è necessario trovare un meccanismo per "catturare" la risposta del server e associarla alle richieste previste dal server. In LoadRunner, questo meccanismo è generalmente chiamato "correlazione".

In parole semplici, la soluzione utilizzando la correlazione è:

  1. Cattura il valore di output da un passaggio
  2. Utilizzare il valore acquisito sopra come input per tutti i passaggi successivi

In VuGen/LoadRunner la correlazione viene classificata in 2 categorie:

  • Correlazione automatica
  • Correlazione manuale

Correlazione automatica

LoadRunner fornisce un meccanismo per eseguire facilmente la correlazione in modo automatico.

VuGen richiederà l'esecuzione di uno script registrato almeno due volte, in modo da poter confrontare internamente i diversi valori presenti nella risposta del server.

La correlazione automatica può essere classificata in 3 categorie:

  • Correlazione di rilevamento automatico
  • Correlazione basata su regole
  • Correlare tutte le affermazioni
Nome regola Quando usare
Correlazione con rilevamento automatico Rileva e correla i dati dinamici per i server applicativi supportati da LoadRunner
Basato su regole Utilizzato quando si lavora con un server delle applicazioni non supportato di cui è noto il contesto.
Correlare tutto Aiuta a correlare tutti i dati dinamici in modo cieco.

Sebbene la correlazione automatica sembri più semplice, può essere soggetta a errori e funziona in non più del 5% dei casi. È sempre consigliabile utilizzare la correlazione manuale.

Per configurare la correlazione automatica al momento della registrazione, eseguire la configurazione seguente in Impostazione ora di registrazione dopo che uno script è stato registrato.

Fai clic su Registra => Opzioni di registrazione (oppure fai clic su Ctrl + F7), mostrato nel menu sottostante,

Menu VuGen Record con la voce Opzioni di registrazione selezionata

Si aprirà la finestra sottostante:

Finestra Opzioni di registrazione di VuGen che elenca i nodi di configurazione della registrazione

Fare clic su Correlazione => Configurazione: si aprirà la finestra sottostante.

Il riquadro di configurazione della correlazione elenca i set di regole dell'applicazione, ad esempio ASPNET.

Qui è necessario contrassegnare come verificato rispetto a tutte le applicazioni (ASPNET) ecc. utilizzate nell'applicazione in questione. Sul lato destro puoi vedere le regole che rileveranno i possibili candidati per la correlazione, ad esempio _VIEWSTATE. Puoi anche aggiungere più applicazioni o regole personalizzate facendo clic sul pulsante Nuova regola.

Puoi anche fare clic su REGOLE, vedrai quanto segue:

Pannello Regole di correlazione con l'opzione Scansione regole disponibile

Affinché la correlazione automatica funzioni, è necessario assicurarsi che l'opzione "Scansione regole" sia selezionata. Se si fa clic su "Correla automaticamente i valori trovati", VuGen non richiederà la scelta una volta individuato un potenziale valore di correlazione, ma lo correggerà direttamente.

Più avanti capiremo l'API utilizzata per la correlazione. Tuttavia, è consigliabile usare il confronto HTML anziché il confronto di testo.

Dopo aver selezionato una regola, fare clic sul pulsante OK per chiudere la finestra.

Fai clic sul pulsante della barra degli strumenti mostrato qui Pulsante della barra degli strumenti di VuGen utilizzato per rigenerare lo script registrato Dal menu, VuGen rigenererà lo script (senza bisogno di registrarlo) con le nuove configurazioni. VuGen aggiungerà automaticamente il codice necessario per gestire la correlazione. Analizzeremo l'esempio più in dettaglio nella sezione Correlazione manuale.

Tieni presente che se esegui la correlazione manualmente o utilizzi la correlazione automatica, la parte di codice conterrà esattamente la stessa sintassi e funzione.

Passaggi per correlare automaticamente uno script:

  1. Registra una sceneggiatura
  2. Riproduci la sceneggiatura
  3. Identificare i valori da correlare
  4. Selezionare i valori e fare clic sul pulsante di correlazione automatica
  5. Verificare lo script eseguendo nuovamente. Una corsa riuscita significa una correlazione riuscita.

Suggerimento:

  • La correlazione aiuta a eseguire lo script con valori diversi
  • La correlazione riduce anche la dimensione dello script

Correlazione manuale

La correlazione manuale riguarda la scrittura del codice direttamente nello script per soddisfare valori in continua evoluzione. Possiamo suddividerlo nei passaggi seguenti:

  1. Determinare il valore da acquisire
  2. Trova i limiti di testo destro e sinistro del valore da acquisire (WEB)
  3. Trova quale occorrenza dei confini del testo deve essere utilizzata
  4. Aggiungi una funzione web_reg_save_param allo script, sopra la parte di codice che richiede la pagina con il valore da acquisire
  5. Aggiungere un nome di parametro, il limite sinistro, il limite destro e l'occorrenza alla funzione
  6. Parametrizzare il valore dinamico nello script ogni volta che si verifica
  7. Verificare la corretta esecuzione
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 Nota: Entrambi i frammenti appaiono esattamente come pubblicati. Osservate gli ordinali: Ord=l and RelFrameId=l usa una L minuscola e VuGen si aspetta la cifra 1.

La correlazione manuale può essere eseguita tramite VUser Comparison. I passaggi nel metodo di correlazione VUser Comparison possono essere suddivisi come di seguito:

  1. Identificare i valori dinamici che devono essere correlati
  2. Trova la risposta del server contenente il valore dinamico
  3. Cattura il valore dinamico in un parametro
  4. Sostituisci ogni occorrenza del valore Dynamic con il parametro
  5. Verifica modifiche

Comprensione della funzione web_reg_save_param

VuGen offre diverse funzioni o API per correlare i candidati, tra cui:

  • web_reg_save_param
  • web_reg_save_param_ex
  • web_reg_save_param_regexp
  • web_reg_save_param_xpath

Nota sulla versione: Le versioni attuali di VuGen trattano web_reg_save_param_ex in qualità di successore della funzione originaria, e web_reg_save_param_regexp come scelta quando i confini stessi cambiano. L'esempio originale è ancora valido.

Mentre qui viene fornita una breve introduzione, per una comprensione dettagliata delle funzioni e dei loro parametri, apri VuGen, scrivi funzione (o usa Steps Toolbox), sposta il cursore sulla funzione e fai clic su F1 – familiarizza con Guida di VuGen e fatene un'abitudine. Dovrete affrontarla spesso lavorando in questo settore.

Ecco i dettagli della funzione:

web_reg_save_param(Nome parametro, Confine sinistro, Confine destro)

Elenco degli attributi

La tabella seguente elenca tutti gli attributi accettati dalla funzione, indicando se sono obbligatori e cosa controllano.

Attributo Necessario? Ciò che fa
convertire Opzionale HTML_TO_URL converte i dati codificati in HTML in un URL-formato dati codificato. HTML_TO_TEXT converte i dati codificati in HTML in formato testo semplice.
Ignora reindirizzamenti Opzionale, impostazione predefinita "Ignora reindirizzamenti=No" Se impostato su Sì e la risposta del server è un'informazione di reindirizzamento (codice di stato HTTP 300-303, 307), tale risposta non viene analizzata tramite ricerca. La richiesta GET viene inviata alla posizione reindirizzata e la ricerca viene eseguita sulla risposta presente in quella posizione.
LB Obbligatorio Il limite sinistro del parametro o dei dati dinamici. Se non si specifica un valore LB, vengono utilizzati tutti i caratteri dall'inizio dei dati come limite. I parametri di limite distinguono tra maiuscole e minuscole. Per personalizzare ulteriormente il testo di ricerca, utilizzare uno o più flag di testo.
NON TROVATO Opzionale, predefinito “errore” Gestione del caso in cui un limite non viene trovato e viene generata una stringa vuota. "Not found=error" genera un errore. "Not found=warning" ("Not found=empty" nelle versioni precedenti) imposta invece il conteggio dei parametri a 0 e continua, il che è ideale quando si desidera verificare se la stringa è stata trovata senza interrompere lo script. Con l'opzione "Continua in caso di errore" abilitata, lo script continua anche in caso di "errore", ma il log esteso lo registra.
ORD Opzionale, valore predefinito 1 Indica la posizione ordinale o l'istanza della corrispondenza. Se si specifica "Tutti", i valori dei parametri vengono salvati in un array. L'utilizzo di Instance al posto di ORD è supportato per compatibilità con le versioni precedenti, ma è deprecato.
RB Obbligatorio Il limite destro del parametro o dei dati dinamici. Se non si specifica un valore RB, vengono utilizzati tutti i caratteri fino alla fine dei dati come limite. I parametri di limite distinguono tra maiuscole e minuscole. Per personalizzare ulteriormente il testo di ricerca, utilizzare uno o più flag di testo.
RelFrameID Opzionale Il livello gerarchico della pagina HTML rispetto alla richiesta URLI valori possibili sono TUTTI o un numero. RelFrameID non è supportato negli script a livello di interfaccia grafica.
SalvaLen Opzionale, predefinito -1 La lunghezza di una sottostringa del valore trovato, a partire dall'offset specificato, da salvare nel parametro. Il valore predefinito viene salvato alla fine della stringa.
Salva Offset Opzionale, valore predefinito 0 L'offset di una sottostringa del valore trovato, da salvare nel parametro. Il valore dell'offset deve essere non negativo.
Cerca Opzionale, predefinito TUTTO Ambito della ricerca: dove cercare i dati delimitati. I valori possibili sono Intestazioni (cerca solo nelle intestazioni), Corpo (cerca solo nei dati del corpo, escluse le intestazioni), Nessuna risorsa (cerca solo nel corpo HTML, escludendo intestazioni e risorse) o TUTTO (cerca nel corpo, nelle intestazioni e nelle risorse).

Una volta che lo script viene riprodotto correttamente, aggiungi parametrizzazione, transazioni e impostazioni di runtime, eseguilo dal Controllere leggere il risultato in Analisi come parte di un più ampio Test di Performance and Caricare i test.

DOMANDE FREQUENTI

Esegui la procedura due volte con l'accesso esteso attivo e confronta le risposte. Qualsiasi valore che il server emetta ex novo a ogni esecuzione (ID di sessione, token, timestamp) è un potenziale candidato.

web_reg_save_param corrisponde tra limiti fissi sinistro e destro. web_reg_save_param_regexp corrisponde a un'espressione regolare, quindi si adatta anche quando i confini stessi cambiano.

Sì. L'apprendimento automatico può distinguere due risposte di riproduzione e classificare i campi che cambiano, molto più velocemente di una scansione manuale. Considera la classifica come una lista ristretta che verrà comunque confermata da un essere umano.

Copilota GitHub Genera la chiamata alla funzione e i relativi argomenti a partire da un commento. Non potendo visualizzare la risposta del server, ogni limite suggerito deve essere verificato rispetto al traffico reale.

Si tratta di una funzione di registrazione: registra una ricerca per la successiva risposta che VuGen riceve. Inserita dopo la richiesta, non c'è più nulla da scansionare e il parametro rimane vuoto.

I limiti non corrispondevano. Le cause più comuni sono una discrepanza tra maiuscole e minuscole, un limite che appare solo su un'altra pagina o la ricerca nel corpo del documento quando il valore si trova nelle intestazioni.

No. La parametrizzazione permette di inserire i propri dati di input in uno script a partire da un file di dati. La correlazione, invece, cattura un valore generato dal server in fase di esecuzione e lo restituisce. La maggior parte degli script necessita di entrambi.

Sì, spesso in quantità maggiore. I token di accesso, i campi CSRF e gli identificatori JSON cambiano a ogni sessione, quindi il traffico REST e quello a pagina singola sono pieni di potenziali minacce anche senza un modulo HTML.

Riassumi questo post con: