fbpx

Agile Softwareentwicklung: Wo bleibt die Qualität?

by Agnes Hartl

Software eats the world – jedes Produkt, jede Dienstleistung, jede Interaktion hat in der digitalen Welt eine Software-Komponente. Die Art und Weise, wie Software entwickelt wird, hat sich auch vollkommen verändert. Ziel des Unternehmens Testfabrik ist es, dass trotz agiler Entwicklung und hoher Geschwindigkeit, die Software-Qualität nicht zu kurz kommt. Michael Mirold ist einer der Mitbegründer des Unternehmens und verrät uns im Blog-Interview, wie moderne Test-Strategien aussehen und welche Rolle dabei Automatisierung spielt.

 

Persönlich treffen Sie die Experten von Testfabrik und mehr als 600 IT-Branchenprofis auf dem Confare #CIOSUMMIT WIEN. Melden Sie sich gleich an, für IT-Entscheider ist die Teilnahme kostenlos.

 

Wie wichtig sind Softwaretests und Softwarequalität für den Unternehmenserfolg im digitalen Zeitalter?

Agilisierung und digitale Transformation sind seit Jahren etablierte Themen. Sie haben jedoch an Aktualität nichts verloren. Denn viele Transformationsprojekte benötigen Jahre, um ihre Wirkung voll zu entfalten. So müssen nicht nur Methoden, Prozesse und Technologien, sondern auch die Menschen weiterentwickelt werden. Damit am Ende agile Teams qualitativ hochwertige Produkte schnell und kosteneffizient am Markt platzieren können, müssen viele Zahnräder reibungslos ineinandergreifen.             

Um mit seinem Produkt schneller am Markt zu sein, darf aber keinesfalls am falschen Ende gespart werden. Gerade in der digitalen Welt zählt häufig der erste Eindruck: Funktioniert die Anwendung? Wie gut lässt sie sich bedienen? Und macht sie einen professionellen Eindruck? Mussten Autohersteller früher bei der Bedienung des Infotainment-Systems vor allem im Vergleich mit der Konkurrenz bestehen, so ist die Messlatte heute das Smartphone oder das Amazon Echo zu Hause auf dem Küchentisch.

Es reicht also nicht mehr aus, neue Funktionen zu präsentieren, sondern diese müssen den Qualitätsansprüchen der Kundinnen und Kunden genügen. Um dies zu gewährleisten, muss die Softwarequalität im gesamten Lebenszyklus einer Anwendung mit betrachtet werden.

Die Liste der Anforderungen zum Beispiel an eine Webanwendung einer Direktversicherung sind lang: Funktionale Qualität, Performance, Bedienbarkeit und gegebenenfalls Barrierefreiheit, Gerätekompatibilität, Betriebssystemkompatibilität oder auch die korrekte Implementierung von Web-Analytics-Daten.

Ist die Vertragsstrecke beispielsweise mit einem Tablet oder mit einem Smartphone mit kleinem Display nicht fehlerfrei durchführbar, verliert das Unternehmen einen potenziellen Kunden. Und liefern die Web-Analytics-Daten nicht die korrekten Werte, werden im Marketing die falschen Entscheidungen getroffen.

Wie hat sich die Art der Software-Entwicklung verändert und wie wirkt sich das auf die Entwicklungsqualität aus? 

Agile Entwicklungsmethoden wie Scrum haben in den vergangenen 20 Jahren die Software-Welt im Sturm erobert. Laut aktuellen Statistiken haben heuer fast drei Viertel der Unternehmen den Übergang von Wasserfall-Modellen zu iterativen oder agilen Methoden vollzogen.

Bei agilen Methoden geht es vor allem um Kommunikation und Vermeidung von Müll bzw. “Muda” im Sinne des Lean-Gedankens. Man will nichts erschaffen oder entwickeln, was nachher nicht gebraucht wird. Hierfür sind enge Feedback-Schleifen essenziell, bei denen man seine Arbeit ständig hinterfragt: Ist das wirklich das Feature, das der Kunde sehen will? Entspricht das, was wir entwickelt haben, wirklich der Anforderung des Kunden? Ist der Softwarestand, der gerade produktiv ist, wirklich die letzte Version unserer Software oder liegt diese gerade “auf Halde”?

