Compartir a través de


Tutorial: Correlacionar parámetros dinámicos

En este tutorial, creará una aplicación web ASP.NET que incluye código personalizado para crear un error de parámetro dinámico no detectable.Aprenderá a aislar esos errores y corregirlos.

Algunos sitios web y aplicaciones usan parámetros dinámicos en una o varias de sus solicitudes web.Un parámetro dinámico es un parámetro cuyo valor se genera cada vez que un usuario ejecuta la aplicación.Un parámetro dinámico puede hacer que se produzcan errores en la reproducción de las pruebas de rendimiento web porque el valor dinámico probablemente será diferente cada vez que se ejecuta la prueba.Por consiguiente, no se pueden reproducir valores grabados.Un ejemplo de parámetro dinámico es un identificador de sesión.Su valor cambia una vez cada 5 a 30 minutos.

La grabadora de pruebas de rendimiento web y el motor de reproducción administran automáticamente los tipos más comunes de parámetros dinámicos:

  • Valores de parámetros dinámicos establecidos en un valor de cookie.El motor de pruebas de rendimiento web los administra automáticamente durante la reproducción.

  • Valores de parámetros dinámicos establecidos en campos ocultos en páginas HTML, como el estado de vista de ASP.NET.La Grabadora de prueba de rendimiento web los administra automáticamente.La Grabadora de prueba de rendimiento web agrega reglas de extracción de campos ocultos a la prueba.

  • Valores de parámetros dinámicos establecidos como cadenas de consulta o parámetros de envío de formulario.Se administran mediante la detección de parámetros dinámicos cuando se completa la prueba.

Sin embargo, existen algunas formas de parámetros dinámicos que no se administran automáticamente.Para administrar estos parámetros correctamente, puede agregar reglas de extracción a los parámetros dinámicos en sus pruebas de rendimiento web.No obstante, antes de agregar una regla de extracción, tiene que determinar donde se inicializa un parámetro dinámico.En este tutorial se muestra cómo encontrar y corregir un error de parámetro dinámico de id. de sesión no detectable simulado.

En este tutorial, se realizarán las siguientes tareas:

  • Cree una aplicación web ASP.NET.

  • Agregar algunas páginas ASP.NET a la aplicación.

  • Agregar controles a la aplicación.

  • Modificar el código ASP.NET.

  • Agregar código de C# subyacente.

  • Agregar un poco de Javascript para crear un parámetro dinámico no detectable.

  • Grabar una nueva prueba de rendimiento web en la aplicación y observar una propiedad dinámica de ASP.NET detectada.

  • Ejecutar la prueba de rendimiento web y ver que tiene un parámetro dinámico no detectado.

  • Usar la búsqueda rápida durante la reproducción en el Visor de resultados de pruebas de rendimiento web para aislar el error de parámetro dinámico.

  • Agregar una regla de extracción al parámetro dinámico.

  • Enlazar la regla de extracción al parámetro dinámico en el Editor de prueba de rendimiento web.

  • Ejecutar de nuevo la prueba de rendimiento web sin errores.

Requisitos previos

  • Visual Studio Ultimate.

Crear una aplicación web

Para crear la aplicación Web

  1. En el menú Archivo de Visual Studio Ultimate, elija Nuevo y, a continuación, haga clic en Proyecto.

    Aparecerá el cuadro de diálogo Nuevo proyecto.

  2. En Plantillas instaladas, expanda el lenguaje de programación que desee y, a continuación, haga clic en Web.

  3. En la lista de tipos de proyectos web, seleccione Aplicación web vacía de ASP.NET.

  4. En el cuadro Nombre, escriba DynamicParameterSample.

  5. En el cuadro Ubicación, especifique la carpeta donde desea crear la aplicación web.

  6. Seleccione Crear directorio para la solución.

  7. Elija Aceptar.

  8. En el menú Proyecto, elija Agregar nuevo elemento.

    Aparecerá el cuadro de diálogo Agregar nuevo elemento.

  9. En la lista de elementos, elija Web Forms.

  10. En el cuadro de texto Nombre, escriba Querystring.aspx y, a continuación, haga clic en Agregar.

Agregar un control HiddenField a la página Querystring.aspx

