Condividi tramite


Correggere parametri dinamici non rilevabili in un test delle prestazioni Web

In alcuni siti Web vengono utilizzati parametri dinamici per elaborare alcune richieste Web. Un parametro dinamico è un parametro il cui valore viene rigenerato ogni volta che un utente esegue l'applicazione. Un esempio di parametro dinamico è un ID sessione. L'ID sessione cambia, in genere, ogni 5-30 minuti. Con la registrazione dei test delle prestazioni Web e il motore di riproduzione vengono gestiti automaticamente i tipi più comuni di parametri dinamici:

  • Valori di parametri dinamici che sono impostati nel valore di un cookie. Vengono gestiti automaticamente dal motore dei test delle prestazioni Web durante la riproduzione.

  • Valori di parametri dinamici che sono impostati nei campi nascosti delle pagine HTML, ad esempio lo stato di visualizzazione ASP.NET. Vengono gestiti automaticamente dal registratore, il quale aggiunge regole di estrazione dai campi nascosti al test.

  • Valori di parametri dinamici che sono impostati come stringa di query o parametri Post per i form. Vengono gestiti tramite il rilevamento dei parametri dinamici dopo la registrazione di un test delle prestazioni Web.

Alcuni tipi di parametri dinamici non vengono rilevati. Un parametro dinamico non rilevato impedisce la riuscita dell'esecuzione del test delle prestazioni Web perché il valore dinamico cambia a ogni esecuzione del test. Per gestire correttamente questi parametri, è possibile aggiungere manualmente regole di estrazione ai parametri dinamici nei test delle prestazioni Web.

Creare ed eseguire un'applicazione Web con parametri dinamici

