testing-agile-method

Wie bringen wir Tests und agile Methoden zusammen, wenn wir unsere Web-Analytics-Lösung entwickeln? Seit einigen Jahren arbeiten unsere Software-Entwickler in Zyklen, die den Fokus auf beständige Verbesserungen richten. Werfen Sie mit uns einen Blick hinter die Kulissen der Entwicklungsabteilung von AT Internet 

 

Die wichtigste Vorgabe: Qualität ist entscheidend  

Als Software-Entwickler wollen wir unseren Kunden Produkte mit Mehrwert für ihre Projekte bieten – anstatt zusätzlicher Einschränkungen und Komplikationen. Mit diesem Ziel vor Augen haben wir in den vergangenen Jahren an der Verbesserung unserer Entwicklungszyklen, unseren Anforderungen an die Software-Qualität und an unserer Herangehensweise an die Kombination von Best Practices und agilen Methoden gearbeitet … ohne dabei die Ziele unserer Kunden zu vergessen: Digital-Analytics-Daten optimal sammeln und nutzen.  

Bevor wir uns mit dem Testing befassen, müssen wir erst wissen, welche Ziele wir damit erreichen wollen und was enthalten sein soll. Das gibt uns die Möglichkeit eine klare Teststrategie zu definieren und ein gemeinsames Verständnis unter den einzelnen Stakeholdern zu schaffen. 

 

Ziel #1: Mängel identifizieren  

Meist hilft uns das Software-Testing Bugs in einem Produkt aufzuspüren. Das ist das bekannteste und offensichtlichste Ziel bei Software-Tests.   

tests-bugs-detection

Quelle: Applied Software Measurement, Capers Jones, 1996 

 

Wir haben immer wieder festgestellt, dass die Kosten für Korrekturen nach einem Release in die Höhe schnellen, während sich (wie in der obigen Grafik dargestellt) 85% der Bugs während der Implementierungsphase einschleichen. Warum die Bugs also nicht sofort korrigieren wenn das noch nicht so kostspielig ist und wenn die Sache noch für unsere Kunden transparent ist? Wir investieren deshalb ins Testing um Schwachstellen zu erkennen und unser Ziel zu erreichen … aber das ist nicht der einzige Grund. 

 

Ziel #2: Das Vertrauen fördern 

Softwaretest können uns manchmal dabei helfen ein bestimmtes Vertrauens-Level zu erreichen, wenn es um die Qualität unserer Produkte geht. Sobald wir eine Funktion umfassend mit allen relevanten Tests geprüft haben und keine Fehler feststellen konnten, gibt uns das Sicherheit und wir gehen mit mehr Selbstvertrauen an den Release heran. (Aber wir müssen uns immer vor der Illusion hüten, dass man Bugs endgültig beseitigen kann.) Erfolgreiche Tests gegen Bugs steigern außerdem das Vertrauen, wenn neue Funktionen oder Verbesserungen ausgerollt werden.  

 

Ziel #3: Informieren 

Alle Arten von Tests, egal mit welchem Ergebnis, können eine wertvolle Quelle für Informationen über unsere Produkte sein. Ein Beispiel: 

  • Nicht-funktionale Variablen wie die Entwicklung der Performance von Version zu Version   
  • Fehler-Listen oder identifizierte Anomalien (bekannte Probleme) 
  • Bestimmte technische Warnhinweise hervorheben 

All diese Informationen ermöglichen es uns die richtigen Entscheidungen zur richtigen Zeit zu treffen. Tests sind unverzichtbar wenn man vermeiden will sich blind vorzutasten – sie ermöglichen uns die Vorbereitung auf Probleme, falls sich welche ergeben sollten.   

Man sollte nicht vergessen, dass es Tests gibt, mit denen man Bugs im Produkt verhindern kann noch bevor der Code geschrieben wird. Das ist zum Beispiel der Fall bei den INVEST-Phasen von User Stories und der Überprüfung der Architektur.  

 

Die agile Herangehensweise an die Entwicklung 

agile-method-illustration

