¿Cómo abordar las pruebas de rendimiento del "cliente final" en aplicaciones de una sola página (web)?

Estamos evaluando cómo evaluar el rendimiento en unaplicación de una sola página (SPA) que depende en gran medida de JavaScript y contenido dinámico (actualizado a través de Ajax).

Herramientas populares de prueba de carga comoApache JMeter oGatling son capaces de generar grandes cargas con poco hardware enviando solicitudes HTTP. Pero no procesan ningún código Javascript.

Nos gustaría medir el rendimiento tal como lo percibe el cliente, es decir, tal como lo percibe el usuario final sentado frente a un navegador (con toda la carga de procesamiento y JavaScript incluida).

Tenemos en mente las siguientes alternativas:

Use Selenium Grid para ejecutar un script de prueba al mismo tiempo en varias máquinas. Cada instancia envía datos de latencia recopilados en tiempo de ejecución a un repositorio central.

Similar a lo anterior, excepto que solo se inicia una instancia de secuencia de comandos Selenium. Luego, haríamos JMeter / Gatling para generar la carga pesada en segundo plano.

No use selenio en absoluto. Mientras ejecuta una prueba de carga con JMeter / Gatling, inspeccione manualmente el comportamiento de la página utilizando herramientas como Firebug, YSlow, etc.

Cada enfoque tiene sus puntos fuertes y sus inconvenientes. En(1) Soy capaz de crear la carga más "realista", pero no escala,(2) escala a través de JMeter / Gatling, pero tengo que asegurarme de que la carga que crean no se desvíe demasiado de la aplicación real y(3) es el más fácil de configurar, pero obviamente lleva mucho tiempo ya que no está automatizado.

Hasta ahora no pude encontrar ninguna herramienta, marco o incluso un conjunto de directrices sobre este tema, por lo que me gustaría saber de los expertos aquí en SO: ¿qué tipo de enfoque utilizan para este tipo de prueba?

Esta entrada en las preguntas frecuentes de Selenium Grid establece que * "realizar pruebas de rendimiento / carga con un navegador real es una muy mala idea ya que es difícil / costoso escalar la carga y la carga real es muy inconsistente ...". Solo puedo pensar que se refieren a "rendimiento del backend / pruebas de carga". De lo contrario, si estoy interesado en el rendimiento del usuario final, ¿cuál es la alternativa?

Respuestas a la pregunta(1)

Su respuesta a la pregunta