Per illustrare un parametro dinamico sia rilevabile sia non rilevabile, si creerà un'applicazione Web ASP.NET semplice con tre Web Form, alcuni controlli e codice personalizzato. Quindi verrà illustrato come isolare i parametri dinamici e come gestirli.

  1. Creare un nuovo progetto ASP.NET denominato DynamicParamaterSample.

    Creare un progetto di applicazione Web ASP.NET vuoto

  2. Aggiungere un Web Form denominato Querystring.aspx.

  3. Nella visualizzazione Progettazione trascinare un controllo HiddenField nella pagina, quindi modificare il valore della proprietà (ID) in HiddenFieldSessionID.

    Aggiungere un HiddenField

  4. Passare alla visualizzazione di origine della pagina Querystring e aggiungere il codice ASP.NET e JavaScript evidenziato di seguito per generare il parametro dinamico ID sessione fittizio:

    <head runat="server">
    <title>JavaScript dynamic property correlation sample</title> 
    <script type="text/javascript" language="javascript"> 
        <!-- 
            function jScriptQueryString()  
            { 
                var Hidden = document.getElementById("HiddenFieldSessionID"); 
                var sessionId = Hidden.value; 
                window.location = 'JScriptQuery.aspx?CustomQueryString=jScriptQueryString___' + sessionId;  
            } 
        //--> 
    </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
             <a name="QuerystringHyperlink" href="ASPQuery.aspx?CustomQueryString=ASPQueryString___<%= Session.SessionID %>">Dynamic querystring generated by ASP.net</a> 
             <br/> 
             <br/> 
             <a href="javascript:jScriptQueryString()">Dynamic querystring generated by javascript </a>
        </div>
        <asp:HiddenField ID="HiddenFieldSessionID" runat="server" />
        </form>
    </body>
    </html>
    
  5. Aprire il file Querystring.aspx.cs e aggiungere il codice evidenziato di seguito al metodo Page_Load:

        public partial class Querystring : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                Session.Add("Key", "Value"); 
                HiddenFieldSessionID.Value = Session.SessionID;
            }
        }
    
  6. Aggiungere un secondo Web Form denominato ASPQuery.aspx.

  7. Nella visualizzazione Progettazione trascinare un'etichetta nella pagina, quindi modificare il valore della relativa proprietà (ID) in IndexLabel.

    Aggiungere un'etichetta al Web Form

  8. Trascinare un controllo HyperLink nella pagina e modificare il valore della proprietà Text in Back.

    Aggiungere un collegamento ipertestuale al Web Form

  9. Scegliere (...) per la proprietà NavigationURL.

    Modificare la proprietà NavigateURL

    Selezionare Querystring.aspx.

    Scegliere l'URL Querystring.aspx

  10. Aprire il file ASPQuery.aspx.cs e aggiungere il codice evidenziato di seguito al metodo Page_Load:

    protected void Page_Load(object sender, EventArgs e)
            {
                int index; 
                string qstring; 
                string dateportion; 
                string sessionidportion; 
    
                qstring = Request.QueryString["CustomQueryString"]; 
                index = qstring.IndexOf("___"); 
                dateportion = qstring.Substring(0, index); 
                index += 3; 
                sessionidportion = qstring.Substring(index, qstring.Length - index); 
    
                if (sessionidportion != Session.SessionID) 
                { 
                    Response.StatusCode = 401; 
                    IndexLabel.Text = "Failure!  Invalid querystring parameter found."; 
                } 
                else 
                { 
                    IndexLabel.Text = "Success.  Dynamic querystring parameter was found."; 
                } 
                IndexLabel.Text += "<br>\r\n";
            }
    
  11. Aggiungere un terzo Web Form denominato JScriptQuery.aspx.

    Come è stato fatto per la seconda pagina, trascinare un'etichetta nel form, impostare la proprietà (ID) su IndexLabel e trascinare un controllo Hyperlink nel form, impostando la proprietà Text su Back e la proprietà NavigationURL su Querystring.aspx.

    Aggiungere e configurare il terzo Web Form

  12. Aprire il file JScriptQuery.aspx.cs e aggiungere il codice evidenziato di seguito al metodo Page_Load:

    protected void Page_Load(object sender, EventArgs e)
            {
                int index; 
                string qstring; 
                string dateportion; 
                string sessionidportion; 
    
                qstring = Request.QueryString["CustomQueryString"]; 
                index = qstring.IndexOf("___"); 
                dateportion = qstring.Substring(0, index); 
                index += 3; 
                sessionidportion = qstring.Substring(index, qstring.Length - index); 
    
                if (sessionidportion != Session.SessionID) 
                { 
                    Response.StatusCode = 401; 
                    IndexLabel.Text = "Failure!  Invalid querystring parameter found."; 
                } 
                else 
                { 
                    IndexLabel.Text = "Success.  Dynamic querystring parameter was found."; 
                } 
                IndexLabel.Text += "<br>\r\n";
            }
    
  13. Salvare il progetto.

  14. In Esplora soluzioni impostare Querystring.aspx come pagina iniziale.

    Impostare la pagina iniziale su Querystring.aspx

  15. Premere CTRL+F5 per eseguire l'applicazione Web nel browser. Copiare l'URL. Sarà necessario quando si registra il test.

  16. Provare entrambi i collegamenti. Per ciascuno di essi dovrebbe venire visualizzato il messaggio "Success. Dynamic querystring parameter found".

    Eseguire l'applicazione Web

    Operazione completata

Creare un test delle prestazioni Web

  1. Aggiungere un progetto di test di carico e prestazioni Web alla soluzione.

    Aggiungere un progetto di test di carico e prestazioni Web

  2. Rinominare WebTest1.webtest in DynamicParameterSampleApp.webtest.

    Rinominare il test prestazioni Web

  3. Registrare il test.

    Registrare il test prestazioni Web

  4. Copiare e incollare l'URL dal sito Web che si sta testando nel browser.

    Incollare l'URL del sito Web sottoposto al test

  5. Esplorare l'applicazione Web. Scegliere il collegamento ASP.NET, il collegamento Back e il collegamento JavaScript, seguito dal collegamento Back.

    La registrazione test Web visualizza gli URL di richiesta e risposta HTTP durante l'esplorazione nell'applicazione Web.

  6. Scegliere il pulsante di arresto in Registrazione test.

    Nella finestra di dialogo relativa al rilevamento dei parametri dinamici è presente una barra di stato che mostra lo stato del rilevamento dei parametri nelle risposte HTTP ricevute.

  7. Il parametro dinamico per CustomQueryString nella pagina ASPQuery viene rilevato automaticamente. Tuttavia, il parametro dinamico per CustomQueryString nella pagina JScriptQuery non viene rilevato.

    Scegliere OK per aggiungere una regola di estrazione a Querystring.aspx, associandola alla pagina ASPQuery.

    Promuovere il parametro dinamico rilevato

    La regola di estrazione viene aggiunta alla prima richiesta di Querystring.aspx.

    Regola di estrazione aggiunta alla richiesta

    Espandere la seconda richiesta nell'albero delle richieste per ASPQuery.aspx e notare che il valore di CustomQueryString è stato associato alla regola di estrazione.

    CustomQueryString associato alla regola di estrazione

  8. Salvare il test.

