¿Cuáles son los principales desafíos de las pruebas de carga?

A mi modo de ver, la prueba de carga se trata primero de la estrategia, el proceso y luego de las herramientas, por lo que respondo así.

Objetivo de la prueba de carga:

Primero determine por qué desea realizar esta prueba de carga. Es para

  1. Encuentre los límites de su infraestructura actual o
  2. Para averiguar si su infraestructura se escalará a un cierto punto (número de solicitudes por segundo)

Dependiendo de la respuesta anterior, su enfoque variará

Desafíos de las pruebas de carga.

  • Entorno para realizar pruebas de carga. ¿Realmente desea realizar una prueba de carga en su producción, si no tiene una infraestructura comparable con todas las bases de datos de piezas, servidores de aplicaciones, capas de almacenamiento en caché, equilibradores de carga, etc.? Si lo está haciendo en contra de la producción, lo está haciendo en la hora pico, ¿se caerá el sitio? Si no, ¿estás haciendo una prueba adecuada?
  • Gente: ¿tiene la combinación correcta de personas? Operaciones, db presente y disponible para comprender los resultados de la prueba de carga y combatir incendios contra las llamas que cree
  • Métricas : qué significan las solicitudes por segundo, el rendimiento, el tiempo promedio de solicitud, 499 solicitudes, los tiempos de espera.
  • Monitoreo : la herramienta de elección le muestra dónde está golpeando los cuellos de botella, ¿puede distinguir entre el tráfico generado por sus pruebas y el tráfico real?
  • Datos: ¿ puede generar tráfico a pedido que sea capaz de simular el tráfico del mundo real? Si sigue haciendo ping en la URL, puede almacenarse en caché y no verá la prueba de carga real. Pero si varía demasiado, puede llegar a casos límite que no le interesan para esta prueba
  • Almacenamiento en caché: esto me hace tropezar todo el tiempo, para nuestra empresa mediana tenemos almacenamiento en caché en 4 capas diferentes de almacenamiento en caché de db, almacenamiento en caché del servidor, memcache, caché redis, caché del cliente.
  • Tráfico de múltiples IP : un gran problema que tengo JMeter y Apache Bench es que todo el tráfico es generado por la máquina de desarrollo. No es realmente sincrónico y está limitado por la cantidad de procesadores en esa máquina.
  • Tráfico desde varias ubicaciones geográficas : el mismo problema que el anterior, la herramienta que utilizamos crea solicitudes desde cinco ubicaciones geográficas
  • Patrones de carga: dependiendo de su objetivo, es posible que desee verificar si su servicio se mantiene durante un largo período de tiempo al mismo tiempo de respuesta o ráfagas de tráfico.

Herramientas

Solo tengo un par de herramientas aquí es donde se encuentran en los términos anteriores

Apache Bench / JMeter: los agruparon porque ambos parecían bastante similares, son herramientas de línea de comandos capaces de hacer una serie de solicitudes paralelas. Para variar los datos, utiliza sus propios scripts personalizados, no puede crear carga desde múltiples direcciones IP o ubicaciones geográficas. No recuerdo ahora, pero creo que también puede variar los patrones de carga. Para las métricas, estás solo.

Blitz.io: esta es la herramienta que estamos utilizando y con la que estamos moderadamente satisfechos. Blitz puede variar los datos en función de las variables, proporciona métricas. También puede simular el tráfico desde 5 ubicaciones geográficas (centros de datos de AWS) y, lo mejor de todo, puede simular varios patrones de carga como rampa y retención, dientes de tiburón, etc. Además, tienen una gema de rubí.

Satyajit hace un excelente punto que a menudo se pasa por alto: definir el proceso y la estrategia correctos es tan importante (si no más) que seleccionar la herramienta correcta. La definición de los requisitos adecuados debería ser una parte obligatoria de la conversación (y, lamentablemente, con demasiada frecuencia no lo es). Para aquellos que son nuevos en esta idea, sugiero leer este artículo que escribí hace algún tiempo; analiza algunas ideas estratégicas sobre cómo abordar un proyecto de prueba de carga: http://www.neotys.com/blog/good-
Cuando llegue el momento de seleccionar una herramienta, sugeriría que los lectores también tomen un tiempo para mirar nuestra solución, NeoLoad.