Para agregar un control HiddenField a la página Querystring.aspx

  1. En el Explorador de soluciones, haga clic con el botón secundario en Querystring.aspx y elija Ver diseñador.

    Se mostrará una página en blanco.

  2. Si el cuadro de herramientas no está visible, haga clic en Ver y, a continuación, haga clic en Cuadro de herramientas.

  3. En el grupo Estándar, arrastre un control HiddenField a la página.

    Se agregará un control HiddenField a la superficie de diseño.

  4. Haga clic en el HiddenField de la página y después, en la ventana Propiedades, en la categoría Varias, cambie el valor de (Id.) a HiddenFieldSessionID.

  5. En el menú Archivo, elija Guardar todo.

Agregar código a la página Querystring.aspx

Para agregar código a la página Querystring.aspx

  1. En la parte inferior de la página de Querystring, haga clic en Código.

    Aparecerá el Editor de código con el código ASP.NET para la página Querystring.aspx.

  2. Agregue el siguiente código ASP.NET y JavaScript resaltado para generar los parámetros dinámicos de id. de sesión simulados:

    <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>
    
  3. Haga clic con el botón secundario en la página Querystring y seleccione Ver código.

    Aparecerá el Editor de código con el código de Visual C# subyacente para la página Querystring.aspx.

  4. Agregue el siguiente código resaltado al método 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;
            }
        }
    
  5. En el menú Archivo, elija Guardar todo.

Agregar la página ASPQuery.aspx, controles y código

Para agregar la página ASPQuery.aspx a la aplicación web

  1. En el menú Proyecto, elija Agregar nuevo elemento.

  2. En el cuadro de diálogo Agregar nuevo elemento, haga clic en la plantilla Formulario web ; en Nombre, escriba ASPQuery.aspx y, a continuación, haga clic en Agregar.

  3. En el menú Archivo, elija Guardar todo.

Para agregar controles a la página ASPQuery.aspx

  1. En el Explorador de soluciones, haga clic con el botón secundario en ASPQuery.aspx y elija Ver diseñador.

    Se mostrará una página en blanco.

  2. En el Cuadro de herramientas, desde el grupo Estándar, arrastre un control Label hasta la página.

    Se agregará un control Label a la superficie de diseño.

  3. Haga clic en el Label de la página y después, en la ventana Propiedades, en la categoría Varias, cambie el valor de (Id.) a IndexLabel.

  4. En el Cuadro de herramientas, desde el grupo Estándar, arrastre un control HyperLink hasta la página.

    Se agregará un control HyperLink a la superficie de diseño.

  5. Haga clic en el HyperLink de la página y, después, en la ventana Propiedades, en la categoría Apariencia, cambie el valor de Texto a Atrás.

  6. En la categoría Navegación, haga clic en () para la propiedad NavigationURL.

    Aparecerá el cuadro de diálogo Seleccionar dirección URL.

  7. En la lista de páginas en Contenido de la carpeta, seleccione Querystring.aspx y haga clic en Aceptar.

  8. En el menú Archivo, elija Guardar todo.

Para agregar código subyacente a la página ASPQuery.aspx

  1. Haga clic con el botón secundario en la página ASPQuery y seleccione Ver código.

    Aparecerá el Editor de código con el código de Visual C# subyacente para la página ASPQuery.aspx.

  2. Agregue el siguiente código resaltado al método 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";
            }
    
  3. En el menú Archivo, elija Guardar todo.

Agregar la página JScriptQuery.aspx, controles y código

Para agregar la página JScriptQuery.aspx a la aplicación web

  1. En el menú Proyecto, elija Agregar nuevo elemento.

  2. En el cuadro de diálogo Agregar nuevo elemento, haga clic en la plantilla Formularios web ; en Tipo de nombre, escriba JScriptQuery.aspx y, a continuación, haga clic en Agregar.

  3. En el menú Archivo, elija Guardar todo.

Para agregar controles a la página JScriptQuery.aspx

  1. En el Explorador de soluciones, haga clic con el botón secundario en JScriptQuery.aspx y elija Ver diseñador.

    Se mostrará una página en blanco.

  2. En el Cuadro de herramientas, desde el grupo Estándar, arrastre un control Label hasta la página.

    Se agregará un control Label a la superficie de diseño.

  3. Haga clic en el Label de la página y después, en la ventana Propiedades, en la categoría Varias, cambie el valor de (Id.) a IndexLabel.

  4. En el Cuadro de herramientas, desde el grupo Estándar, arrastre un control HyperLink hasta la página.

    Se agregará un control HyperLink a la superficie de diseño.

  5. Haga clic en el HyperLink de la página y, después, en la ventana Propiedades, en la categoría Apariencia, cambie el valor de Texto a Atrás.

  6. En la categoría Navegación, haga clic en () para la propiedad NavigationURL.

    Aparecerá el cuadro de diálogo Seleccionar dirección URL.

  7. En la lista de páginas en Contenido de la carpeta, seleccione Querystring.aspx y haga clic en Aceptar.

  8. En el menú Archivo, elija Guardar todo.

