2008-09-18 18 views
14

¿Alguien ha encontrado una manera de ejecutar las pruebas Selenium RC/Selenium Grid, escritas en C# en paralelo?¿Alguien ha encontrado una forma de ejecutar las pruebas de C# Selenium RC en paralelo?

Actualmente tengo un conjunto de pruebas considerable escritas utilizando el controlador C# de Selenium RC. Ejecutar todo el conjunto de pruebas toma un poco más de una hora en completarse. Normalmente no tengo que ejecutar todo el paquete, así que no ha sido una preocupación hasta ahora, pero es algo que me gustaría poder hacer más regularmente (es decir, como parte de una compilación automática)

Hace poco estuve hurgando en el proyecto Selenium Grid, cuyo objetivo principal es permitir que esas pruebas se ejecuten en paralelo. Desafortunadamente, parece que el plugin TestDriven.net que estoy usando ejecuta las pruebas en serie (es decir, una después de otra). Supongo que NUnit ejecutará las pruebas de manera similar, aunque en realidad no lo he probado.

Me he dado cuenta de que las betas NUnit 2.5 están empezando a hablar sobre ejecutar pruebas en paralelo con pNUnit, pero no me he familiarizado lo suficiente con el proyecto para saber con certeza si esto funcionaría.

Otra opción que estoy considerando es separar mi banco de pruebas en diferentes bibliotecas que me permitirían ejecutar una prueba de cada biblioteca al mismo tiempo, pero me gustaría evitar eso si es posible ya que no estoy seguro de que esto sea válido razón para dividir el conjunto de pruebas.

Respuesta

0

no sé si no hay recuento de respuesta como una respuesta, pero yo diría que usted ha investigado todo y que realmente le ocurrió el 2 soluciones posibles ...

  • del conjunto de pruebas lleva a cabo pruebas en paralelo
  • Dividir el conjunto de pruebas hasta

estoy en una pérdida para cualquier otra cosa.

1

Escribí PNUnit como una extensión para NUnit hace casi tres años y me complace ver que finalmente se integró en NUnit.

Lo usamos a diario para probar nuestro software en diferentes distros y combinaciones. Solo para dar un ejemplo: tenemos un conjunto de pruebas pesadas (largas) con aproximadamente 210 pruebas. Cada uno de ellos configura un servidor y ejecuta un cliente en línea de comandos ejecutando varias operaciones (hasta 210 escenarios).

Bueno, usamos la misma suite para ejecutar las pruebas en diferentes combinaciones de Linux y variaciones de Windows, y también combinaciones como un servidor de Windows con un cliente Linux, Windows XP, Vista, luego controlador de dominio, fuera de dominio y pronto. Usamos los mismos binarios y luego simplemente lanzamos "agentes" en varias cajas.

Usamos la misma plataforma para: equilibrar la carga de prueba de carga -> Quiero decir, correr en trozos más rápido. Ejecutar varias combinaciones al mismo tiempo, y lo que creo que es más interesante: definir escenarios de múltiples clientes: dos clientes esperan que el servidor se inicie, luego inician operaciones, se sincronizan entre sí y así sucesivamente. También usamos PNUnit para pruebas de carga (cientos de cajas contra un solo servidor).

Por lo tanto, si tiene alguna pregunta sobre cómo configurarlo (lo que no es sencillo todavía, me temo), no dude en preguntar.

También escribí un artículo hace mucho tiempo en ello en DDJ: http://www.ddj.com/architect/193104810

creo que sirve

5

estoy trabajando en esto mismo y han encontrado pruebas Gallio última puede conducir MbUnit en paralelo. Puede conducirlos contra un solo concentrador Selenium Grid, que puede tener varios servidores de control remoto escuchando.

Estoy usando el latest nightly from Gallio para obtener el ParallelizableAttribute y el DegreeOfParallelismAttribute.

Algo que he notado es que no puedo confiar en TestSet y TestTeardown se han aislado las pruebas paralelas. Que necesita la prueba a ser algo como esto:

[Test] public void Foo(){ 
    var s = new DefaultSelenium("http://grid", 4444, "*firefox", 
           "http://server-under-test"); 
    s.Start(); 
    s.Open("mypage.aspx"); 
    // Continue 
    s.Stop(); 

} 

Usando el atributo [SetUp] para iniciar la sesión de selenio estaba causando las pruebas de no conseguir la sesión remota desde s.Start().

+0

Gracias por su respuesta. Por el momento me he alejado de este proyecto, pero cuando regrese, ¡le daré una oportunidad a su solución! –

Cuestiones relacionadas