fbpx

Pruebas de carga Aplicaciones AJAX

Crear escenarios de usuario para las aplicaciones AJAX para examinar el comportamiento del usuario,
identificar problemas y validar el rendimiento bajo carga.

Descripción general del contenido

 


 

¿Qué es AJAX?

 

Aquellos de ustedes que han tenido que lidiar con las pruebas de carga de aplicaciones basadas en AJAX han aprendido que esto es a menudo un desafío de desarrollo y automatización desagradable. Esta página proporcionará algunos antecedentes sobre AJAX, seguido de ventajas y desventajas y un enfoque de pruebas de rendimiento AJAX recomendado.

Hace quince años, las páginas web eran aburridas pero extremadamente ligeras, fáciles de mantener, y su capacidad de prueba era fantástica. Los usuarios a menudo pasaban más tiempo esperando frente a una pantalla blanca que interactuando con esas primeras aplicaciones web. Debido a esta limitada usabilidad, las empresas evitaron gastar dinero en nuevos servicios basados en la web.

A partir de 2005, una nueva tecnología llamada AJAX permitió a los desarrolladores crear sitios web modernos, lo que minimizaba el tiempo que los usuarios pasaban frente a una pantalla en blanco esperando a que se cargara una página. AJAX es una abreviatura de JavaScript asincrónico y XML y es más que una tecnología porque consta de HTML, CSS, JavaScript, XMLHttpRequest y un lenguaje de scripting del lado del servidor como PHP.

Al principio de la era de Internet, la popularidad de las páginas web ricas en contenido e interactivas era mala porque no había opción de actualizar una página web sin volver a cargar toda la página. AJAX cerró esta brecha e introdujo el concepto de carga de datos asincrónico, que permite a un usuario final interactuar con la página mientras se cargan datos en segundo plano. Hoy en día, este concepto es ampliamente utilizado porque permite la implementación de aplicaciones web interactivas.

 

Una solicitud AJAX típica consta de:

  1. Clics de usuario a través de la página web
  2. El controlador de esta página web crea un objeto XMLHttpRequest
  3. El objeto XMLHttpRequest solicita un documento del servidor
  4. El servidor recupera los datos adecuados y los devuelve
  5. XMLHttpRequest desencadena un evento para notificar a la página web que los datos han llegado
  6. El controlador procesa los datos y los muestra

 


 

¿Qué desafíos se presentan con las aplicaciones AJAX?

 

Obviamente, hay escollos involucrados en las páginas web dinámicas basadas en AJAX, que ya son bien conocidas en la comunidad de desarrolladores. Vamos a resumir los puntos problemáticos en esta área AJAX a continuación.

En primer lugar, AJAX se basa en JavaScript y si deshabilita Java en su navegador no funcionará en absoluto. Hace varios años, era común que las organizaciones bloquearan su navegador y deshabilitaran JavaScript por motivos de seguridad. Esos días ya no están, pero sigue siendo bueno tener esto en cuenta.

En segundo lugar, los datos cargados y mostrados dinámicamente no forman parte de la página. Si un motor de búsqueda ha indexado la aplicación web basada en AJAX, el resultado puede ser insatisfactorio porque una gran extensión de contenido no es visible para esos motores de indexación.

En tercer lugar, las actualizaciones de páginas dinámicas en curso pueden molestar a los usuarios con una baja capacidad de atención. Cuantos más elementos dinámicos aparezcan en esas páginas, mayor será la posibilidad de que el usuario se interrumpa y no pueda terminar su trabajo en un tiempo aceptable.

Por último, debido a la latencia de comunicación cliente-servidor basada en devolución de llamada es varias veces mayor en comparación con los sockets web. Los clientes web sondean las actualizaciones de datos, lo que también es un desafío para las pruebas automatizadas.

 


 

Técnicas de simulación de usuario

 

Los especialistas en pruebas de carga son responsables de elegir un enfoque de simulación de usuario adecuado, que es tanto, adecuado para su aplicación bajo prueba y no genera demasiado esfuerzo. Si elige el método de simulación incorrecto, la posibilidad es muy alta de que no pueda abordar los puntos de acceso de rendimiento en su aplicación.