Wenn man Qualität so definiert, dass ein Produkt dem Kundenwunsch möglichst optimal entsprechen sollte, sind ein agiler Entwicklungsprozess sowie deren betriebliche Entsprechungen “Continuous Delivery” bzw. “Continuous Deployment” per Konstruktion die besten Wege, dieses Ziel zu erreichen.

Das heißt allerdings nicht, dass man in einem agilen Prozess Qualität geschenkt kriegt. Vielmehr passen die altbewährten Methoden der Qualitätssicherung nicht in diese neue Zeit und Software-Testen muss hier neu gedacht werden.

Warum stoßen bewährte Software-Test-Strategien heute an ihre Grenzen? 

In der “vor-agilen” Zeit sah der Ablauf im Software-Testen meist so aus: Die Entwicklung des Produkts oder einer Produktversion wurde abgeschlossen, die Testumgebung vorbereitet, die Tests durchgeführt und die Abweichungen dokumentiert. Danach wurden die Abweichungen behoben und das korrigierte Inkrement erneut zum Testen bereitgestellt.

Selbst wenn man annimmt, dass Entwickler während der Testzeiten mit anderen Dingen (sinnvoll) beschäftigt werden können, kommt dieser Ansatz immer stärker an seine Grenzen, je kürzer die Zeiten zwischen den Iterationen werden. So können Rüstzeiten zum Testen nicht beliebig beschleunigt werden, und man kann im Allgemeinen auch nicht davon ausgehen, dass eine Fehlerkorrektur nur punktgenau sein Ziel erfüllt, den entsprechenden Fehler zu beheben. Vielmehr werden häufig bei der Fehlerbehebung neue Fehler produziert, so dass man theoretisch große Teile einer Anwendung nach jedem Korrekturzyklus neu testen müsste.

Führt man sich jetzt vor Augen, wie ein klassischer “Abnahmetest” noch vor wenigen Jahren aussah, wo Fachtester und Qualitätsabteilung mit großem manuellen Aufwand Anforderungsdokumente oder Testfälle abarbeiteten und je nach Menge an Testfällen Wochen oder Monate in der Testphase verbrachten, erkennt man schnell: das ist nicht agil!

Welche Rolle spielt Testautomatisierung in der agilen Qualitätssicherung?

Um es kurz zu machen: Ohne Testautomatisierung ist keine moderne, agile Softwareentwicklung möglich. Die Testautomatisierung mit all ihren Facetten ersetzt dabei einen großen Teil der bisher manuell durchgeführten Testaktivitäten und hat den Vorteil, dass sie beliebig oft wiederholbar und in der Regel gut skalierbar ist, sich an keine Arbeitszeiten halten muss und mit großer Präzision abläuft. Die automatisierten Tests bzw. Teile davon werden oft nachts oder direkt nach der Veränderung des Quelltextes im Rahmen der Continuous Integration ausgeführt.

Der größte Vorteil der Testautomatisierung ist jedoch, dass Entwicklerinnen und Entwickler so schnell wie möglich Feedback darüber erhalten, ob sich durch ihre Arbeit Fehler in die Anwendung eingeschlichen haben. Damit können zeitnah Problemursachen identifiziert und deren Auswirkungen minimiert werden.

Natürlich wird in der Regel jede noch so gute Testautomatisierung von manuellen Tests flankiert werden. Die Gründe hierfür können vielfältig sein. Zum einen erweist es sich oft als wirtschaftlich ineffizient, wenn für jeden Aspekt einer Software ein automatisierter Test erstellt werden muss. Ebenso können nicht alle Eigenschaften einer modernen Webanwendung oder Mobile App mit einfachen Mitteln automatisiert überprüft werden. Last but not least basieren die meisten automatisierten Tests auf expliziten oder impliziten Spezifikationen und nicht für alle Aspekte existieren diese (in einer durch Maschinen bewertbaren Form). Ein Beispiel hierfür ist oftmals das Layout von Webanwendungen.

Welche Methoden haben sich bewährt? 