Para agregar código subyacente a la página JScriptQuery.aspx

  1. Haga clic con el botón secundario en la página JScriptQuery y seleccione Ver código.

    Aparecerá el Editor de código con el código de Visual C# subyacente para la página JScriptQuery.aspx.

  2. Agregue el siguiente código resaltado al método 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";
            }
    
  3. En el menú Archivo, elija Guardar todo.

Probar la aplicación Web manualmente

Para probar la aplicación Web manualmente

  1. En el Explorador de soluciones, haga clic con el botón secundario en Querystring.aspx y, a continuación, haga clic en Establecer como página principal.

  2. Presione CTRL+F5 para ejecutar la aplicación Web en el explorador.Verá la primera página.

  3. Haga clic en el vínculo Cadena de consulta dinámica generada por ASP.NET.

  4. Se mostrará la página ASPQuery.aspx con el mensaje "Success.Dynamic querystring parameter found."

  5. Haga clic en el vínculo Atrás.

  6. Haga clic en el vínculo Cadena de consulta dinámica generada por javascript.

  7. Se mostrará la página JScriptQuery.aspx con el mensaje "Success.Dynamic querystring parameter found."

  8. Haga clic en el vínculo Atrás.

  9. Copie la dirección de la aplicación Web en el portapapeles o en un archivo del Bloc de notas.Por ejemplo, la dirección podría ser la siguiente:

    https://localhost:<númeroDePuerto>/Querystring.aspx.

    Cuando cree una prueba de rendimiento web más adelante en este tutorial, necesitará la dirección URL.

Crear un proyecto de prueba

Para crear el proyecto de prueba

  1. En el menú Archivo, seleccione Agregar y, después, elija Nuevo proyecto.

    Aparecerá el cuadro de diálogo Agregar nuevo proyecto.

  2. En Plantillas instaladas, expanda Visual C# y seleccione Prueba.

  3. En la lista de plantillas, elija Proyecto de prueba.

  4. En el cuadro Nombre, escriba DynamicParameterSampleTest.

  5. Elija Aceptar.

    [!NOTA]

    De forma predeterminada, Visual Studio Ultimate agregará un archivo de prueba unitaria.No necesitará el archivo de prueba unitaria para este tutorial.Por tanto, puede eliminarlo.Aunque no elimine el archivo, no afectará al tutorial.

Grabar una prueba de rendimiento web y detectar automáticamente el parámetro dinámico para la página ASPQuery.aspx