Hay dos métodos de simulación de usuario.

1. Simulación basada en protocolos de solicitudes y respuestas
La mayoría de las herramientas de prueba de código abierto y también todas las herramientas de prueba de carga comerciales admiten este procedimiento. Las interacciones cliente-servidor se registran y la herramienta de prueba captura todas las solicitudes y respuestas en un script de prueba. Después de la parametrización de datos dinámicos como ID de sesión o datos de entrada de prueba, los scripts podrían utilizarse para simular la carga necesaria en el sistema back-end. Tenga en cuenta que el procesamiento o las interacciones del lado cliente no forman parte de las mediciones de tiempo de respuesta a nivel de protocolo.

2. Simulación completa basada en navegador de interacciones reales del usuario
Solo los jugadores destacados en el negocio de pruebas de carga apoyan este enfoque de simulación. La razón de esto es que los requisitos de recursos del sistema son más altos y la reproducción confiable es difícil de implementar. Cuando se trata de probar la creación de scripts es similar al enfoque basado en protocolos. El probador navega a través de la página web mientras que un grabador de scripts captura todas las interacciones en el explorador web. Durante la ejecución de la prueba, un navegador web sin cabeza ejecuta las interacciones grabadas y responde a las devoluciones de llamada del servidor similares a un usuario real. Este tipo de simulación de usuario es muy precisa y proporciona métricas de rendimiento de front-end realistas.

 

El método de simulación anterior es perfecto para aplicaciones web estáticas, tiene una baja sobrecarga de simulación en su máquina de inyección de carga y a menudo es fácil de implementar. La técnica posterior proporciona tiempos de respuesta precisos de extremo a extremo, pero su sobrecarga en el servidor de pruebas de carga es mucho mayor. Entonces, ¿cómo elegiría el mejor método de simulación de usuario para su próxima prueba de carga basada en AJAX?

 


 

Pruebas de carga de AJAX en acción

 

¿Cuál es el mejor enfoque de pruebas de carga de AJAX y cómo puede validar su decisión? Obviamente, es una buena idea iniciar un pequeño experimento si no está seguro de qué enfoque proporcionaría resultados precisos.

Le daré ahora dos implementaciones de prueba de carga de ejemplo para una aplicación de ejemplo AJAX https://ajaxsearchpro.com. Esta aplicación de demostración es un motor de búsqueda simple. Durante los tipos de usuario se mostrarán los términos de búsqueda que coincidan con el contenido. Después de la tecla intro activada o el botón de búsqueda se hace clic en la búsqueda final se ejecutará y los resultados de búsqueda correspondientes se mostrarán en la pantalla paso a paso.

Este es el gráfico de cascada capturado con mi navegador Chrome. El tiempo de respuesta de mi solicitud de búsqueda de «coche» fue de 2,2 segundos.

 

waterfall chart chrome browser

 

Utilicé las herramientas de desarrollo de mi navegador, lo que me ayudó a averiguar que ejecuta la esta solicitud al realizar la acción de búsqueda: https://ajaxsearchpro.com/?s=car

 

He creado un script de prueba de carga basado en protocolo y basado en explorador, ejecutado ambos y comparado las métricas de rendimiento resultantes. ¿Qué te parece? ¿Qué simulación de usuario es la mejor para una aplicación basada en AJAX?

 

Script de prueba de carga AJAX basado en protocolo

 

Pasos con scripts: https://ajaxsearchpro.com/?s=car Tiempo de respuesta: 594 ms
Enfoque de simulación: Nivel de protocolo, Chrome Número de solicitudes: 1

 

Waterfall Chart
protocol based ajax waterfall chart

 

Resumen de esta ejecución de script basada en protocolo
protocol based ajax script execution

 

Script de prueba de carga AJAX basado en navegador

 

Pasos con scripts: https://ajaxsearchpro.com/?s=car Tiempo de respuesta: 2.18 seg
Enfoque de simulación: Nivel de protocolo, Chrome Número de solicitudes: 32

 

Waterfall Chart
browser based ajax waterfall chart

 

