2012-01-04 14 views
11

Recientemente comencé a usar JMeter para crear pruebas de carga para mis aplicaciones web. Me gusta mucho la herramienta y, después de ver algunos videos, fue muy fácil comenzar a crear pruebas.incluye recursos estáticos como imágenes, css, js, etc. en las pruebas

Sin embargo, hay algo que no tengo claro.

Leyendo en la página principal de JMeter, hay un "Best practice" section. Entre otras cosas, dice:

Lo más importante es filtrar todas las solicitudes que no le interesan. Por ejemplo, no tiene sentido registrar las solicitudes de imágenes (JMeter puede recibir instrucciones para descargar todas las imágenes). en una página - ver solicitud HTTP). Estos solo desordenarán su plan de prueba.

He visto esto también en otras páginas, diciendo que no debe incluir solicitudes de imágenes o cualquier otro recurso estático en sus pruebas. Sin embargo, aún no he podido encontrar una sola página que brinde una buena explicación de por qué no debe incluir recursos estáticos.

Seguro, JMeter no es un navegador, pero las solicitudes de recursos estáticos sin duda afectarán el rendimiento de su aplicación. ¿Puede alguien darme una buena explicación :-)

Respuesta

7

Todo depende de lo que está tratando de probar.

En general, hay dos tipos de pruebas de rendimiento que hago con JMeter: pruebas específicas, donde miro cosas que me preocupan, y pruebas de "red de seguridad", donde mido la aplicación completa para asegurarme de hecho funciona de la forma en que lo espero.

Las pruebas específicas casi siempre se ocupan de los aspectos dinámicos de la aplicación web: el código del lado del servidor (.aspx, .php, .jsp, etc.). Aquí es donde la mayoría de las aplicaciones tienen sus cuellos de botella: el esfuerzo para ejecutar un script en el servidor es muchas veces mayor que el esfuerzo de recuperar un archivo CSS del disco y servirlo en el navegador sin ningún procesamiento adicional. Si estoy probando los scripts del lado del servidor, tampoco quiero cargar los activos, porque complican las pruebas y consumen ancho de banda en el extremo del cliente de prueba. No quiero que mis pruebas fallen porque mi servidor JMeter está descargando un archivo de video de 5MB en cada hilo y consumiendo todo el ancho de banda, cuando lo que estoy tratando de hacer es ver cuántos inicios de sesión por segundo puede soportar el servidor.

No tiene mucho sentido probar la capacidad de su servidor web para servir archivos estáticos: Microsoft, el equipo Apache, quien sea, ya ha hecho un trabajo brillante en eso; a menos que tenga una preocupación muy específica, hay mejores formas de gastar su presupuesto de prueba.

Las pruebas de red de seguridad lo corroboran para demostrar que todo funciona realmente de la manera que lo esperaba. Por lo general, los ejecuto en un entorno de producción (similar), así que tengo un CDN, hardware de nivel de producción y la configuración de la aplicación "en vivo".Por lo general, empleo un servicio de prueba basado en la nube para poder ver el rendimiento desde diferentes ubicaciones y generar suficiente carga para estresar el kit de grado de producción. Puede usar JMeter para esto (y hay un par de servicios de JMeter Cloud que he usado en el pasado). Es caro, puede requerir tiempo de inactividad, y solo debe hacerlo como una red de seguridad.

+0

+1. Prefiero tu respuesta a la mía. –

+0

Gracias por una gran respuesta, muy bien explicada! – Daniel

1

A menos que su aplicación sea utilizada por visitantes casuales que solo miran una página y luego se van, hay una buena posibilidad de que los recursos estáticos se descarguen una vez y luego se sirvan desde el caché del navegador.

Además, aunque los recursos estáticos afectan el ancho de banda y el tiempo de respuesta general para el usuario, deberían tener un pequeño impacto en la carga del servidor y es posible que no sean el tipo de cosa que desea medir.

Supongo que debe tratar de imitar lo que los usuarios reales y reales harían con la aplicación.

6

Cuando desee realizar una prueba de rendimiento adecuada (especialmente una prueba de resistencia), donde necesite generar el tiempo de respuesta de su aplicación en función del número de usuarios/hilos en el tiempo, debe incluir todos los recursos estáticos, solo como jMeter Proxy los guardó cuando grabó su prueba.

Para tener en cuenta el caché del navegador puede usar HTTP Cache Manager o Once Only controller, de modo que cada hilo solo descarga cosas estáticas una vez, con su primera solicitud.
HTTP Cache Manager es el camino recomendado y mucho más fácil de configurar, simplemente inclúyalo en la prueba como el primer hijo de un grupo de hilos.
Controlador Once Only se usa regularmente cuando necesita iniciar sesión en los usuarios solo en su primera solicitud.

Se recomienda la parametrización BTW de las solicitudes HTTP no estáticas, por ejemplo, no. buscar el mismo nombre de producto o p. ej. compre el mismo libro todas las veces, generalmente es el punto de partida que puede darle una idea general de la eficiencia del rendimiento de su aplicación.

Espero que esto ayude ...

Cuestiones relacionadas