Einheitentests im Produktionsfreigabecode? [geschlossen]

8

Ein paar Fragen:

1.) Geben Sie den Testfreigabecode ein?

2.) Wenn ja, belassen Sie diese Komponententests dann intakt, damit die Tests selbst in der Produktionsumgebung existieren?

Ich sehe den Wert in # 1, aber ist es eine "gute Methode", Abhängigkeiten in der Produktion beispielsweise zu den NUnit-Assemblies zu erstellen?

Gib mir deine Gedanken.

    
Scott Marlowe 14.08.2009, 16:26
quelle

5 Antworten

14
  1. Absolut. Wenn unser Build die Einheitentestsuite besteht, ist es markiert und ein Kandidat für die Produktion
  2. Nein. Bereitstellungen enthalten weder Tests noch unterstützende Bibliotheken (z. B. Komponententestbibliotheken, Mocking etc.)

Das obige ist meine allgemeine Regel (ich stelle normalerweise nichttechnische Benutzer bereit). Jedoch habe ich eine Ausnahme, die ein Programmiertool ist, das mit ~ 130 Testskripten Unit-getestet wird. Da die Testskripts zum Beispiel doppelt vorhanden sind, stelle ich diese zusammen mit der Produktionsversion bereit und erweitere damit die vorhandene Dokumentation.

Die Bereitstellung von Tests mit Open-Source-Code lohnt sich auf jeden Fall. Es ermöglicht Benutzern, mit Patches zu spielen, sie zu modifizieren und zu senden, während sie in der Lage sind, die erfolgreich bestandenen Tests auszuführen, damit das ursprüngliche Artefakt freigegeben werden kann.

    
Brian Agnew 14.08.2009, 16:34
quelle
7

Ja und Ja, das Anwendungsverhalten kann zwischen Release- und Debug-Builds unterschiedlich sein. Daher muss der Release-Build als Teil des Release-Prozesses alle Unit-Tests bestehen.

    
Bob 14.08.2009 16:30
quelle
2
  1. Ja natürlich! Komponententests werden für alle Buildkonfigurationen ausgeführt.

  2. Komponententests sind immer intakt, aber das bedeutet nicht, dass ausgelieferte Assemblies von Tests abhängig sind. Tests werden immer in einer parallelen Assembly (in derselben Build-Umgebung) geschrieben, die dann die Produktionsassembly testet. Die parallele Baugruppe wird nicht ausgeliefert, da sie nur die Tests enthält.

morechilli 14.08.2009 16:36
quelle
2
  1. Ja, erinnern Sie sich an den klassischen Fehler "Assert mit Nebenwirkungen", der ebenfalls erfasst werden muss. Aber dieser muss nicht so oft gemacht werden wie der Debug-Build, wo jeden Tag ein kompletter Test gemacht werden sollte.
  2. Typische Komponententests befinden sich in verschiedenen Übersetzungseinheiten und in einem anderen Projekt, so dass ein Release-Build des Hauptprojekts sie überhaupt nicht berührt. Wenn sich Ihre Komponententests jedoch in denselben Übersetzungseinheiten wie der getestete Code befinden, können Sie die bedingte Kompilierung verwenden, um sie von den Releases auszuschließen.
Ozan 16.08.2009 00:00
quelle
1

Hängt vom Projekt ab. Ja zu Nummer 1. Nach dem Grundsatz, dass alles in die Quellcodeverwaltung eingecheckt werden sollte und es einfach sein sollte, einen neuen Entwickler in Gang zu bringen. Machen Sie sie Teil der Codebasis. Neue Leute können einen Check-out durchführen und die Tests durchführen.

Ob sie in der Produktion eingesetzt werden, ist ein anderes Problem. Ich habe nicht an einem Projekt gearbeitet, das sie dort gebraucht hat. Das Bereitstellungsmodell von Rails ist (im Allgemeinen) einfach ein Check-out des gesamten Projekts auf einer Produktionsmaschine, also ja, sie sind da. Java / Maven-Projekte haben einen ganzen Build / Packaging-Schritt, und im Allgemeinen können Komponententests beim Erstellen der endgültigen WAR-Datei entfernt und entfernt werden.

In jedem Fall erwarten Sie nicht, dass sie laufen. In der heutigen Umgebung spielt es keine Rolle, ob sie sich dort befinden - Speicher und Festplatten sind so billig, dass es wirklich kein Problem ist. Ich habe das Argument gehört, dass Sie den Testcode nicht auf dem Produktionsserver haben wollen, so dass kein Risiko besteht, dass er ausgeführt wird, aber ich habe noch nie von einem Szenario gehört, in dem dies wirklich passieren würde.

    
ndp 21.08.2009 16:55
quelle