Para grabar la prueba de rendimiento web

  1. En el menú Prueba, haga clic en Nueva prueba.

    Aparecerá el cuadro de diálogo Agregar nueva prueba.

  2. En el cuadro de diálogo Agregar nueva prueba, seleccione Prueba de rendimiento web, asigne el nombre DynamicParameterSampleApp.webtest a la prueba y, a continuación, haga clic en Aceptar.

    Se agregará al proyecto un nuevo archivo de prueba de rendimiento web denominado DynamicParameterSampleApp.webtest y se abrirá la Grabadora de prueba de rendimiento web dentro de una nueva instancia de Internet Explorer.

    Nota de precauciónPrecaución

    Para que el siguiente procedimiento funcione correctamente, debe seguir estos pasos en el orden mostrado.

  3. En la barra de direcciones del explorador, escriba o pegue la dirección de la aplicación web que copió en el paso Para probar la aplicación web manualmente y presione ENTRAR.

    [!NOTA]

    Visual Studio Ultimate comenzará a mostrar las direcciones URL de las prueba de rendimiento web en la Grabadora de prueba de rendimiento web a medida que se graba.

  4. Haga clic en el vínculo Cadena de consulta dinámica generada por ASP.NET.

    Se mostrará la página ASPQuery.aspx con el mensaje "Success.Dynamic querystring parameter found."

  5. Haga clic en el vínculo Atrás.

  6. Haga clic en el vínculo Cadena de consulta dinámica generada por javascript.

  7. Se mostrará la página JScriptQuery.aspx con el mensaje Success. Dynamic querystring parameter found.

  8. Haga clic en el vínculo Atrás.

  9. Para detener la grabación, haga clic en Detener en la Grabadora de prueba de rendimiento web.

    Un cuadro de diálogo muestra el mensaje Detectando parámetros dinámicos.También muestra una barra de progreso que muestra el estado de detección de parámetros en las respuestas HTTP recibidas.

    Después, aparecerá el cuadro de diálogo Promocionar parámetros dinámicos a parámetros de pruebas web.

    Promover parámetros dinámicos

    Puesto que el código personalizado que se agrega para el parámetro dinámico en CustomQueryString en la página ASPQuery del procedimiento se detectó automáticamente, se mostrará en el cuadro de diálogo.

    El parámetro dinámico para CustomQueryString en la página JScriptQuery no se detectó automáticamente porque el código personalizado de JavaScript se agregó a la página Querystring.aspx en el procedimiento Agregar código a la página Querystring.aspx.

  10. Haga clic en Aceptar para agregar una regla de extracción que se haya agregado a Querystring.aspx.

    Se mostrará el Editor de prueba de rendimiento web con la primera solicitud para Querystring.aspx totalmente expandida.Muestra la regla de extracción que se agregó.

  11. Expanda totalmente la segunda solicitud del árbol de solicitudes para ASPQuery.aspx y observe que el valor de CustomQueryString se ha enlazado a la regla de extracción.

    Regla de extracción agregada para parámetro dinámico

  12. Elija Archivo y, a continuación, elija Guardar DynamicParameterSampleApp.webtest para guardar la prueba de rendimiento web recién creada.

Reproducir la prueba de rendimiento web para generar el error de parámetro dinámico no detectado

Para reproducir la prueba de rendimiento web

  1. En el Editor de prueba de rendimiento web, haga clic en Ejecutar en la barra de herramientas para mostrar el Visor de resultados de pruebas de rendimiento web.

  2. Observe que la cuarta solicitud produjo un error.La cuarta solicitud corresponde a la página JScriptQuery.aspx.

    Error de parámetro dinámico no detectado

Aislar el parámetro dinámico que produce el error

Para usar la búsqueda rápida en la reproducción de la grabación

  1. En el Visor de resultados de pruebas de rendimiento web, haga clic con el botón secundario en la cuarta solicitud.La cuarta solicitud corresponde a la página JScriptQuery.aspx donde se produjo el error de parámetro dinámico.Seleccione Ir a prueba web.

    Ir a prueba web

    El Editor de prueba de rendimiento web se mostrará con la solicitud JScriptQuery.aspx resaltada.

  2. Expanda totalmente el nodo de solicitud y observe que la parte "wy0zaykqadkoscuvoiqemofm" de CustomQueryString parece ser dinámica: " CustomQueryString=jScriptQueryString___wy0zaykqadkoscuvoiqemofm".

    Solicitud del editor de pruebas de rendimiento web con error

  3. Vuelva al Visor de resultados de pruebas de rendimiento web y seleccione la página JScriptQuery.aspx que produjo un error.

  4. Elija la pestaña Solicitud.

  5. Compruebe que la casilla Mostrar datos sin procesar está desactivada.

  6. Desplácese hacia abajo hasta llegar a Parámetros QueryString en la columna Nombre.

  7. Haga clic con el botón secundario en CustomQueryString y seleccione Búsqueda rápida.

    Aislar un parámetro dinámico

  8. En el cuadro de diálogo Buscar, el valor del parámetro se muestra en Buscar.

    En este caso, al examinar el Editor de prueba de rendimiento web sabe que el CustomQueryString de la solicitud de JScriptQuery.aspx tenía asignado un valor de: jScriptQueryString___wy0zaykqadkoscuvoiqemofm y que la parte dinámica sospechosa es "wy0zaykqadkoscuvoiqemofm".

  9. En la lista desplegable Buscar, quite la parte sospechosa de la cadena de búsqueda.La cadena debe ser "CustomQueryString=jScriptQueryString___."

    Cuadro de diálogo Buscar

  10. Los valores de los parámetros dinámicos se asignan en una de las solicitudes que precede a la solicitud que tiene el error.Por tanto, active la casilla Buscar hacia atrás y haga clic en Buscar siguiente hasta que vea la solicitud anterior para Querystring.aspx resaltada en el panel Solicitud.Esto debe ocurrir después de hacer clic tres veces en Buscar siguiente.

    Aislar el error dinámico usando la búsqueda

    Como puede ver en la ilustración, y el JavaScript implementado anteriormente, el parámetro CustomQueryString de la cadena de consulta se asigna un valor de “jscriptquerystring___” y también se concatena con el valor devuelto del sessionId var.

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

    Ahora sabe dónde se está produciendo el error y también sabe que necesita extraer el valor para sessionId.Sin embargo, el valor de extracción solo es texto, por lo que necesita aislar aún más el error intentando encontrar una cadena donde se muestre el valor real del sessionId.Examinando el código, puede ver que el sessionId var es igual que el valor devuelto por HiddenFieldSessionID.

  11. Resalte HiddenFieldSessionID, haga clic en él con el botón secundario y, a continuación, seleccione Búsqueda rápida.

  12. En el cuadro de diálogo Buscar, desactive la casilla Buscar hacia atrás y seleccione Solicitud actual.

  13. Elija Buscar siguiente.

    La primera coincidencia de HiddenFieldSessionID está resaltada en la línea siguiente.También puede ver el valor asignado:

    <input type="hidden" name="HiddenFieldSessionID" id="HiddenFieldSessionID" value="0rvcxknlabd30xnbrjtuy11u" />
    

    Buscar HiddenFieldSessionID

    Observe que el valor devuelto no es la misma cadena que en la grabación de la prueba de rendimiento web original.Para esta reproducción, el valor es "0rvcxknlabd30xnbrjtuy11u" y en la grabación, el valor es "wy0zaykqadkoscuvoiqemofm".Como el valor no coincide con el de la grabación original, se genera el error.

