Agile Tests erfordern gutes Design

Keine Kommentare

Für das Testen in agilen Projekten ist die Testautomatisierung von zentraler Bedeutung. Und Testautomatisierung bedeutet, dass die Tests entwickelt werden. Dies ist ein fundamentaler Unterschied zu manuellen Tests, bei denen Tests anhand von Testplänen ausgeführt werden, in denen die Ausführung der Tests dann mehr oder weniger gut beschrieben ist. Automatisierte Tests wiederum beinhalten im allgemeinen wesentlich mehr als nur ein Aufzeichnen und Abspielen fester Szenarien. Automatisierte Tests sollen einen Rahmen schaffen, um die Funktionalität der zu testenden Applikationen einfach und schnell mit verschiedenen Parametern testen zu können. Dies wird im Idealfall durch ein agiles Test-Tool unterstützt, das hierfür bereits entsprechende Funktionen anbietet. Fast immer wird es jedoch notwendig sein eigene Erweiterungen zu implementieren, um bestimmte Aspekte einer konkreten Anwendung testen zu können.

Testautomatisierung bedeutet Softwareentwicklung, welche unter Umständen im Umfang an die Entwicklung der Software unter Test (SuT) heranreicht oder diese in extremen Fällen sogar übertrifft.

Automatisierte Tests sind Software und Software braucht – idealerweise gutes – Design. Seit diesem Artikel von meinem Kollegen Uwe traue ich mich jedoch nicht in diesem Zusammenhang von Testarchitektur zu sprechen ;-). Aber ich warte schon länger auf einen passende Gelegenheit die folgende kleine Geschichte in einen Blog-Beitrag einzuflechten und da diese beim Thema Software-Entwicklung eigentlich immer passt, quetsche ich das jetzt mal einfach hier rein :-).

Ein Elefant läuft durch den Dschungel und sieht dort einen Affen. Dieser steht unter einem Baum und springt, um an die herunterhängenden Bananen zu kommen, ohne diese jedoch wirklich erreichen zu können. „Was machst Du da Affe?“ fragt der Elefant. „Ich springe, um an die Bananen zu kommen.“ sagt der Affe und springt weiter. „Ja, aber dort liegt doch ein langer Stock, warum benutzt Du nicht den?!“ sagt der Elefant. „Keine Zeit!“, sagt der Affe, „Ich muss doch springen!“

Ja klar, die Geschichte hinkt ein wenig, denn der Affe könnte ja auch auf den Baum klettern, aber die Idee kommt hoffentlich rüber. Automatisierte Tests sind ein Softwareprojekt und ggf. ein ziemlich großes. Läuft man hier ohne einen (oder auch zwei) Gedanken an das passende Design direkt kopflos drauf los, so sieht man sich später mit hoher Wahrscheinlichkeit mit ziemlichen Problemen konfrontiert diese Tests zu warten und ggf. zu erweitern. Dabei ist hier kein großes „Upfront-Design“ gemeint, aber in dem gleichen Maße in dem die SuT im Laufe des Projekts designed wird, müssen auch die automatisierten Tests designed werden.

Wie gutes Design für automatisierte Tests aussieht ist dabei natürlich vom konkreten Anwendungsfall abhängig und kann gut einen eigenen (zukünftigen :-)) Blog-Beitrag füllen. Es ist jedoch sicherlich keine schlechte Idee die eigentlichen Testfälle soweit wie möglich von den Technologien zu abstrahieren, die in der SuT eingesetzt werden. So bleiben die Tests stabil, auch wenn die Implementierung evtl. in Teilen ausgetauscht wird. Dieser Ansatz wird sehr gut durch agile Test-Tools unterstützt, die auf dem Prinzip des Keyword-Driven Testing beruhen.

Durch ein gutes Design der Tests können auch frühzeitig Probleme in der Testautomatiserung aufdeckt werden, die durch Änderungen an der SuT gelöst werden können. Solche Wechselwirkungen sind legitim und können in agilen Teams natürlich leichter gelöst werden, als in einer klassichen Projektstruktur mit einer strikten Trennung der Verantwortlichkeiten für die Implementierung und die Qualitätssicherung.

Abschliessend kann man sicherlich sagen, dass der Aufwand für ein gutes Design automatisierter Tests sehr gut investierte Zeit ist und sich im Endeffekt insgesamt auszahlt.

Thomas Jaspers

Langjährige Erfahrung in agilen Softwareprojekten unter Einsatz von Java-Enterprise-Technologien. Schwerpunkt im Bereich der Testautomatisierung (Konzepte und Open-Source Werkzeuge).

Share on FacebookGoogle+Share on LinkedInTweet about this on TwitterShare on RedditDigg thisShare on StumbleUpon

Kommentieren

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.