2008-08-11 14 views
8

Bei meiner Arbeit führen wir eine Gruppe von Tests durch, die aus etwa 3.000 separaten Testfällen bestehen. Zuvor hatten wir diese gesamte Testsuite auf einer Maschine ausgeführt, was ungefähr 24-72 Stunden dauerte, um den gesamten Testlauf abzuschließen. Wir haben jetzt ein eigenes System zum Gruppieren und Verteilen der Tests auf ungefähr drei getrennten Maschinen geschaffen, und die Tests werden priorisiert, so dass die Kerntests zuerst für unmittelbarere Ergebnisse ausgeführt werden und die zusätzlichen Tests ausgeführt werden, wenn eine verfügbare Maschine vorhanden ist.Testverteilung

Ich bin neugierig, ob jemand eine gute Möglichkeit gefunden hat, seine Tests auf mehrere Maschinen zu verteilen, um die gesamte Testzeit für einen vollständigen Lauf zu reduzieren und welche Werkzeuge wurden verwendet, um dies zu erreichen. Ich habe einige Nachforschungen angestellt und es sieht so aus als ob TestNG moving in this direction ist, aber es sieht so aus, als wäre es noch ziemlich weit entwickelt.

Wir planen nicht, einen unserer Tests neu zu schreiben, aber wenn wir neue Tests hinzufügen und neue Produkte oder Add-Ons testen, würde ich gerne mit der Tatsache umgehen können, dass wir mit sehr großen Zahlen arbeiten von Tests. Auf der anderen Seite, wenn wir ein Werkzeug finden, das helfen würde, unsere Junit 3.x Tests sogar in einer sehr einfachen Art und Weise zu verteilen, wäre hilfreich, da wir unsere eigenen Werkzeuge dafür nicht beibehalten müssten.

Antwort

2

Ich habe einige Leute gesehen, die ein Spiel mit distributed JUnit haben. Ich kann nicht besonders dafür bürgen, wie effektiv es ist, aber die anderen Teams, die ich gesehen habe, schienen zu denken, dass es einfach genug war. Ich hoffe, das hilft.

1

Unsere Leute bauen Mozilla Tinderbox. Es scheint einige Haken für verteilte Tests zu haben. Es tut mir leid, dass ich die Details nicht kenne, aber ich dachte, ich würde wenigstens den Zeiger an dich weitergeben.

Es ist auch schön coz Sie können sofort herausfinden, wenn ein Build bricht, und was Checkin könnte der Schuldige gewesen sein.

http://www.mozilla.org/tinderbox.html

1

Es gibt auch parallel-junit. Je nachdem, wie Sie Ihre Tests derzeit ausführen, kann sich die Benutzerfreundlichkeit unterscheiden - die Idee besteht lediglich darin, Multithread auf einem einzelnen System mit mehreren Kernen durchzuführen. Ich habe kurz damit gespielt, aber es ist eine Veränderung gegenüber dem, wie wir unsere Tests derzeit durchführen.

Hudson, die Continuous Integration Engine, die ich verwende, hat auch einige Möglichkeiten, Testlauf zu verteilen (getrennte Jobs aggregierte Ergebnisse in einem).