Testing, testing, 123 …


Thomas Wölfer
Thomas Wölfer

14. Februar 2011


Die Baustatik hat einen monatlichen Update-Zyklus. Das bedeutet: Zum Anfang jeden Monats gibt es eine neue Version, die man herunterladen und installieren kann, so man das will. (Im Download-Bereich gibt es dazu jeweils eine ausführliche Liste, welche neuen Funktionen enthalten sind, und hier in meinem Blog gehe ich auch meist auf die “aufwendigeren” ein.)

Das bedeutet natürlich auch, das das Programm ständigen Veränderungen unterworfen ist. Eines der größten Probleme in diesem Zusammenhang – wenn nicht das größte – ist es, dabei sicherzustellen, das solche Änderungen keine Fehler – und zwar im besonderen keine Berechnungsfehler – ins Programm einschleppen.

Um das sicherzustellen, haben wir einen vollständig automatisch ablaufenden Prozess gebaut, und der sieht in etwa so aus:

  • Zunächst man gibt es einen speziellen eigenständigen Server, der ausschließlich fürs bauen und testen der Baustatik zuständig ist.
  • Dieser Server holt sich jede Nacht den aktuellen Stand des Quellcodes der Baustatik, und baut damit eine “nächtliche” Version des Programms.
  • Diese Programmversion wird dann automatisch gestartet und lädt der Reihe nach Eingabedateien (die wir in diesem Fall “Testcases” nennen.).
  • Dabei handelt es sich um ganz normale Baustatik-Dokumente, für jeden Dokument-Typ gibt es dabei eigene – zur Zeit knapp 1400 Stück.
  • Jedes dieser Dokumente wird dann geladen, und es werden alle Ergebnisse die mit dem Dokument ermittelbar sind berechnet. (Also alle Einzellastfälle, Überlagerungen, Bemessungen für alle darin befindlichen Objekte.)
  • Diese Ergebnisse werden dann mit denen einer vorherigen Berechnung verglichen – und dürfen sich natürlich nicht unterscheiden.
  • Dieser Durchlauf erzeugt dann ein Protokoll, das in unserem Intranet lesbar ist und etwa so aussieht (für die ersten 19 Fälle):
  • Tritt ein Fehler auf, dann enthält das Protokoll einen entsprechenden Vermerk – und wir können uns auf die Fehlersuche machen.

Bei Bedarf kann man das natürlich auch manuell anstoßen – zum Beispiel bevor man eine größere Änderung in den “offiziellen” Quellcode einpflegt.