No solo es la solución más fácil de usar, sino que su capacidad para escalar a enormes niveles de concurrencia, para admitir TODAS las tecnologías web, así como su capacidad para admitir las pruebas para aplicaciones móviles, es una opción que todas las organizaciones deberían considerar.

Recomiendo echar un vistazo a nuestra prueba gratuita de 30 días:
http://www.neotys.com/performanc

Steve Weisfeldt, Sr Ingeniero de rendimiento, Neotys USA

Uno de los principales problemas sobre los que han escrito algunos de los usuarios reales de la estación central de TI es en términos de las pruebas de carga. Un revisor reciente de HP StormRunner escribe que “StormRunner Load espera los scripts de LoadRunner que se generan a partir de LR 12.00 y superiores. No se admiten los scripts desarrollados con las versiones anteriores. La solución para superar este problema es abrir los scripts en LR 12.00 o superior y guárdelo nuevamente antes de cargarlo en StormRunner Load “. Puede leer su revisión completa y otras que discuten los desafíos de las secuencias de comandos y cómo sus herramientas responden a estos desafíos: Revisión de la carga de HP StormRunner por un usuario real

Curiosamente, otro usuario escribe que “los clientes deben comprender la cantidad de tiempo que lleva crear un script: el beneficio de StormRunner en comparación con otras herramientas de prueba de carga basadas en la nube es la facilidad de los scripts. Los usuarios finales deben comprender el impacto del tiempo que lleva para crear scripts “. Lea la reseña completa aquí: Revisión de HP StormRunner

El enfoque de entrega continua presenta un gran desafío para el desarrollo. Las nuevas características se están implementando con mayor velocidad, lo que hace que sea cada vez más vital encontrar la mejor manera de realizar pruebas de carga en esta nueva era. Se están probando muchos enfoques diferentes y aún no ha surgido un proceso uniforme. Una cosa que parece clara es que todas las partes rutinarias de las pruebas de carga deben automatizarse para que las pruebas de carga sean una parte estándar del flujo de trabajo.

Creo que las actualizaciones de software deben probarse correctamente antes de enviarse a producción. Dado que incluso un pequeño cambio en la aplicación puede dañar seriamente el rendimiento, creo que se deben tomar todas las precauciones antes de la producción. Aunque hay otras opiniones en todo el mundo de TI.

Otro desafío que enfrentan las pruebas de carga es el aumento de la escala de los sistemas. Una forma de abordarlo puede ser la prueba de carga constante del entorno de producción. Hay organizaciones que se enfrentan a este desafío principalmente monitoreando de cerca las tendencias en el entorno de producción para detectar irregularidades. Si bien el monitoreo cercano es realmente vital, creo que no elimina la necesidad de realizar pruebas de carga periódicas.

Realizar pruebas de carga periódicas en un entorno de producción en funcionamiento no es una tarea fácil. Esto implica ejecutar la prueba mientras los usuarios usan el producto en tiempo real, lo que significa que cualquier cambio en el entorno de producción puede afectar la experiencia del usuario. Si la prueba también requiere escrituras, esto implicaría separar sus escrituras de prueba de la corriente constante de escrituras de los usuarios. Se vuelve aún más complejo si surge la necesidad de probar flujos de trabajo elaborados con múltiples pasos. Las formas de superar este desafío deben adaptarse a cada situación específica.
@http: //www.softwaretesting-certi…

Si es nuevo en las pruebas de carga / rendimiento, puede que le resulte útil:

“Manual de pruebas de rendimiento”

Cubre varios temas / desafíos / problemas en torno a las pruebas de rendimiento / pruebas de carga.

Aunque está en nuestro sitio corporativo de Borland, el artículo es neutral con respecto a los productos usados.

Generando suficiente carga para probar la aplicación y asegurándose de que otras partes de la infraestructura no interfieran con sus resultados. Por ejemplo, un servidor web que escribí en los años 90 no pudo realizar una prueba de carga completa porque la capacidad de la red física se alcanzó antes que el programa bajo prueba.