it-swarm-es.com

Metodología de prueba de carga para un caché

Actualmente estoy escribiendo una prueba de carga para un caché que debe probar cómo reaccionará un caché a las solicitudes persistentes. Un colega y yo tuvimos opiniones diferentes sobre cómo se debe realizar esta prueba de carga.

Creo que una prueba de carga debe ser lo más aleatoria posible. Debe modelar la carga del mundo real tanto como sea posible, y el camino hacia el aleatoría. Así que he creado esta prueba aleatoria de la siguiente manera:

  • Los datos de prueba se mantienen en hojas de cálculo y se cargan en los objetos de TestRunner al inicio
    • Los datos de prueba son no aleatorio
  • La prueba de carga ejecutará 10 testrunners aleatorios en hilos individuales al mismo tiempo
  • El objeto devuelto por el caché se probará para asegurarse de que sea sensible, no se prueba a fondo
    • Cualquier prueba que falle se emita al final y cada prueba tiene una identificación única para encontrar fácilmente las pruebas fallidas
  • En intervalos aleatorios, la memoria caché se borrará para modelar el requisito del mundo real del caché que se elimina en cualquier momento.
  • La prueba de carga se ejecutará para una cantidad de tiempo configurable

La idea de mi colega de lo que debe hacer una prueba de carga es:

  • Los datos de prueba se mantienen en hojas de cálculo y se cargan en los objetos de TestRunner al inicio
  • Todos los objetos de TestRunner se ejecutan de una manera secuencial
  • Cada vez que se ejecuta la prueba de carga, ejecutará los objetos TestRunner en el mismo orden

¿Qué metodología siente que produciría la prueba de carga más confiable?

Personalmente, creo que la prueba aleatoria producirá una prueba de carga más confiable, ya que modelará el uso del mundo real. No se sabe qué solicitudes de pedidos entrarán cuando esto se libera a la producción, por lo que debe probarse con ese elemento desconocido que se tenga en cuenta. Sin embargo, ejecutar todas las pruebas en la misma secuencia, cada vez hará que cualquier falla sea reproducible, lo que es importante durante las pruebas.

6
Richard

¿Tiene una manera de restablecer los datos una vez que se ejecuta la prueba (si esto es incluso necesaria)?

Si es así, ¿qué pasa con la ejecución de la prueba no aleatoria primero: busca fallas cuando se ejecute de esa manera (y posibles anomalías causadas por los datos en sí)? Luego, después de restablecer (si es necesario), ejecute las pruebas aleatorias para reflejar la carga del mundo real.

3
codeyoung

Las pruebas de hilo múltiple son un dolor. Puede simular un escenario del mundo real, pero solo le dirá que 'hay un problema'. No podrá reproducir la ejecución de la prueba y, la mayoría de las veces, esto significa que no podrá encontrar el error.

El modelo de ejecución aleatorio revelará errores extraños que no surgen en el uso normal, de lo contrario, usted sabría sobre ellos solo por "jugar" con el producto. Es por eso que la posibilidad de reproducir el mismo error con otra carrera aleatoria es muy pequeña (a menos que tenga tiempo infinito :)).

0
Victor Hurdugaci