Eseguire il test per isolare il parametro dinamico non rilevato

  1. Eseguire il test.

    Eseguire il test prestazioni Web

  2. La quarta richiesta per la pagina JScriptQuery.aspx non riesce. Andare al test Web.

    Errore di parametro dinamico nei risultati dei test

    Il nodo della richiesta JScriptQuery.aspx appare evidenziato nell'editor. Espandere il nodo e notare che la parte "1v0yhyiyr0raa2w4j4pwf5zl" di CustomQueryString risulta dinamica.

    Parametro dinamico sospetto in CustomQueryString

  3. Tornare al Visualizzatore risultati test prestazioni Web e selezionare la pagina JScriptQuery.aspx che ha restituito errore. Quindi, scegliere la scheda Richiesta, verificare che la casella di controllo Mostra dati non elaborati sia deselezionata, scorrere verso il basso e scegliere Ricerca veloce in CustomQueryString.

    Usare la ricerca veloce per isolare il parametro dinamico

  4. È noto dall'esame dell'Editor test che all'oggetto CustomQueryString della richiesta di JScriptQuery.aspx è stato assegnato un valore di: jScriptQueryString___1v0yhyiyr0raa2w4j4pwf5zl e che la sospetta parte dinamica è "1v0yhyiyr0raa2w4j4pwf5zl". Nell'elenco a discesa Trova rimuovere la parte sospetta della stringa di ricerca. La stringa deve essere "CustomQueryString=jScriptQueryString___".

    Ai parametri dinamici sono assegnati i valori in una delle richieste che precede la richiesta che contiene l'errore. Selezionare pertanto la casella di controllo Cerca in alto e scegliere Trova successivo fino a visualizzare la richiesta di Querystring.aspx precedente evidenziata nel pannello Richiesta. Questo dovrebbe avvenire dopo avere fatto clic su Trova successivo tre volte.

    Usare la ricerca veloce per isolare il parametro dinamico

    Come mostrato nella scheda Risposta e nel codice JavaScript implementato in precedenza e mostrato sotto, al parametro della stringa di query CustomQueryString è assegnato un valore "jScriptQueryString___" e vi viene concatenato anche il valore restituito dalla variabile sessionId.

            function jScriptQueryString()  
            { 
                var Hidden = document.getElementById("HiddenFieldSessionID"); 
                var sessionId = Hidden.value; 
                window.location = 'JScriptQuery.aspx?CustomQueryString=jScriptQueryString___' + sessionId;  
            }
    

    Si è ora determinata l'area in cui si verifica l'errore e si è stabilito che è necessario estrarre il valore per sessionId. Tuttavia, il valore di estrazione è solo il testo ed è pertanto necessario isolare l'errore ulteriormente tentando di individuare una stringa dove sia visualizzato il valore effettivo di sessionId. Analizzando il codice, si noterà che la variabile sessionId è uguale al valore restituito da HiddenFieldSessionID.

  5. Utilizzare la ricerca veloce in HiddenFieldSessionID, deselezionando la casella di controllo Cerca in alto e selezionando Richiesta corrente.

    Usare la ricerca veloce per HiddenFieldSession

    Si noti che il valore restituito non è la stessa stringa della registrazione del test delle prestazioni Web originale. Per questa esecuzione del test il valore restituito è "5w4v3yrse4wa4axrafykqksq" e nella registrazione originale il valore è "1v0yhyiyr0raa2w4j4pwf5zl". Poiché il valore non corrisponde a quello della registrazione originale, viene generato l'errore.

  6. Poiché è necessario correggere il parametro dinamico nella registrazione originale, scegliere il risultato registrato nella barra degli strumenti.

    Scegliere il risultato registrato

  7. Nei risultati registrati selezionare la terza richiesta, che è la stessa richiesta di Querystringrequest.aspx isolata nei risultati dell'esecuzione del test.

    Scegliere la stessa richiesta nei risultati registrati

    Scegliere la scheda Risposta, scorrere verso il basso e selezionare il valore del parametro dinamico originale di "1v0yhyiyr0raa2w4j4pwf5zl" che è stato isolato in precedenza e aggiungere una regola di estrazione.

    Aggiungere una regola di estrazione per il parametro dinamico

    La nuova regola di estrazione viene aggiunta alla richiesta Querystring.aspx e le viene assegnato un valore di "Param0".

    Se nella finestra di dialogo è indicato che sono state trovate corrispondenze per il testo estratto a cui associare il parametro, scegliere Sì.

    Regola di estrazione creata

  8. Scegliere Trova successivo. La prima corrispondenza è quella da modificare, ovvero il parametro per CustomQueryString nella pagina JScriptQuery.

    Trovare e sostituire il testo per il parametro

  9. Scegliere Sostituisci.

    Sostituire il testo con il parametro

    Il parametro QueryString nella richiesta di JScriptQuery.aspx viene aggiornato utilizzando il nuovo parametro di contesto: CustomQueryString=jScriptQueryString___ {{Param0}}.

    Parametro applicato a querystring

  10. Chiudere la finestra di dialogo Trova e sostituisci nella richiesta. Nell'albero delle richieste si noti la similitudine tra le strutture del parametro dinamico rilevato e del parametro dinamico non rilevato di cui si è effettuata la correlazione.

    Parametri dinamici rilevati e correlati

  11. Eseguire il test. Ora viene eseguito senza errori.

