06.09.2006, 10:13 Uhr

Qualitätssicherung im Round-Trip

In vielen Teilbereichen lässt sich die Qualitätssicherung mit käuflichen Werkzeugen automatisieren. Nun gilt es, diese Insellösungen geeignet zu ergänzen und zu einem sinnvollen Ganzen zusammenzufügen.
Alex Bögli ist Software Engineer bei Zühlke Engineering.
Qualitätssicherung ist für viele Entwickler ein rotes Tuch. Die Materie scheint trocken und theorielastig und in der Durchführung nicht sonderlich spannend. Die Qualitätssicherung wird deshalb oft vernachlässigt oder einfach den Neulingen im Projekt aufgebrummt. Die Folgen sind bekannt: Es machen sich Fehler bemerkbar, die eigentlich schon behoben sein sollten; neue Probleme treten an unerwarteten Orten auf. Terminverzögerungen, Kostenüberschreitungen und Imageverluste sind vorprogrammiert.
Wenn es jedoch gelingt, die Entwickler für qualitätssichernde Massnahmen zu begeistern, treten viele dieser Probleme gar nicht erst auf. Methoden wie Test Driven Development oder Extreme Programming sind deshalb darauf ausgerichtet, die Aufgaben der Qualitätssicherung näher an das klassische Tätigkeitsfeld der Entwickler zu rücken. Denn sobald die Testfälle in Code geschrieben werden, die Testprotokolle in XML vorliegen und die Abläufe automatisiert werden können, ist die Qualitätssicherung keine langweilige Aufgabe mehr.

Umfassender Qualitätszyklus

Ist die Neugier der Entwickler geweckt, steht der Einführung eines umfassenden Qualitätszyklus nichts mehr im Weg. Dazu wird der natürliche Prozess von der Entwicklung über den Test bis zur Auslieferung einer Software so weit wie möglich automatisiert. Dies erlaubt, Abweichungen vom geforderten Qualitätsniveau schnell und frühzeitig zu erkennen und rasch darauf zu reagieren.
Gerade im komplexen Umfeld von Integrationslösungen ist das Bedürfnis nach einer laufenden Qualitätssicherung sehr hoch. Die Systeme haben fast immer eine zentrale Funktion im Unternehmen, von der alle Abteilungen abhängen. Ein Ausfall kann verheerende Folgen haben.
Im Folgenden wird ein Qualitätszyklus vorgestellt, der auf die Entwicklung von Integrationslösungen angepasst ist. Der Lösungsansatz wurde ursprünglich für die Entwicklung von Applikationen mit dem Microsoft BizTalk Server entwickelt, lässt sich jedoch ohne weiteres auf andere Projektarten übertragen. Der Zyklus hat sich bei Zühlke in verschiedenen Projekten bewährt.

Build-Automatisierung

Der erste Schritt des Zyklus ist das Laden und Kompilieren des Quellcodes. Diese Build-Automatisierung ist heute aus dem Entwickleralltag nicht mehr wegzudenken. In den letzten Jahren hat sich im .NET-Umfeld das Open-Source-Tool Nant durchgesetzt, das dank seiner langen Tradition in der Java-Welt einen sehr grossen Fundus an Tasks bietet. Seit Kurzem ist seine Stellung jedoch gefährdet - MSBuild aus dem Hause Microsoft ist zu einem gewichtigen Konkurrenten geworden. Keines der beiden Tools kann jedoch BizTalk-Lösungen direkt kompilieren, weshalb dazu Visual Studio verwendet werden muss. Glücklicherweise lässt sich dieses im Hintergrund starten und der Prozess damit automatisieren.
Mit dem erfolgreichen Kompilieren des Quellcodes ist ein erster wichtiger Schritt getan: Alle syntaktischen Fehler sind behoben. Nun lässt sich mit Werkzeugen wie FxCop gleich eine weitere Qualitätssicherung durchführen, welche die Einhaltung von Programmierrichtlinien und Best Practices prüft.
Im nächsten Schritt werden die kompilierten Assemblies und alle anderen für die Ausführung nötigen Artefakte in einem Set-up zusammengezogen. Dazu sind zahlreiche Tools erhältlich, die sich unterschiedlich für die Automatisierung eignen. Sie variieren zudem ganz beträchtlich in Funktionsumfang und Preis. Für einfache Projektstrukturen genügt meist die Funktionalität der Setup-Projekte, die in Visual Studio enthalten sind. Allerdings schöpfen diese die Möglichkeiten des Windows-Installers bei weitem nicht aus. Wer mehr Flexibilität benötigt, muss auf ein mächtigeres Tool wie Wise oder Install-Anywhere wechseln. Ein interessantes Werkzeug ist das frei verfügbare Windows Installer XML (Wix) Toolset. Es kann bestehende Setups dekompilieren und in eine XML-Vorlage überführen. Diese lässt sich flexibel erweitern und danach wieder zu einem Setup kompilieren, was bei häufig ändernden Artefakten ein grosser Vorteil sein kann.

