17. ¡Ayuda! ¡Mi jefe quiere que cargue la prueba de nuestra aplicación!

Esta es una propuesta bastante abierta. Hay una serie de preguntas que deben hacerse primero y, además, una serie de recursos que se necesitarán. Necesitará algo de hardware para ejecutar los puntos de referencia/pruebas de carga. Una serie de herramientas resultarán útiles. Hay una serie de productos a considerar. Y finalmente, ¿por qué Java es una buena opción para implementar un producto de prueba de carga/evaluación comparativa?

17.1 Preguntas para hacer

¿Cuál es nuestro promedio anticipado de usuarios (carga normal)?

¿Cuál es nuestro número máximo anticipado de usuarios?

¿Cuándo es un buen momento para realizar una prueba de carga de nuestra aplicación (es decir, fuera del horario laboral o los fines de semana), teniendo en cuenta que esto puede bloquear uno o más de nuestros servidores?

¿Nuestra aplicación tiene estado? Si es así, ¿cómo lo gestiona nuestra aplicación (cookies, reescritura de sesiones o algún otro método)?

¿Qué se pretende lograr con la prueba?

17.2 Recursos

Los siguientes recursos serán muy útiles. Tenga en cuenta que si no puede localizar estos recursos, se convertirá en estos recursos. Como ya tienes mucho trabajo por delante, vale la pena saber quiénes son las siguientes personas, para que puedas pedirles ayuda si la necesitas.

17.2.1 Red

¿Quién conoce nuestra topología de red? Si se encuentra con problemas de firewall o proxy, esto será muy importante. Además, una red de prueba privada (que, por lo tanto, tendrá una latencia de red muy baja) sería algo muy bueno. Saber quién puede configurar uno para usted (si cree que esto es necesario) será muy útil. Si la aplicación no escala como se esperaba, ¿quién puede agregar hardware adicional?

17.2.2 Aplicación

¿Quién sabe cómo funciona nuestra aplicación? La secuencia normal es

  • prueba (volumen bajo: ¿podemos comparar nuestra aplicación?)
  • punto de referencia (el número medio de usuarios)
  • prueba de carga (el número máximo de usuarios)
  • probar destructivamente (¿cuál es nuestro límite estricto?)
El proceso de prueba puede pasar de una prueba de caja negra a una prueba de caja blanca (la diferencia es que la primera no requiere conocimiento de la aplicación [se trata como una "caja negra"] mientras que la segunda requiere algún conocimiento de la aplicación). No es raro descubrir problemas con la aplicación durante este proceso, así que prepárate para defender tu trabajo.

17.3 ¿Qué plataforma debo usar para ejecutar los puntos de referencia/pruebas de carga?

Debe ser una pieza de hardware ampliamente utilizada, con una instalación de software estándar (es decir, vanilla). Recuerda, si publicas tus resultados, lo primero que harán tus clientes será contratar a un estudiante de posgrado para que los verifique. Es mejor que se lo pongas lo más fácil posible a esta persona.

Para Windows, Windows XP Professional debe ser un mínimo (los otros no realizan subprocesos múltiples más allá de 50-60 conexiones, y probablemente anticipe más usuarios que eso).

Las buenas plataformas gratuitas incluyen Linux, BSD y Solaris Intel. Si tienes un poco más de dinero, hay linux comerciales. Esto puede valer la pena si necesita el apoyo.

Para plataformas que no sean de Windows, investigue " ulimit -n unlimited " con miras a incluirlo en los scripts de inicio de su cuenta de usuario (scripts .bashrc o .cshrc para la cuenta de prueba).

También tenga en cuenta que algunas ediciones de Linux/Unix están destinadas al uso del servidor. Estos generalmente tienen soporte mínimo o nulo de GUI. Dichos sistemas operativos deberían estar bien para ejecutar JMeter en modo CLI, pero el modo GUI de JMeter probablemente no funcionará a menos que instale un entorno GUI mínimo.

A medida que avance hacia pruebas comparativas/pruebas de carga a mayor escala, esta plataforma se convertirá en el factor limitante. Por lo tanto, vale la pena usar el mejor hardware y software que tenga disponible. Recuerde incluir la configuración de hardware/software en sus puntos de referencia publicados.

