Creación del Script de Prueba

En la sección anterior vimos de forma genérica como grabar un script, ejecutarlo y ver sus resultados. En esta sección vamos a crear un script específico para probar la aplicación. Los pasos de este script son:

1. Ingresar a la pantalla de autenticación e ingresar el usuario y clave carlos/carlos123.
2. Presionar el botón Autenticar.
3. La aplicación mostrará la pantalla de error de autenticación.
4. Volver a la pantalla de autenticación e ingresar el usuario y clave pepe/pepe123.
5. La aplicación lo llevará a la página de cosas.
6. Ingresar los siguientes datos para almacenar una cosa: Lente, 10, 55.
7. presionar el botón agregar.

A diferencia del script anterior, este tendrá algunas características adicionales:

  • Manejo de cookies.
  • Lectura de datos desde un archivo.
  • Ajuste de los valores del ViewState de JavaServer Faces.

Para grabar el script siga las instrucciones indicadas a continuación:

1. Cree un nuevo proyecto de JMeter que contenga los siguientes elementos: un grupo de hilos y un controlador simple. Tres listener: uno para ver los resultados en árbol, otro que los muestre en una tabla y un reporte agregado.

2. Agregue un proxy, confígurelo para que almacene los las peticiones en el controlador simple y arránquelo en un puerto disponible. La estructura del script debe ser similar a la que indica la imagen:

ScriptPrueba01.JPG

3. Configure en su navegador el proxy de JMeter y navegue en la aplicación siguiendo los pasos indicados al principio de esta sección. Asegúrese que el proxy también aplique para las direcciones locales.

4. Detenga el proxy.

5. Elimine del script todas las peticiones que no son necesarias:

  • Las realizadas a otros sitios que no sean la aplicación. Por ejemplo las de las barras de herramientas.
  • Las peticiones de recursos estáticos como imágenes (jpg, gif, png), hojas de estilos (css), javascript, etc. En despliegues de producción estos recursos suelen ser almacenados en un caché del navegador y no van a solicitarse siempre.
  • Si alguna petición tiene el valor jsessionid elimínelo. Borrarla del nombre de la petición es opcional.
ScriptPrueba02.JPG

6. Agregue al script dos elementos de configuración en el nodo Controlador Simple:

  • Gestor de Cookies HTTP: Este elemento generará gestionará las cookies generadas por la aplicación y se encargará de generar una nueva para cada petición. En este elemento seleccionar el campo de chequeo "Limpiar las cookies en cada iteración?"
  • Configuración del CSV Data Set: Con este elemento pasaremos al script datos leídos desde un archivo.

7. Numere las peticiones y guarde el script.

8. Ejecútelo una vez y observe los resultados del árbol. Probablemente la ejecución falle en los pasos 2 y 4 por los valores enviados en la variable ViewState. Este es uno de los retos interesantes al probar una aplicación hecha con JavaServer Faces, pues en cada petición que requiera ViewState es necesario enviar el valor generado para la página.

Observe en la siguiente imagen el valor de ViewState para la respuesta de la primera petición.

ScriptPrueba03.JPG

La segunda petición debería envíar en la variable javax.faces.ViewState el valor devuelto en la primera.

ScriptPrueba04.JPG

9. El requisito anterior se logra usando un extractor de expresiones regulares o un extractor XPath. En este caso usaremos expresiones regulares para extraer el valor de la variable de cada respuesta y enviarlo en la siguiente petición. Para esto agregue un extractor de expresiones regulares haciendo clic derecho en el nodo Grupo de Hilos y siguiendo las opciones Añadir —> Post Procesadores —> Extractor de Expresiones Regulares.

ScriptPrueba10.JPG

10. Ingrese los siguientes valores en el extractor. Tenga cuidado de poner exactamente el valor descrito sin espacios u otros caracteres adicionales.

Nombre de Referencia: jsfViewState
Expresión Regular: <input type="hidden" name="javax\.faces\.ViewState" id="javax\.faces\.ViewState" value="([^"]+)".* />
Plantilla: $1$
Coincidencia No. (0 para Aleatorio): 0
Valor por defecto: Vacío

ScriptPrueba11.JPG

11. Vaya ahora a cada una de las peticiones que envíen en sus parámetros la variable javax.faces.ViewState y cambie el campo valor por ${jsfViewState}. Para la aplicación de ejemplo las peticiones son la 02, 04 y 05.

ScriptPrueba12.JPG
ScriptPrueba13.JPG

12. Realice todas las correcciones anteriores y ejecute de nuevo el test hasta que todas las peticiones sean exitosas como muestra la siguiente imagen:

ScriptPrueba05.JPG

13. Vamos ahora a reemplazar los datos fijos del script por valore que sean leídos desde un archivo. Los datos que vamos a cambiar son:

  • Usuario
  • Contraseña
  • Nombre de la cosa
  • Valor
  • Cantidad

El elemento "Configuración del CSV Data Set" lee archivos planos con datos separados por un delimitador. Seleccione el elemento y confígurelo así:

  • En Nombre de Archivo ingrese c:/datosPruebaCarga.txt (o cualquier otra dirección donde desee poner el archivo).
  • En Nombres de Variable (delimitados por coma) ingrese los valores: USUARIO, CLAVE,NOMBRE_COSA,VALOR,CANTIDAD. No separe con espacios los nombres de las variables.
  • En Delimitador deje la coma.
  • Asegúrese que Recycle on EOF tenga el valor true, para que una vez alcanzado el final del archivo, el script vuelva a leer desde el principio.
ScriptPrueba06.JPG

14. Cree ahora el archivo c:/datosPruebaCarga.txt con el siguiente contenido:

chonto,chonto123,vaso,2000,8
juan,juan123,cosa2,10,10
roberto,roberto123,casa,1000,1
chonto,chonto123,pc,10,10
pepe,pepe123,discos,987,45688
chonto,chonto123,comida,567,4323

15. Vaya a la petición 04 y cambie los valores pepe y pepe123 por ${USUARIO} y ${CLAVE} respectivamente.

ScriptPrueba07.JPG

16. Vaya a la petición 05 y reemplace los valores Lente, 100 y 55 por ${NOMBRE_COSA}, ${VALOR} y ${CANTIDAD} respectivamente.

ScriptPrueba08.JPG

17. Ejecute el script una vez y en el árbol de resultados verifique que la petición 5 tenga los valores de la primera línea del archivo:

ScriptPrueba09.JPG

18. Listo. Si hasta este punto el ejercicio le ha resultado según las indicaciones, el script está terminado y puede ser usado para la prueba de carga real.

Si quiere ver el script que generé durante esta sección puede descargarlo de aquí.

Si no se indica lo contrario, el contenido de esta página se ofrece bajo Creative Commons Attribution-ShareAlike 3.0 License