10 Stimmen

Framework oder Werkzeug für "verteilte Einheitstests"?

Gibt es ein Tool oder Framework, das das Testen von verteilter Software, die in Java geschrieben wurde, erleichtert? Bei meinem zu testenden System handelt es sich um eine Peer-to-Peer-Software, und ich würde die Tests gerne mit etwas wie PNUnit , aber mit Java statt .Net.

Das zu testende System ist ein Framework, das ich für die Entwicklung von P2P-Anwendungen entwickle. Es verwendet JXTA als untergeordnetes Teilsystem, um die Komplexität des Systems zu verbergen. Es ist derzeit ein akademisches Projekt, so dass ich in diesem Moment die Einfachheit verfolge.

In meinem Test möchte ich demonstrieren, dass ein Peer (der in seinem eigenen Prozess läuft, möglicherweise mit mehreren Threads) einen anderen Peer (der in einem anderen Prozess oder sogar auf einem anderen Rechner läuft) finden kann und dass sie einige Nachrichten austauschen können. Ich verwende weder Mocks noch Stubs, weil ich beide Seiten gleichzeitig arbeiten sehen muss. Mir ist klar, dass eine Art von Koordinationsmechanismus erforderlich ist, und PNUnit scheint dazu in der Lage zu sein.

Ich bin auf einige Initiativen gestoßen wie Fische das "darauf abzielt, eine verteilte Testumgebung bereitzustellen, die JUnit erweitert und dem Entwickler/Tester die Möglichkeit gibt, entfernte JUnits auszuführen und komplexe Testsuiten zu erstellen, die aus mehreren parallel oder seriell laufenden entfernten JUnit-Tests bestehen", aber dieses Projekt und einige andere, die ich gefunden habe, scheinen schon lange tot zu sein.

9 Stimmen

Ähm ... Ich würde das nicht Einheitstest nennen. Ich würde es als System- oder Integrationstest bezeichnen, entweder als Funktionstest oder als Leistungs-/Lasttest.

0 Stimmen

Ja, ich neige dazu, Ihnen zuzustimmen, Stephen. In meinem Fall handelt es sich nicht um Leistungstests (Last- oder Stresstests), denn der Test soll zeigen, dass die Teile des Systems wie geplant funktionieren. Zum Beispiel sollte jede Komponente in der Lage sein, andere zu erkennen, Nachrichten zu senden und zu beantworten usw. Daher würde ich sagen, dass dies eher ein funktionaler Test oder sogar ein kleiner Integrationstest ist, da er sich auf einige wenige Interaktionen zwischen zwei Peers konzentriert. Bitte lesen Sie die erweiterte Beschreibung oben für weitere Details über die Software und vielen Dank für Ihre Aufmerksamkeit.

2voto

Lars Tackmann Punkte 19195

Das Testen von verteilter Software hängt stark davon ab, um welche Art von Software es sich handelt; für eine vollständige Antwort muss ich also wissen, was Ihre Software tut. Wenn ich mir jedoch PNUnit ansehe, scheint es, als ob das meiste, was es tut, die Synchronisierung, Anordnung und parallele Ausführung von Tests ermöglicht. TestNG unterstützt dies ebenfalls, zum Beispiel können Sie das tun:

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

die die Funktion aufrufen wird testServer zehnmal in drei verschiedenen Threads. Das Änderungsprotokoll von TestNG 4.5 weist auch auf die Möglichkeit hin, Remote-Tests auszuführen, weitere Informationen finden Sie unter ce Blogbeitrag.

Alternativ können Sie auch IBMs ConTest Software zum Testen von paralleler und verteilter Software (es gibt eine gute Beschreibung, wie man sie benutzt aquí ). Ich habe es mit großem Erfolg eingesetzt, um Fehler in meinen nebenläufigen Anwendungen aufzudecken.

0 Stimmen

Lars, vielen Dank für deine Aufmerksamkeit. Ich habe die Beschreibung der Software ergänzt. Bitte lassen Sie mich wissen, wenn Sie zusätzliche Details benötigen, um es besser zu verstehen. In diesem speziellen Fall denke ich, dass PNUnit meine Anforderungen eher erfüllt als TestNG (leider möchte ich nicht mit einer anderen Plattform als Java arbeiten, also kommt PNUnit für mich nicht in Frage), aber die Wahrheit ist, dass ich TestNG nicht so gut kenne wie JUnit. Ich werde mich weiter damit beschäftigen, aber ich fürchte, ich befinde mich hier in einer Sackgasse...

0voto

marcocast Punkte 401

Nun, es gibt einen Weg, der sehr einfach ist und kein neues Framework erfordert. Sie können die Protokolle, die von den Anwendungen in Ihrer verteilten Umgebung erzeugt werden, mit grep4j testen. Werfen Sie einen Blick darauf aquí y aquí für weitere Informationen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X