Bereits seit vielen Jahren kommen in der Testautomatisierung Unit-, Komponenten-, und Integrations-Tests zum Einsatz, oft zusammen mit Entwicklungsmethoden wie Test-Driven-Development (TDD). Solche Tests überprüfen meist technische Spezifikationen einzelner Softwarebestandteile oder -schnittstellen sowie Regeln in der Geschäftslogik der Anwendung. Diese Testtypen zeichnen sich vor allem dadurch aus, dass ihre Ausführung nur wenig Zeit in Anspruch nimmt und sie damit ein schnelles Feedback – oft innerhalb weniger Sekunden oder Minuten – ermöglichen und daher die Eingrenzung von Fehlern sehr einfach ist. Andererseits operieren diese Tests auf eher technischen und abstrakten Eigenschaften, deren Nutzen nicht immer offensichtlich oder gegeben ist.

End-to-End- bzw. E2E-Tests hingegen prüfen komplette fachliche Abläufe der Anwendung ab. Über einen Fehler, der in einem E2E-Test gefunden wird, könnte auch ein Anwender stolpern. E2E-Tests versuchen meist, das Verhalten eines Anwenders möglichst genau zu simulieren und nutzen hierfür z. B. reale Browser und Mobilgeräte. Hierdurch sind sie naturgemäß meist langsamer in ihrer Ausführung und bei Fehlern muss mit manuellem Aufwand die Ursache identifiziert werden. Nichtsdestotrotz haben Fehler, die E2E-Tests finden, oft Auswirkungen auf Benutzer, so dass man ihnen in der Regel einen großen Wert beimisst.

In der Testing-Community wird häufig von einer “Testpyramide” gesprochen, um die ideale Verteilung mit techniknahen Tests wie Unit-Tests an der Basis der Pyramide sowie wenigen, essenziellen E2E-Tests an der Spitze zu beschreiben. In der Praxis kann es manchmal sinnvoll sein, von dieser Verteilung abzuweichen. So kann zum Beispiel ein Legacy-System ohne existierende Testautomatisierung mit vergleichsweise geringem zeitlichen und personellen Invest durch End-to-End-Tests eine hohe Testabdeckung erlangen.

Neben rein funktionalen Ansätzen für Testautomatisierung spielen zunehmend auch Tests für nicht-funktionale oder zusätzliche Anforderungen eine wichtige Rolle. Hier sind insbesondere etablierte Verfahren für Last- und Performance-Tests zu nennen, es existieren inzwischen aber auch Testwerkzeuge für die Überprüfung von Sicherheitsanforderungen, der Korrektheit des Layouts, Anforderungen an die Barrierefreiheit usw.

Immer stärker in den Fokus rücken derzeit so genannte No-Code oder Low-Code-Testwerkzeuge, die ohne oder nur mit geringen technischen Kenntnissen eingesetzt werden können und damit auch technikferne Fachabteilungen in die Lage versetzen, aktiv an der Testautomatisierung mitzuwirken.

Welche Rolle spielt die Testfabrik im Software-Quality Ecosystem des CIO?

Die Testfabrik beschäftigt sich seit knapp 10 Jahren intensiv mit dem Thema Testautomatisierung für Web- und Mobile-Anwendungen. Mit der Plattform “webmate” bieten wir eine SaaS-Lösung, mit der insbesondere End-to-End-Tests in der Cloud realisiert werden können. Offene Automatisierungsstandards treffen hier auf eine große Vielfalt an Testinfrastruktur. So können Automatisierer neben Windows- und MacOS-Maschinen auch auf hunderte echte Mobilgeräte zum Testen ihrer Workflows zurückgreifen. Die komplette Infrastruktur ist auch aus dem Browser heraus steuerbar, falls Tester zum Beispiel im Home-Office eine App auf einer speziellen iPhone-Version testen müssen.

Zusätzlich bietet webmate Low-Code Lösungen für spezielle Testaufgaben. Dazu gehört zum Beispiel das Visual Testing, mit dem vollautomatisiert Layout-Unterschiede zwischen verschiedenen Browsern gefunden werden können.

Testfabrik bietet jedoch nicht bloß ein Werkzeug. So unterstützen wir unsere Kunden zum Beispiel gemeinsam mit unserem Partner Expleo beim Finden der richtigen Testautomatisierungsstrategie und der effektiven Integration von webmate in die Testautomatisierung.

Hier ein kleiner Rückblick auf die besten CIOs und IT-Manager Österreichs: Die Gewinner des Confare #CIOAWARDs 2021

Mehr spannende Videos finden Sie auf unserem YouTube-Kanal.

Für Sie ausgewählt

Leave a Comment