Cuando necesite muchas máquinas o desee probar la latencia de la red, Cloud puede ayudarlo. JMeter se puede instalar fácilmente en instancias de la nube, ya que se ejecuta en casi cualquier arquitectura disponible en la nube. JMeter también es compatible con Commercial Cloud PAAS si no desea administrarlo usted mismo.

No olvide el modo por lotes JMeter (CLI). Este modo debe usarse durante las pruebas de carga por muchas razones:

  • Si tiene un servidor potente que admite Java pero quizás no tenga una implementación de gráficos rápida, o si necesita iniciar sesión de forma remota.
  • El modo por lotes (CLI) puede reducir el tráfico de red en comparación con el uso de una pantalla remota o el modo cliente-servidor.
  • El subproceso Java AWT utilizado para el modo GUI puede alterar el comportamiento de inyección al bloquear a veces
Luego, el archivo de registro por lotes se puede cargar en JMeter en una estación de trabajo para su análisis, o puede usar la salida CSV e importar los datos a una hoja de cálculo.

Recuerde que el modo GUI es para la creación y depuración de scripts, no para pruebas de carga

17.4 Herramientas

Las siguientes herramientas serán todas útiles. Definitivamente vale la pena familiarizarse con ellos. Esto debe incluir probarlos y leer la documentación adecuada (páginas de manual, archivos de información, mensajes de ayuda de la aplicación y cualquier documentación suministrada).

17.4.1 hacer ping

Esto se puede usar para establecer si puede o no llegar a su sitio objetivo. Se pueden especificar opciones para que ' ping ' proporcione el mismo tipo de informe de ruta que ' traceroute '.

17.4.2 nslookup/dig

Si bien el usuario normalmente utilizará una dirección de Internet legible por humanos, es posible que desee evitar la sobrecarga de las búsquedas de DNS al realizar pruebas comparativas/pruebas de carga. Estos se pueden usar para determinar la dirección única (cuatro puntos) de su sitio de destino.

17.4.3 rastrear ruta

Si no puede "hacer ping " a su sitio de destino, esto puede usarse para determinar el problema (posiblemente un firewall o un proxy). También se puede usar para estimar la latencia general de la red (la ejecución local debería brindar la latencia de red más baja posible; recuerde que sus usuarios se ejecutarán en un Internet posiblemente ocupado). En general, cuantos menos saltos, mejor.

17.5 ¿Cómo puedo mejorar JMeter?

Hay muchos proveedores comerciales y de código abierto que proporcionan complementos de JMeter u otros recursos para usar con JMeter. Algunos de estos se enumeran en JMeter Wiki. Se enumeran en varias categorías:

  • JMeterPlugins - complementos para extender JMeter
  • JMeterAddons : complementos para usar con JMeter, por ejemplo, complementos para navegadores, Maven y Jenkins.
  • JMeterServices : servicios de terceros, por ejemplo, JMeter basado en la nube
Tenga en cuenta que la aparición de estos en Wiki no implica ningún respaldo por parte del proyecto Apache JMeter. Cualquier solicitud de soporte debe dirigirse al proveedor correspondiente.

17.6 ¿Por qué Java?

¿Por qué no Perl o C?

Bueno, Perl podría ser una muy buena opción, excepto que el paquete Benchmark parece dar resultados bastante confusos. Además, simular múltiples usuarios con Perl es una propuesta complicada (se pueden simular múltiples conexiones bifurcando muchos procesos desde un script de shell, pero estos no serán subprocesos, serán procesos). Sin embargo, la comunidad de Perl es muy grande. Si encuentras que alguien ya ha escrito algo que te parece útil, esta podría ser una muy buena solución.

C, por supuesto, es una muy buena opción (consulte la herramienta Apache ab ). Pero prepárese para escribir todo el código personalizado de redes, subprocesos y administración de estado que necesitará para comparar su aplicación.

Java le brinda (gratis) el código personalizado de administración de redes, subprocesos y estado que necesitará para comparar su aplicación. Java es consciente de HTTP, FTP y HTTPS, así como de RMI, IIOP y JDBC (sin mencionar las cookies, la codificación de URL y la reescritura de URL). Además, Java le brinda recolección automática de basura y seguridad a nivel de código de bytes.

Go to top