D&R

D. È possibile eseguire nuovamente il rilevamento dei parametri dinamici se l'applicazione Web viene modificata?

R. Sì, utilizzare la seguente procedura:

  1. Sulla barra degli strumenti, scegliere il pulsante Promuovi parametri dinamici a parametri di test Web.

    Al termine del processo di rilevamento, se vengono rilevati parametri dinamici, viene visualizzata la finestra di dialogo Promuovi parametri dinamici a parametri di test Web.

    I parametri dinamici sono elencati nella colonna Parametri dinamici. Le richieste da cui verrà estratto e a cui sarà associato il parametro dinamico sono elencate nelle colonne Estrai parametro da risposta e Associa a richiesta.

    Se si sceglie un parametro dinamico nella finestra di dialogo Promuovi parametri dinamici a parametri di test Web, nell'albero delle richieste dell'Editor test prestazioni Web vengono evidenziate due richieste. La prima richiesta è quella a cui verrà aggiunta la regola di estrazione. La seconda richiesta è quella a cui verrà associato il valore estratto.

  2. Selezionare o deselezionare la casella di controllo accanto ai parametri dinamici che si desidera correlare automaticamente. Per impostazione predefinita, vengono selezionati tutti i parametri dinamici.

D. È necessario configurare Visual Studio per rilevare i parametri dinamici?

R. La configurazione predefinita di Visual Studio Ultimate prevede in genere il rilevamento dei parametri dinamici quando si registra un test delle prestazioni Web. Tuttavia, se le opzioni Visual Studio Ultimate sono configurate per non rilevare i parametri dinamici o se l'applicazione Web testata viene modificata con parametri dinamici aggiuntivi, è comunque possibile eseguire il rilevamento dei parametri dinamici dall'Editor test prestazioni Web.