Agile Methoden sind so aufgebaut, dass sie regelmäßig voll funktionsfähige Versionen von Produkten liefern, die auf den Wert für die Kunden abgestimmt sind. Dieser Rhythmus bietet viele Vorteile. Darunter: 

  • Flexibilität 
  • Kontinuierliche Anpassung an die Bedürfnisse unserer Kunden 
  • Die Fähigkeit, regelmäßiges Feedback von unseren Nutzern zu bekommen 
  • Kontinuierliche Verbesserung der Abläufe in unseren Teams 

Aber diese Herangehensweise unterliegt auch ein paar Einschränkungen während der Tests: 

  • Die Kosten von manuellen Tests sind mit der geforderten Geschwindigkeit agiler Methoden nicht vereinbar: Durch die kurze Dauer eines Sprints können Testphasen nicht tage- oder wochenlang sein und nur in Ausnahmefällen von Dritten übernommen werden.   
  • Es wäre viel zu riskant für das angepeilte Datum der Veröffentlichung wenn wir die Testergebnisse erst am Ende des Sprint bekommen würden – sie müssen so früh wie möglich im Sprint sichtbar sein. 
  • Die Abfolge von Versionen über viele Sprints hinweg verursacht auch eine wichtige Einschränkung weil es einfach sein muss über ein Problem informiert zu werden, sollte in einer alten Version eine Regression eingeführt worden sein.   

Wir müssen unsere Strategie so anpassen, dass wir auf intelligente Weise das automatisieren, was wir automatisieren können und uns beim Testing auf die richtigen Stellen konzentrieren.  

 

Unsere Agile Testing Pyramide 

Werfen wir jetzt einen Blick auf die (berühmte) „Agile Testing Pyramide“, die wir an unseren Bedarf angepasst haben. Wir wollen die Kosten-Nutzen-Rechnung unserer Tests optimieren indem wir die unterschiedlichen Ebenen des Testing strukturieren. Wir möchten für unsere Entwickler regelmäßiges Feedback und zwar so früh wie möglich. Dafür haben wir uns für den folgenden Ansatz entschieden:  

agile-testing-pyramide
  • zusammenspielen und wie sie in den Interfaces angezeigt werden (System-/Integrations-Tests und System-/Lösungstests).
  • Wir reservieren einen Teil für manuelle Tests, die einfach dazu dienen die Auslieferung der Funktionen zu bewerten (also sicherstellen, dass die Lieferung mit dem anfangs geäußerten Bedarf übereinstimmt).

 

Den „Edge-Effekt“ umgehen

Ich erinnere mich an eine Zeit, als Test als nervig und teuer galten. Teams mussten nach der Veröffentlichung einer neuen Funktion alles stehen und liegen lassen um sich ganz der Korrektur eines großen Problems zu widmen: dem berüchtigten „Edge Effekt“, mit dem jeder rechnet, von dem aber keiner weiß, wo er auftauchen wird … Die Zeiten haben sich geändert und Tests sind jetzt ein integraler Bestandteil der Entwicklung: sie stellen sicher, dass das Produkt zuverlässig ist. Außerdem beruhigen sie alle Beteiligten – Veröffentlichungen können deshalb stressfreier und regelmäßiger stattfinden. Es ist so befriedigend zu sehen, wie ein Team einen Fehler im Produkt findet und korrigiert – bevor ein Kunde darüber stolpert!

Mit dieser Einstellung hoffen wir hochgradig verlässliche Produkte liefern zu können, auf die Digitale Analysten jederzeit zählen können. Diese Art von Arbeit ist auf Dauer ausgelegt und bedarf ständiger Anstrengungen. Deshalb sind wir ständig auf der Suche nach methodisch vorgehenden Menschen, denen die Kundenzufriedenheit am Herzen liegt und die sich für die Testing-Automatisierung begeistern können. Wenn dieser Artikel Sie anspricht, schreiben Sie uns!

Autor

Mit über 10 Jahren Erfahrung mit Software-Testing-Strategie und Implementierungen in einem agilen Umfeld ist Alexandre dafür verantwortlich die Entwicklungen bei AT Internet voranzutreiben. Seine tägliche Herausforderung: Unsere Entwicklungsteams bei der Implementierung von Tools und Methoden anzuleiten. Das Ziel ist es regelmäßige Veröffentlichungen mit hoher Qualität für unsere Kunden zu garantieren.

Comments are closed.