Automatische Softwaretests mit .NET

SixDark

Erfahrenes Mitglied
Hi @all!

Ich habe mal eine Frage zu automatischen Softwaretests mit DOTNET. Ich blick in der Materie noch nicht so ganz durch...
Und zwar setzen wir zum größten Teil schon VS2005 ein (nur noch ein paar restliche 2003er). Dieses hat ja schon Vorlagen für Tests dabei.
Bisher habe ich ein wenig mit NUNIT / Testdriven.NET experimentiert. Nun möchte ich gern einen "Test-Server" aufbauen, den ich so konfigurieren kann, dass er aus dem VisualSourceSafe den Code nimmt, ihn compiliert und dann automatisch vorprogrammierte Tests aufruft.

Jetzt meine Frage(n): Gibt es einen solchen Server (wenn möglich preisgünstig) bzw. welchen würdet Ihr empfehlen?
Ich hab im Web "CruiseControl" gefunden. Ich hab nur noch nicht ganz durchschaut, ob dieses System das kann, was ich möchte. Die Dokumentation ist (zumindest für mich) etwas spärlich...

Ich hoffe jemand von Euch kann mir helfen.

MfG ..::SD::..
 
Hier gibt es mehrere Möglichkeiten, die natürlich auch von deiner finanziellen Lage abhängig sind.

Zusammen mit Visual Studio 2005 kannst du natürlich auch das Team System verwenden, welches Testing und Auswert-Funktionalitäten dabei hat.

Die Low-Cost-Variante ist natürlich TestDriven.NET in Verbindung mit NUnit. Für nightly builds kannst du dann noch CC.NET (CruiseControl) verwenden. Dadurch kannst du komplett automatisiert deine Builds, Tests etc. laufen lassen und bekommst eine wunderschöne Statistik, welche auch "manager-tauglich" angezeigt werden kann. NAnt wirst du dir dabei jedoch noch reinziehen müssen, aber das stellt ansich kein Problem dar.

Wenn du noch ein Versionierungssystem dazunimmst (Subversion würde sich anbieten), dann hast du eine fast perfekt Umgebung :)

PS: Wenns dich interessiert: zu diesem Thema gibt es von mir in der aktuellen Ausgabe der Visual Studio One einen Artikel.
 
Hallo Norbert!

Vielen Dank für Deine Antwort. Jetzt bin ich der Sache schon etwas näher! Genauso hatte ich mir das vorgestellt:

TestDriven.NET + NUnit + CruiseControl = tolles System für overnight builds und autom. Tests

MS VS.NET Team System (und ähnliche Versionen) scheiden aus wegen des finanziellen Bedarfs. Es kann zwar sein, dass meien Firma das irgendwann so haben möchte, glaube ich aber kaum, da ich derjenige bin, der ein solches Testsystem einführen soll. Und die lassen mir dabei völlig freie Hand - eben halt nur die Voraussetzungen wie oben beschrieben. Und für die Versionierung sollte eigentlich Visual SourceSafe bestehen bleiben...

Gut, bleibt noch die Frage inwieweit NAnt in Verbindung mit CC / Testdriven.NET / NUnit steht? Brauch ich das wirklich zwingend? Irgendwie lese ich bei CC heraus, dass das wohl mit NAnt als Builder zusammenarbeitet... Hach ist das verwirrend!
Also benötige ich NAnt (welches mir mein Projekt automatisch baut), TestDriven.NET & NUnit (um meine Tests zu schreiben) und zum Schluss noch CruiseControl (welches mir eine Auswertung gibt). Aber welchem dieser Tools (ich nehme mal an CC) muss ich denn mitteilen, welche Testklassen er nach dem Build ausführen soll? Denn das Bauen der Anwendung allein reicht ja noch nicht. Es werden ja Testklassen geschrieben, die Anwendungsklassen aufrufen und "nachschauen" ob das Ergebnis, welches sie zurückliefern, das erwartete ist oder nicht.

Bin etwas schlauer, aber noch verwirrt genug...

MfG ..::SD::..
 
Mit NAnt definierst du eigentlich nur den Ablauf, der durchgeführt werden soll.

1) Builden
2) Testen
3) FxCop drüber laufen lassen
4) Deployen

Was auch immer.

Welche Klassen zu testen sind, werden über einzelne Attribute direkt in den Testklassen gesteutert. Aufgrund derer weiß NUnit was zu testen ist.
 
Hallo nochmal!

Welche Klassen zu testen sind, werden über einzelne Attribute direkt in den Testklassen gesteutert. Aufgrund derer weiß NUnit was zu testen ist.

Du meinst damit die Klassen, welche mit "[TestFixture]" (bzw. die jeweiligen Methoden mit "[Test]") markiert sind?! Testet die NUnit dann automatisch selbst, wenn ich diese Klassen damit markiere? D.h. also, meine programmierte Testklasse, welche wiederum eine existierende Anwendungsklasse aufruft und deren Ergebnis erwartet, wird dann automatisch nach dem Builden ausgeführt, wenn ich das so konfiguriere? Denn das wäre genau das was ich brauche...

Das wäre dann eigentlich auch erstmal alles was ich wissen wollte! Vielen Dank schonmal für die kompetenten und superschnellen Antworten!
Zwei Fragen noch: Hast Du das System evtl. selber im Einsatz? Oder nutzt Du andere Tools?

MfG ..::SD::..
 
Genau. Du hast es erfasst. Dadurch markierst du Klassen bzw. Methoden, welche im Test ausgeführt werden soll. Es gibt dann noch (unter anderem) [Setup]. Damit markierst du eine Methode, die als erstes innerhalb einer Klasse ausgeführt werden soll. Dies macht dann Sinn, wenn du zum Beispiel Initialisierungen vornehmen musst etc.

Privat habe ich Subversion, NUnit, NAnt/MSBuild und TestDriven.NET im Einsatz. CC.NET nicht, da ich keine nightly builds benötige. Natürlich auch noch andere Tools, aber die sind nicht in einem Workflow geschalten.
 
Vielen vielen Dank Norbert! Du hast mir sehr geholfen.

Viele Grüße und ein schönes Wochenende!

..::SD::..
 
Zurück