Para agregar una regla de extracción desde la reproducción grabada

  1. En el Visor de resultados de pruebas de rendimiento web, haga clic en Grabar resultado en la barra de herramientas.

    Los resultados grabados originales de la prueba de rendimiento web se mostrarán en una pestaña independiente titulada DynamicParameterSampleApp[Recorded].

  2. Seleccione la tercera solicitud si aún no está seleccionada.Es la página Querystringrequest.aspx que aisló en el paso anterior.

  3. Elija la pestaña Respuesta.Desplácese hacia abajo y resalte el valor del parámetro dinámico original de "wy0zaykqadkoscuvoiqemofm" que aisló en el procedimiento anterior.Haga clic con el botón secundario en él y seleccione Agregar regla de extracción.

    Agregar regla de extracción

    Se mostrará el Editor de prueba de rendimiento web con la nueva regla de extracción seleccionada en la solicitud de Querystring.aspx.La nueva regla de extracción tiene asignado un valor de 'Param0'.

    Aparecerá el cuadro de diálogo Microsoft Visual Studio con información que indica que se encontró una coincidencia del texto extraído con el que se va a enlazar el parámetro.

    Regla de extracción agregada como param(0)

  4. Elija .

    Aparecerá el cuadro de diálogo Buscar y reemplazar en solicitud con el texto extraído wy0zaykqadkoscuvoiqemofm en la lista desplegable Buscar y el parámetro {{Param0}} en la lista desplegable Reemplazar por.

    Buscar siguiente Param0

  5. Elija Buscar siguiente.

  6. Se resaltará el parámetro QueryString en la solicitud de JScriptQuery.aspx CustomQueryString=jScriptQueryString___wy0zaykqadkoscuvoiqemofm.

  7. Elija Reemplazar.

    Cadena de consulta actualizada mediante Param(0)

  8. El parámetro QueryString bajo la solicitud de JScriptQuery.aspx se actualizará usando el nuevo parámetro de contexto: CustomQueryString=jScriptQueryString___ {{Param0}}.

  9. Observe la estructura similar en el árbol de solicitudes entre el parámetro dinámico detectado y el parámetro dinámico no detectado que puso en correlación.

Vea también

Tareas

Cómo: Promover los parámetros dinámicos a parámetros de prueba de rendimiento web

Conceptos

Información general sobre el visor de los resultados de pruebas de rendimiento web

Otros recursos

Resolver los problemas de reproducción del Visor de resultado de pruebas de rendimiento web en las pruebas de rendimiento web