Blog
Software Testing
zwei Ansätze - eine Mission
Julia Powalla
Ob App, Website oder Smart Device – jede Software durchläuft einen intensiven Entwicklungsprozess, bis sie erscheint. Je höher die Qualität des Produktes, desto wichtiger ist die korrekte Ausführung des Software Testings. Doch an welchem Punkt in der Entwicklungskette lässt sich Software Testing am sinnvollsten einsetzen?
Nehmen wir an, Sie vertreiben einen robotischen Rasenmäher und haben als Fernsteuerung eine mobile App entwickelt. Wie viele Buttons und Funktionen sollten bereits vorhanden sein, bevor man den Mähroboter testweise auf die Wiese schickt?
Die rasanten Veränderungen innerhalb der IT-Welt haben im Laufe der Jahre das Projektmanagement zu erheblichem Umdenken veranlasst. Die Notwendigkeit, ein Produkt so früh wie möglich auf den Markt zu bringen, hat die Struktur des Arbeitsprozesses revolutioniert: Agile heißt das Stichwort, das für flexiblere Abläufe steht. So kann die Software bereits mit ihren Grundfunktionen verkauft werden, während weitere Features entworfen, gestaltet und programmiert werden.
Entsprechend hat sich auch das Software Testing erweitert und gewandelt, so dass uns heute eine Vielzahl an Methoden und Tools zur Verfügung steht. Dabei haben sich zwei grundlegende Ansätze herausgebildet, die beide ihr Für und Wider haben. Was sie ausmacht, inwiefern sie sich voneinander unterscheiden und für welche Art von Fragestellungen sie sich jeweils eignen, werden wir nun näher untersuchen.
nachgelagerter Testansatz
Bei diesem Ansatz findet das Testing am Ende des Software-Entwicklungsprozesses statt: Sobald die Software vollständig programmiert ist, werden Tests durchgeführt, um Fehler aufzudecken und zu beheben, bevor das Produkt auf den Markt gebracht wird.
So wären im Falle unseres Rasenmäh-Roboters bereits alle Features der Fernbedienungs-App vollständig entwickelt, bevor der Roboter auf der Wiese testweise fahren kann.
Dieser Ansatz wird vorrangig auf klassische Arbeitsstrukturen angewandt, wenn die Anforderungen eines Produktes relativ konstant bleiben. Der Vorteil für die Entwickler: Sie können sich voll und ganz aufs Programmieren fokussieren, ohne parallel mit den Testern zu interagieren. Die Software anschließend in ihrer vollständigen Form zu testen, ermöglicht auch eine umfassende Fehlererkennung.
Agile Testing
Beim Agile Testing wird das Testen von Anfang an in den Entwicklungsprozess mit eingewoben. Tester arbeiten Hand in Hand mit Entwicklern und testen kontinuierlich – über den gesamten Zyklus hinweg. Jedes Feature, das hinzugefügt wird, kommt gleich unter die Lupe. Taucht in einer Komponente ein Fehler auf, wird er umgehend behoben.
Der Rasenmäh-Roboter kann also mit seinen Grundfunktionen bereits eine Testrunde durch den Garten drehen, während weitere Features noch entworfen, gestaltet und programmiert werden.
Testen und Nacharbeiten stellen also keine eigenen Phasen dar, sondern finden parallel mit der Entwicklung statt. Dieses Verfahren kann zu schnellen Ergebnissen führen bei gleichzeitig hoher Produktqualität. (time to market)
Fazit
Keine Frage: Agile Testing trifft den Zeitgeist, kann auch sehr vielversprechend sein. Gerade wenn das Projektmanagement agil angelegt ist, stärkt die häufige Kommunikation zusätzlich das Team. Allerdings kann es vorkommen, dass mit dem Fokus aufs Detail und dem Drang schnell zu liefern Aspekte vernachlässigt werden.
Der nachgelagerte Testansatz hingegen bietet den Überblick über die Gesamtwirkung und -leistung des Produktes, spart sich das Testen unterwegs verworfener Features und schaut aus Perspektive des Nutzers auf die Software. Es bleibt jedoch das Risiko, Fehler zu finden, deren Korrekturen so spät im Prozess sehr aufwändig und kostenintensiv werden können.
Es heißt also, die Vor- und Nachteile gründlich abzuwägen und auf die eigene QA-Strategieentwicklung abzustimmen.
Sind agile Methoden im Team bereits etabliert? Ändern sich die Anforderungen an das Produkt schnell? Oder ist das Projektmanagement eher klassisch aufgestellt? Bleiben die Anforderungen stabil und gibt es klare Spezifikationen für das Projekt?
Es lohnt sich in beiden Fällen, zumindest Aspekte des anderen Verfahrens mit einzubeziehen, um die Nachteile auszugleichen.
So könnte man beispielsweise grundlegende Komponenten definieren, welche schon früh im Prozess agile getestet werden, während man vor dem Release ein End-to-End-Testing schaltet, um eine hohe Qualität von beiden Seiten aus zu sichern. Tests können manuell oder automatisiert sein.
Welcher Ansatz beim Testing am sinnvollsten ist, sollte folglich auch eine tiefere Analyse von Projektmanagement und QA-Strategieentwicklung miteinschließen. Consulting-Firmen wie die testbee bieten Erfahrung, Expertise und sichere Unterstützung dabei, die passende QA-Strategie zu finden, die den Anforderungen des Projektes am meisten entspricht.