2010-04-20 11 views
10

¿Hay alguna herramienta o marco capaz de facilitar la prueba del software distribuido escrito en Java? Mi sistema bajo prueba es un software peer-to-peer, y me gustaría realizar pruebas usando algo como PNUnit, pero con Java en lugar de .Net.¿Marco o herramienta para "pruebas de unidades distribuidas"?

El sistema bajo prueba es un framework que estoy desarrollando para construir aplicaciones P2P. Utiliza JXTA como un subsistema inferior, tratando de ocultar algunas complejidades del mismo. Actualmente es un proyecto académico, por lo que estoy buscando la simplicidad en este momento.

En mi prueba, quiero demostrar que un igual (ejecutándose en su propio proceso, posiblemente con varios subprocesos) puede descubrir otro (ejecutándose en otro proceso o incluso en otra máquina) y que pueden intercambiar algunos mensajes. No estoy usando burlas ni trozos porque necesito ver que ambos lados trabajen simultáneamente. Me doy cuenta de que se necesita algún tipo de mecanismo de coordinación, y PNUnit parece ser capaz de hacer eso.

Me he topado con algunas iniciativas como Pisces, que "tiene como objetivo proporcionar un entorno de pruebas distribuidas que amplíe JUnit, brindando al desarrollador/tester la capacidad de ejecutar JUnits remotos y crear complejas suites de prueba compuestas por varios JUnit remotos pruebas que se ejecutan en paralelo o en serie ", pero este proyecto y algunos otros que he encontrado parecen haber muerto hace mucho tiempo.

+9

Umm ... No llamaría a esa unidad de prueba. Lo llamaría sistema o pruebas de integración de la prueba funcional o la variedad de rendimiento/prueba de carga. –

+0

Sí, tiendo a estar de acuerdo contigo, Stephen. En mi caso, esto no es prueba de rendimiento (carga, estrés, lo que sea) porque la intención de la prueba es mostrar que las piezas del sistema funcionan como estaba previsto. Por ejemplo, cada componente debería ser capaz de descubrir a otros, enviar y responder mensajes, etc. Por lo tanto, diría que esto es más una prueba funcional o incluso una prueba de integración pequeña porque se centra en algunas interacciones que involucran a un par de compañeros . Por favor, vea la descripción aumentada arriba para más detalles sobre el software, y gracias por su atención. – msugar

Respuesta

2

Probar el software distribuido depende en gran medida del tipo de software que sea, de modo que para una respuesta completa necesitaré saber qué hace su software. Sin embargo, al mirar a PNUnit, parece que la mayor parte de lo que hace es permitir la sincronización, el orden y la ejecución paralela de las pruebas. TestNG también es compatible con esto, por ejemplo, se puede hacer:

@Test(threadPoolSize = 3, invocationCount = 10, timeOut = 10000) 
public void testServer() { 
    : 
} 

que invocará la función TESTSERVER diez veces de tres hilos diferentes. El registro de cambios de TestNG 4.5 también sugiere la posibilidad de ejecutar pruebas remotas. Se puede obtener más información en la publicación del blog this.

Como alternativa, puede consultar el software ConTest de IBM para probar software paralelo y distribuido (hay una excelente descripción de cómo usarlo here). He tenido un gran éxito utilizándolo para exponer errores en mis aplicaciones concurrentes.

+0

Lars, muchas gracias por su atención. He aumentado la descripción sobre el software. Por favor, avíseme si necesita detalles adicionales para resolverlo mejor. En este caso particular, creo que PNUnit está más cerca de satisfacer mis requisitos que TestNG (desafortunadamente, no quiero trabajar con otra plataforma además de Java, así que PNUnit está fuera de duda para mí), pero la verdad es que no lo hago. conozca TestNG y JUnit. Le prestaré más atención, pero me temo que estoy en un callejón sin salida aquí ... – msugar

0

Bueno, hay una manera que es muy simple y no requiere aprender ningún nuevo marco. Puede probar los registros producidos por las aplicaciones en su entorno distribuido utilizando grep4j. Eche un vistazo a here y here para obtener más información.

Cuestiones relacionadas