Frage

Hallo in meinem Projekt wir Hunderte von Test cases.These Testfälle sind Teil des Build-Prozesses haben die auf jeder checkin ausgelöst wird und sendet Mail an unsere Entwickler group.This Projekt ziemlich groß und ist für mehr als fünf Jahren.
Jetzt haben wir so viele Testfälle nimmt bauen mehr als eine Stunde .Einige der Testfälle sind nicht richtig strukturiert und nach ihnen Refactoring konnte ich die Laufzeit wesentlich reduzieren, aber wir haben Hunderte von Testfällen und Refactoring sie eins nach dem scheint etwas zu viel.
Jetzt laufen i einige der Testfälle (die wirklich lange dauert auszuführen) nur als Teil Nightly Build und nicht als Teil eines jeden checkin.
Ich bin gespannt, wie, wie andere Leute diese verwalten.

War es hilfreich?

Lösung

Ich glaube, es war in „Effektives Arbeiten mit Legacy Code“, dass er sagte, wenn Ihre Testsuite länger als ein paar Minuten dauert, wird es Entwickler verlangsamen zu viel und die Tests beginnen vernachlässigt zu werden. Klingt wie Sie in diese Falle fallen.

Sind Ihre Testfälle für eine Datenbank ausgeführt wird? Dann ist das wahrscheinlich Ihre wichtigste Quelle für Performance-Probleme. Als allgemeine Regel gilt, dass Testfälle immer nicht zu tun, I / O, wenn möglich. Dependency Injection ermöglicht es Ihnen, ein Datenbankobjekt mit Mock-Objekten zu ersetzen, die die Datenbank Teil des Codes simulieren. Das ermöglicht Ihnen, die Code testen , ohne sich Gedanken, ob die Datenbank richtig eingestellt ist.

Ich empfehle Effektives Arbeiten mit Legacy Code von Michael Feathers. Er beschreibt, wie viele der Kopfschmerzen zu behandeln, die Sie scheinen in zu laufen, ohne den Code auf einmal Refactoring.

UPDATE:

Eine weitere mögliche Hilfe so etwas wie NDbUnit wäre. Ich habe es nicht ausgiebig noch verwendet, aber es sieht vielversprechend aus: http://code.google.com / p / ndbunit /

Andere Tipps

Vielleicht könnten Sie halten Ihre Oracle-Datenbank betrachten, sondern es von einem RAM-Laufwerk läuft? Es wäre nicht groß sein müssen, denn es wäre nur Testdaten enthält.

Wir haben etwa 1000 Tests großer Prozentsatz die durch REST Kommunikation und schlagen Datenbank. Die Gesamtlaufzeit ca. 8 Minuten. Eine Stunde scheint übertrieben, aber ich weiß nicht, was Sie tun und wie komplex Ihre Tests sind.

Aber ich denke, es gibt einen Weg, Ihnen zu helfen. Wir verwenden Teamcity und es hat eine schöne Möglichkeit, mehrere Build-Agenten zu haben. Was Sie tun können, ist Ihr Testprojekt in Teilprojekte mit jedem Teilprojekt aufgeteilt nur eine Anzahl von Tests enthält. Sie könnten JNunit / NUnit Kategorien verwenden, um sie zu trennen. Dann würden Sie Teamcity so konfigurieren, dass jeder Agent nur eine Art von Teilprojekt bauen würde. Auf diese Weise würden Sie die parallele Ausführung von Tests erhalten. Mit wenigen Mitteln (Sie 3 kostenlos zu bekommen), sollten Sie in der Lage sein, bis zu 20 Minuten zu bekommen, die auch akzeptabel sein könnte. Wenn Sie jeden Agenten in VM setzen, könnten Sie nicht einmal zusätzliche Maschinen benötigen, brauchen Sie nur eine Menge RAM.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top