Suchen

Anforderungsmanagement und Qualitätssicherung

Testbarkeit und Testautomatisierung

Seite: 2/2

Firmen zum Thema

Verbesserung der Testbarkeit – Best Practices

Testeditor und Testplattform in einem: Vor der Entwicklung einer Funktion wird hier ihr Test definiert.
Testeditor und Testplattform in einem: Vor der Entwicklung einer Funktion wird hier ihr Test definiert.
(Bild: Berner & Mattner)

Eine zentrale Idee, um die Testbarkeit eines Softwaresystems zu erhöhen, ist das Teilen und Herrschen. Bekannte Beispiele dafür sind die Trennung von Anwendungslogik und GUI oder die Trennung der Anwendungslogik von den Datenzugriffen. Klassen, die viele statische Abhängigkeiten zu anderen Klassen haben, können nur mit großem Aufwand isoliert vom Rest des Systems getestet werden. Um solche Klassen besser testen zu können, müssen entweder die Abhängigkeiten reduziert werden, zum Beispiel durch Designprinzipien wie Dependency Injection, oder die Klassen müssen im Verbund getestet werden.

Da sich erfahrungsgemäß ein Teil der Anforderungen während der Projektlaufzeit ändert, sind iterative Ansätze sinnvoll. Einer dieser Ansätze ist das sogenannte Test-Driven Development (TDD), in dem automatisierte Testfälle bereits vor der eigentlichen Funktion geschrieben werden. Anforderungen werden als Test formuliert. Dieser Ansatz ist sehr puristisch, kann aber je nach Bedarf angepasst werden. Das Wichtigste ist, dass am Ende der Code automatisch getestet wird.

Um Applikationen effizient automatisiert testen zu können, sind gezielte Designansätze erforderlich – etwa die Applikation mit einem internen Testservice auszustatten. Ein Testservice versieht die Applikation mit einer externen Schnittstelle, die explizit zum Testen verwendet wird. Solch ein Testservice könnte etwa als zusätzliche API oder als Webservice eingerichtet werden.

Die Testschnittstelle kann von einer externen Testapplikation aufgerufen werden, die innerhalb desselben Test-Frameworks wie das aller anderen Unit-Tests ausgeführt wird. Damit ist die Basis für den automatisierten Test der gesamten Applikation geschaffen.

Ein weiterer Vorteil automatisierter Tests liegt in der Möglichkeit, die Applikation in mehreren Konfigurationen testen zu können. Ein Weg dafür besteht darin, die Applikation über ihren Testservice konfigurierbar zu machen. Die externe Testapplikation übergibt vor jedem Testlauf die jeweilige Konfiguration. Auf diese Weise können viele Konfigurationen vorbereitet und ausgeführt werden.

Diese Konzepte machen deutlich, wie tief die Qualitätssicherung in die Softwareentwicklung integriert werden kann und sollte. Die automatische Testbarkeit ermöglicht Dauertests, Lasttests und Regressionstests. Wenn man bereits in der Anforderungs- und Designphase eines Projekts nach Möglichkeiten zur Testautomatisierung sucht und in der Programmierung berücksichtigt, kann man die Qualität von Software in jeder Phase der Entwicklung nachweisen.

* Giorgio Roselli ist Senior-Softwareingenieur bei der Berner & Mattner Systemtechnik in München.

* Thomas Sorg ist Teamleiter Machinery bei der Berner & Mattner Systemtechnik in München.

(ID:43017070)