Deployment

Am Ende der Build-Automatisierung liegt eine ausführbare Setup-Datei vor. Diese schafft die Grundlagen für den nächsten Schritt im Qualitätszyklus: das Deployment. Bei BizTalk-Lösungen ist speziell, dass die Dateien zusätzlich zur «normalen» Installation noch beim BizTalk Server registriert werden müssen. Dieser Vorgang ist erstaunlicherweise hoch komplex und wird zurzeit nur manuell unterstützt. Zudem ist er leider sehr aufwändig, da die Assemblies in der richtigen Reihenfolge registriert und wieder deregistriert werden müssen.
Zühlke hat deshalb ein Framework entwickelt, das BizTalk Assemblies skriptgesteuert mit einem Doppelklick schnell und einfach registriert. Das Framework nimmt auch alle nötigen Konfigurationseinstellungen vor, damit die BizTalk-Lösung ohne weitere manuelle Schritte ausführbar wird. Das Deployment ist dabei in unterschiedlichen Umgebungen möglich. Bei Integrationsprojekten sind dies üblicherweise die Entwicklungs-, Test-, Integrations- und Produktionsumgebung - je nach Situation kommen weitere hinzu. Jede Umgebung verlangt individuelle Einstellungen für Benutzernamen, Pfade, Datenbanken und Ähnliches, was schnell unübersichtlich werden kann.

Test als Höhepunkt

Ist das Deployment abgeschlossen, nähert sich der Qualitätszyklus seinem Höhepunkt, dem Test. Dazu muss die Testumgebung in einen definierten Zustand gebracht werden. Dies umfasst unter anderem die Konfiguration von Umsystemen und die Initialisierung von Datenbanken.
Beim automatisierten Testen lohnt es sich, an den üblichen Teststufen Unit-Test, Integrationstest und Systemtest festzuhalten und bei jeder Stufe den Nutzen einer Automatisierung kritisch zu prüfen. Erfahrungsgemäss lassen sich die ersten beiden Stufen effizient automatisieren, denn dabei kann die Betrachtung auf das System beschränkt werden, das sich im Test befindet. Bei der Automatisierung des Systemtests müssen zusätzlich auch die Umsysteme manipuliert werden, was sich oft nur mit einem sehr hohen Aufwand erreichen lässt.
Waren die Unit-Tests erfolgreich, kann die installierte Lösung einem Integrationstest unterzogen werden. Bei BizTalk Server Lösungen kommt diesen eine besondere Rolle zu, denn die Implementierung der Units ist in der Regel nicht sehr fehleranfällig - das richtige Zusammenfügen und Konfigurieren jedoch sehr wohl. Eine Automatisierung lohnt sich hier in (fast) jedem Fall.
Sind die Tests abgeschlossen, ist das Qualitätsniveau der Applikation bekannt. Damit der Zyklus aber zum Round-Trip wird, muss das System wieder in den ursprünglichen Zustand gebracht werden. Dazu werden die Dateien beim BizTalk und bei anderen Servern deregistriert; anschliessend wird die Applikation deinstalliert.

Steuerung und Auswertung

Die Ablaufsteuerung des Round-Trips gestaltet sich einfach, wenn die einzelnen Schritte des Zyklus als Nant-Targets zur Verfügung stehen. Diese müssen nur in die richtige Reihenfolge gebracht und angestossen werden. Der Round-Trip sollte möglichst häufig durchlaufen werden, damit Qualitäts-einbrüche sofort erkannt und behoben werden können. Dazu eignen sich Werkzeuge für Continuous Integration, wie zum Beispiel CruiseControl.NET. Es erlaubt das Monitoring der Quellcodeverwaltung und startet den Round-Trip, sobald sich etwas geändert hat. Zudem kann es den Zyklus auch zu ausgewählten Zeiten anstossen, zum Beispiel regelmässig während der Nacht. Die Auswertungen werden mit detaillierten Protokollen der einzelnen Schritte dokumentiert. Damit sind ausführliche Informationen über Ablauf und Erfolg oder Misserfolg vorhanden. Jeder Durchlauf des Round-Trips ist kontrollierbar und nachvollziehbar.
Mit der automatisierten, laufenden Kontrolle lässt sich das Qualitätsniveau einer Software von der Entwicklung bis zur Wartungsphase sicherstellen. Die eingesparten Kosten durch die Früherkennung von Fehlern und die gewonnene Transparenz wiegen die Initialkosten in kurzer Zeit auf.
Alex Bögli



Das könnte Sie auch interessieren