2009-02-19 10 views
5

He estado trabajando en un sitio que hace un gran uso de AJAX y JavaScript dinámico en la interfaz y es hora de comenzar las pruebas de tensión. Pero, ¿cómo se prueba correctamente el estrés de algo que requiere hacer clic en varios enlaces en el front-end? Una forma en que pude acceder fácilmente a todas las páginas del sitio rápida y repetidamente fue apuntarle un Google Mini. Pero eso no va a hacer clic en enlaces y luego navegar por ventanas modales y cosas por el estilo.Prueba de carga de la interfaz de usuario

Editar - Debo señalar que el sitio está hecho en PHP5 y la biblioteca de JavaScript utilizada es jQuery. No estoy seguro de si esto haría alguna diferencia, pero sentí que podría ser útil saberlo.

Respuesta

2

JMeter es genial en esto. Puede grabar sus sesiones y ajustarlas a su gusto.

La denominada 'prueba de carga de ajax' es un tema recurrente en este sitio, y a menudo se confunde. Así que vamos a aclarar: realmente no hay diferencia entre una prueba de carga en una página web normal y una prueba de carga con ajax. Todo se reduce a solicitudes discretas; simplemente no son actualizaciones de página completa.

Una cosa a tener en cuenta es que hay una clara diferencia entre las pruebas de carga del servidor de procesamiento de las peticiones (una prueba de carga) y el rendimiento en la pantalla de los componentes de interfaz de usuario está actualizado (el nivel de desempeño de su javascript.)

simple ejemplo de prueba de carga:

  1. carga de la página inicial
  2. entrada
  3. navegar?
  4. 5-10 peticiones ajax '(o lo que pueden ajustarse a su patrón de uso de la aplicación)
  5. cierre de sesión
1

Lo que realmente quiere es a prueba de estrés es la capacidad del servidor para manejar las peticiones Ajax. Use una herramienta de carga que mire las solicitudes mientras "graba" la prueba, y luego sintonícelas según corresponda. Solo he usado la versión de prueba de prueba, así que no puedo apuntar a una de bajo costo.

1

no estoy de acuerdo con Nathan y Freddy en algún grado. Tienen razón en que "las pruebas AJAX" no difieren en absoluto en que se realizan las solicitudes HTTP. Pero no es tan simple. Ver mi artículo en Ajaxian.com en Why Load Testing Ajax is Hard.

JMeter, Pylot y The Grinder son todas excelentes herramientas para generar solicitudes HTTP (yo personalmente recomiendo Pylot). Pero en esencia, no actúan como un navegador y procesan JavaScript, lo que significa que todo lo que hacen es reproducir el tráfico que vieron en un tiempo récord. Si esas solicitudes AJAX fueron exclusivas de esa sesión, es posible que no sean adecuadas/correctas para reproducirlas en grandes volúmenes.

El hecho es que a medida que se introduce más lógica en el navegador, se vuelve mucho más difícil (si no imposible) simular correctamente el tráfico con las herramientas tradicionales de prueba de carga.

En mi artículo, doy un ejemplo simple de lo difícil que es probar algo como la página de inicio de Google cuando desea consultar 1000 de diferentes términos de búsqueda (un objetivo importante durante la prueba de carga).Para hacerlo con JMeter/Pylot/Grinder terminas reescribiendo partes del código AJAX (en tu caso con jQuery) de nuevo en el idioma nativo de la herramienta.

Se vuelve aún más complejo si su objetivo es medir el tiempo de respuesta tal como lo percibe el usuario (lo cual es posiblemente lo más importante al final del día). Para aplicaciones realmente complejas que usan Comet/"Reverse Ajax" (una técnica que mantiene receptáculos abiertos durante largos períodos de tiempo), las herramientas de carga tradicionales no funcionan en absoluto.

Mi empresa, BrowserMob, proporciona una load testing service que utiliza los navegadores Firefox, impulsado por Selenium, para conducir cientos o miles de navegadores reales, que le permite medir el tiempo y el rendimiento de los elementos visuales como se ve en el navegador. También admitimos usuarios virtuales tradicionales (tráfico HTTP oculto) y un navegador simulado (a través del HtmlUnit).

Dicho todo esto, generalmente una combinación de un servicio como BrowserMob más pruebas de carga tradicional es el enfoque correcto. Es decir, los navegadores reales son geniales para una prueba de carga de fidelidad completa, pero nunca serán tan económicos como los "usuarios virtuales", ya que requieren de 10 a 100 veces más RAM y CPU. Ver mi publicación de blog reciente sobre si simulate or not to simulate virtual users.

Espero que ayude!

0

Puede usar algo como openSTA.

Esto permite que una sesión con un sitio web sea grabada y luego reproducida a través de un lenguaje de script relativamente simple.

También puede probar fácilmente los servicios web y escribir sus propios scripts.

Le permite poner scripts juntos en una prueba de la forma que desee y configurar el número de iteraciones, el número de usuarios en cada iteración, el tiempo de aceleración para presentar a cada nuevo usuario y el retraso entre cada iteración. Las pruebas también se pueden programar en el futuro.

Es de código abierto y gratuito.

Produce una serie de informes que se pueden guardar en una hoja de cálculo. Luego usamos una tabla dinámica para analizar y graficar fácilmente los resultados.

Cuestiones relacionadas