9

Me gustaría ejecutar pruebas que simulen a los usuarios modificar ciertos datos al mismo tiempo para una aplicación de grial.Cómo hacer pruebas de modificación simultáneas para la aplicación de grises

¿Hay algún complemento/herramienta/mecanismo que pueda usar para hacer esto de manera eficiente? No tienen que ser específicos de los griales. Debería ser posible disparar múltiples acciones en paralelo.

Prefiero ejecutar las pruebas en el nivel funcional (hasta ahora estoy usando Selenium para otras pruebas) para ver los resultados desde la perspectiva del usuario. Por supuesto, esto se puede hacer además de las pruebas de integración si también recomienda ejecutar pruebas de modificación concurrentes en el nivel de integración.

+0

Ejecutar JMeter parece ser una herramienta que podría utilizar, aunque quizás no sea lo ideal. – mfloryan

Respuesta

0

Creo que puede ejecutar (simplemente) varias secuencias de comandos de Selenium a la vez, o?

Probamos aquí ejecutando más de 20 scripts de iMacros al mismo tiempo, de esta manera simulando más de 20 usuarios simultáneos en nuestra aplicación web.

+0

¿Cómo los haces comenzar al mismo tiempo (supongo que en diferentes ventanas del navegador)? –

0

Una sola idea: parece difícil hacer que el cliente se inicie al mismo tiempo, pero ¿pueden esperar el uno al otro justo antes de modificar los datos?

Por ejemplo, un cliente sigue registrando su proceso: "Cliente x acceso DATA", "Client x editing DATA" en un archivo. También siguen buscando este archivo de registro para ver el progreso de otros clientes. Entonces no permita que un cliente complete la edición de un DATO hasta que otro cliente entre para editar ese DATO.

0

He encontrado Grinder para ser una herramienta excelente para la prueba de carga pesada. Ejecutar instancias múltiples que realizan las mismas pruebas al mismo tiempo a menudo puede descubrir problemas de concurrencia en su aplicación que no encontraría con las pruebas normales.

Si desea hacer esto en Pruebas unitarias o Pruebas de integración en código, siempre puede girar múltiples hilos en el código y hacer que realicen la tarea que está tratando de probar.

+0

¿Cómo se escriben casos de prueba para Grinder? ¿Puedo usar mis pruebas de selenio con eso? –

+0

Las pruebas de Grinder están escritas en Python (Grinder usa Jython, la implementación de Java de Python). Sin embargo, es mejor utilizar la herramienta proxy que proporcionan para capturar todas las solicitudes HTTP para la prueba. Entonces, como puede generar los scripts de las solicitudes utilizando el proxy, puede usar sus pruebas de selenio para crear los scripts Grinder. – 01001111

0

¿Está interesado principalmente en probar la carga de varios usuarios activos, en comparación con aquellos que solo tienen una HttpSesión? La prueba de carga sólida se basa en func realmente muy bueno. probando sin embargo. ¿Cómo se organizan y ejecutan sus pruebas funcionales hoy? Grails también tiene un complemento * para eso, y parece estar en el Top of the Pops en el portal de plug-ins.

¿Está intentando probar cómo funciona el mecanismo de bloqueo optimista bajo carga?

Si el caso de uso anterior es el que significa más, parece que puede estar buscando JUnitPerf. Aquí está el ->download

*functional-test < 1.2.7> - Pruebas funcionales

+0

Mi objetivo es comprobar los errores y el rendimiento cuando se realizan operaciones simultáneas por muchos usuarios (por ejemplo, dos usuarios que intentan modificar los mismos datos). Actualmente mis pruebas funcionales están escritas en Selenio, sería genial si pudiera reutilizarlas. –

+0

Gotcha. Revisé las Preguntas frecuentes sobre Selenium y parece que muchos recomiendan BrowserMob, que es un sitio comercial. <<< Sí, pero requiere MUCHO hardware. Le recomendamos que revise BrowserMob, que carga las pruebas con navegadores reales y funciona con Selenium. <<< http://wiki.openqa.org/display/SEL/Selenium+Core+FAQ#SeleniumCoreFAQ-IsitpossibletouseSeleniumformultiuserloadtesting%3F – mikesalera

0

WebTest está construido sobre la hormiga que proporciona la parallel task. Es posible que pueda usar esto en conjunción con el complemento Webtest para ejecutar algunas acciones en paralelo. Aunque nunca lo intenté.

0

Echa un vistazo a MultithreadedTC. Parece que se podría usar para ejercitar ciertos casos de intercalación donde varios subprocesos están ejecutando su código de formas que considera potencialmente riesgosas.

Dudo que encuentre una forma conveniente de probar casos de entrelazado multiproceso específicos con Selenium porque Selenium controla un navegador que envía solicitudes a su servidor.No he oído hablar de una forma de instrumentar el código para las pruebas de entrelazado multiproceso cuando los hilos se inician como solicitudes web reales a un servidor web en ejecución.

2

He usado Geb (http://grails.org/plugin/geb/) recientemente. Es una capa sobre WebDriver y Selenium, etc. Es muy fácil escribir un script de Grails para actuar como usuario en tu aplicación y luego ejecutar varias instancias en diferentes consolas. Geb utiliza una sintaxis de estilo jQuery para localizar la materia en el DOM que es muy fresco:

import geb.Browser 
import geb.Configuration 

includeTargets << grailsScript("_GrailsInit") 

target(main: "Do stuff as fast as possible") { 

    Configuration cfg = new Configuration(baseUrl: "http://localhost:8080/your_app/") 

    Browser.drive(cfg) { 
     go "user/login" 
     $("#login form").with { 
      email = "[email protected]" 
      password = "secret" 
      _action_Login().click() 
     } 
     ... 
    } 
} 

setDefaultTarget(main) 

Sólo hay que poner el script en los scripts/YourScript.groovy y entonces usted puede hacer "Griales YourScript" para ejecutarlo. Seguí algunos problemas de concurrencia simplemente ejecutando varios de estos a máxima velocidad. Debes construir una guerra y desplegarla correctamente ya que Grails en modo dev es muy lento y se queda sin espacio permgen bastante rápido.

Cuestiones relacionadas