Resumen de esta ejecución de script basada en protocolo
browser based ajax script execution

 

Comparación de ambos métodos de simulación

 

Debido a su patrón de comunicación de asincronía, las aplicaciones basadas en AJAX no se pueden automatizar a nivel de protocolo. Sólo la simulación real basada en navegador proporciona resultados precisos y genera una carga realista en su sistema backend.

Considere una prueba de carga de nuestra aplicación de demostración AjaxSearchPro con 100 usuarios simultáneos y 10000 búsquedas por hora. Si decide utilizar la simulación basada en protocolos, se perdería 10000 x 31 a 310.000 solicitudes. Obviamente, esto conduciría a resultados de pruebas de carga totalmente inexactos.

 


 

Cómo la solución LoadView de Dotcom-Monitor aborda las pruebas de carga con AJAX

 

Nuestra plataforma de pruebas de carga basada en la nube LoadView está diseñada para probar todas las aplicaciones web 2.0 modernas como AJAX, Flash, HTML5 o jQuery. Su facilidad de uso es excepcional. Puede grabar escenarios completos basados en el navegador y simular más de 40 dispositivos móviles o basados en navegadores como Internet Explorer, Chrome, iPhone, Samsung, Blackberry y muchos más.

Muchas soluciones de pruebas de carga proporcionan solo un enfoque de simulación de usuario basado en protocolos, lo que no es suficiente. Puede hacer hincapié en el back-end con pruebas de nivel de protocolo, pero una parte significativa de las solicitudes cliente-servidor y el procesamiento del lado cliente se deja fuera. Nuestra plataforma LoadView le ofrece todo lo que necesita cuando se trata de simulación de usuario precisa.

 

5 pasos para ejecutar la prueba de carga basada en AJAX con LoadView

 

1. Registre su aplicación AJAX
Puede utilizar nuestro EveryStep Web Recorder para navegar manualmente por la aplicación basada en AJAX. Cada paso registrará todas las acciones y le permitirá agregar pasos de temporizador o verificación. Una vez que haya hecho clic en su sistema bajo prueba, puede realizar una única ejecución de prueba de usuario o cargar las acciones grabadas en nuestra plataforma y crear su dispositivo de prueba de carga.

2. Calibrar
La asignación de máquinas de inyección de carga suele ser una conjetura. Las máquinas de generación de carga en mal estado falsificarán los resultados de las pruebas. LoadView ejecuta una única ejecución de prueba de usuario del dispositivo y calcula el número máximo de usuarios por máquina de inyección de carga. Este paso evita que una máquina sobrecargada afecte negativamente a los tiempos de respuesta de la aplicación.

3. Plan de ejecución
El volumen de usuario a menudo varía a lo largo de un día laborable típico. Abordamos esta necesidad con nuestra función de plan de ejecución. Le ofrece total flexibilidad para modelar escenarios de prueba de carga realistas.

4. Distribución virtual de usuarios
LoadView le permite elegir entre una amplia gama de máquinas de inyección de carga en todo el mundo. Seleccione aquellos que representen la ubicación habitual de sus clientes.

5. Ejecute la prueba y obtenga sus resultados
En este último paso puede iniciar la ejecución de la prueba de carga. Una vista en línea le proporcionará información en tiempo real sobre el rendimiento de su aplicación AJAX bajo carga. Una vez finalizada la ejecución de la prueba, recibirá un informe detallado con los indicadores clave de rendimiento más importantes.

 

Teniendo en cuenta todo lo que se tiene en cuenta, LoadView cumple con todos los requisitos de una plataforma de pruebas de carga moderna, simplifica los desafíos de automatización de pruebas y le ayuda a simular la producción real como escenarios en sus aplicaciones empresariales complejas.

 


 

Herramientas utilizadas

 

LoadView: Plataforma de prueba de carga basada en la nube de Dotcom-Monitor

EveryStep Web Recorder: Herramienta de scripting de Dotcom-Monitor

Herramientas para desarrolladoresde Chrome : Análisis del patrón de comunicación

Para obtener más información sobre la plataforma Dotcom-Monitor, visite www.dotcom-monitor.com