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
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.
En Plantillas instaladas, expanda el lenguaje de programación que desee y, a continuación, haga clic en Web.
En la lista de tipos de proyectos web, seleccione Aplicación web vacía de ASP.NET.
En el cuadro Nombre, escriba DynamicParameterSample.
En el cuadro Ubicación, especifique la carpeta donde desea crear la aplicación web.
Seleccione Crear directorio para la solución.
Elija Aceptar.
En el menú Proyecto, elija Agregar nuevo elemento.
Aparecerá el cuadro de diálogo Agregar nuevo elemento.
En la lista de elementos, elija Web Forms.
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
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.
Si el cuadro de herramientas no está visible, haga clic en Ver y, a continuación, haga clic en Cuadro de herramientas.
En el grupo Estándar, arrastre un control HiddenField a la página.
Se agregará un control HiddenField a la superficie de diseño.
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.
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
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.
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>
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.
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; } }
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
En el menú Proyecto, elija Agregar nuevo elemento.
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.
En el menú Archivo, elija Guardar todo.
Para agregar controles a la página ASPQuery.aspx
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.
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.
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.
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.
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.
En la categoría Navegación, haga clic en (…) para la propiedad NavigationURL.
Aparecerá el cuadro de diálogo Seleccionar dirección URL.
En la lista de páginas en Contenido de la carpeta, seleccione Querystring.aspx y haga clic en Aceptar.
En el menú Archivo, elija Guardar todo.
Para agregar código subyacente a la página ASPQuery.aspx
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.
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"; }
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
En el menú Proyecto, elija Agregar nuevo elemento.
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.
En el menú Archivo, elija Guardar todo.
Para agregar controles a la página JScriptQuery.aspx
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.
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.
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.
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.
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.
En la categoría Navegación, haga clic en (…) para la propiedad NavigationURL.
Aparecerá el cuadro de diálogo Seleccionar dirección URL.
En la lista de páginas en Contenido de la carpeta, seleccione Querystring.aspx y haga clic en Aceptar.
En el menú Archivo, elija Guardar todo.
Para agregar código subyacente a la página JScriptQuery.aspx
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.
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"; }
En el menú Archivo, elija Guardar todo.
Probar la aplicación Web manualmente
Para probar la aplicación Web manualmente
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.
Presione CTRL+F5 para ejecutar la aplicación Web en el explorador.Verá la primera página.
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."
Haga clic en el vínculo Atrás.
Haga clic en el vínculo Cadena de consulta dinámica generada por javascript.
Se mostrará la página JScriptQuery.aspx con el mensaje "Success.Dynamic querystring parameter found."
Haga clic en el vínculo Atrás.
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
En el menú Archivo, seleccione Agregar y, después, elija Nuevo proyecto.
Aparecerá el cuadro de diálogo Agregar nuevo proyecto.
En Plantillas instaladas, expanda Visual C# y seleccione Prueba.
En la lista de plantillas, elija Proyecto de prueba.
En el cuadro Nombre, escriba DynamicParameterSampleTest.
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
En el menú Prueba, haga clic en Nueva prueba.
Aparecerá el cuadro de diálogo Agregar nueva prueba.
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.
Precaución
Para que el siguiente procedimiento funcione correctamente, debe seguir estos pasos en el orden mostrado.
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.
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."
Haga clic en el vínculo Atrás.
Haga clic en el vínculo Cadena de consulta dinámica generada por javascript.
Se mostrará la página JScriptQuery.aspx con el mensaje Success. Dynamic querystring parameter found.
Haga clic en el vínculo Atrás.
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.
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.
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ó.
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.
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
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.
Observe que la cuarta solicitud produjo un error.La cuarta solicitud corresponde a la página JScriptQuery.aspx.
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
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.
El Editor de prueba de rendimiento web se mostrará con la solicitud JScriptQuery.aspx resaltada.
Expanda totalmente el nodo de solicitud y observe que la parte "wy0zaykqadkoscuvoiqemofm" de CustomQueryString parece ser dinámica: " CustomQueryString=jScriptQueryString___wy0zaykqadkoscuvoiqemofm".
Vuelva al Visor de resultados de pruebas de rendimiento web y seleccione la página JScriptQuery.aspx que produjo un error.
Elija la pestaña Solicitud.
Compruebe que la casilla Mostrar datos sin procesar está desactivada.
Desplácese hacia abajo hasta llegar a Parámetros QueryString en la columna Nombre.
Haga clic con el botón secundario en CustomQueryString y seleccione Búsqueda rápida.
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".
En la lista desplegable Buscar, quite la parte sospechosa de la cadena de búsqueda.La cadena debe ser "CustomQueryString=jScriptQueryString___."
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.
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.
Resalte HiddenFieldSessionID, haga clic en él con el botón secundario y, a continuación, seleccione Búsqueda rápida.
En el cuadro de diálogo Buscar, desactive la casilla Buscar hacia atrás y seleccione Solicitud actual.
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" />
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
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].
Seleccione la tercera solicitud si aún no está seleccionada.Es la página Querystringrequest.aspx que aisló en el paso anterior.
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.
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.
Elija Sí.
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.
Elija Buscar siguiente.
Se resaltará el parámetro QueryString en la solicitud de JScriptQuery.aspx CustomQueryString=jScriptQueryString___wy0zaykqadkoscuvoiqemofm.
Elija Reemplazar.
El parámetro QueryString bajo la solicitud de JScriptQuery.aspx se actualizará usando el nuevo parámetro de contexto: CustomQueryString=jScriptQueryString___ {{Param0}}.
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