Schnelle Lasttests für die Agile-Softwareentwicklung

Agile Methoden halten zunehmend Einzug in IT-Projekte. Um die Agile-Vorteile zu nutzen, müssen Entwickler und Tester ihre Zusammenarbeit enger aufeinander abstimmen als bislang - was in der Praxis nicht immer einfach ist: Wenn Entwickler „agiler“ werden, produzieren sie mit hoher Geschwindigkeit Codes, um vor dem Ende des Sprints möglichst viele User Stories und Tasks zu erledigen. Viele Tester können dieses Tempo kaum mitgehen, zumal sie eine große Bandbreite an - teilweise automatisierten - Modul-, Regressions-, Last- und Performance-Tests verantworten. Mit verkürzten Entwicklungszyklen Schritt zu halten und dabei steigende Qualitätsvorgaben zu erfüllen, wird zur echten Herausforderung.

Vorteile durchgängiger Last- und Performance-Tests

Finden Sie die Performance-Probleme nicht zu spät

 

Werden Last- und Performance-Tests erst zum Ende des Entwicklungszyklus angesetzt, bleibt den Entwicklern häufig kaum oder keine Zeit mehr für Veränderungen. Dies kann dazu führen, dass Teams zugesagte Terminziele verfehlen und Software erst mit Verspätung veröffentlicht wird.


Verbessern Sie früher - wenn es noch kostengünstig ist

 

Durch eine nahtlose Einbettung von Last- und Performance-Tests in Continuous-Integration-Prozesse können Unternehmen Qualitätsprobleme frühzeitig erkennen, solange ihre Beseitigung noch kostengünstig möglich ist.

 

Entwicklung im Blick - Performance im Griff

 

Unternehmen, die unter agilen Bedingungen arbeiten, setzen Änderungen sehr schnell um. Unter Umständen werden neue Merkmale oder Funktionen in die Quellcode-Kontrolle eingecheckt, durchlaufen noch ein Coninuous-Integration-Build mit automatisierten Tests, bevor sie innerhalb weniger Minuten auf den Produktionsserver angewendet werden.  Wurde der Code jedoch nicht dahingehend geprüft und ggfs. optimiert, um zu Spitzenzeiten einer besonders hohen Zahl gleichzeitiger Benutzer standzuhalten, ist die Stabilität des gesamten Systems gefährdet. Damit Anwender von allen neuen Merkmalen, Funktionen und hohem Nutzerkomfort profitieren können, sollten Lasttests in den Entwicklungsprozess integriert werden, bevor Softwaremodifikationen in den Produktivbetrieb übernommen werden.

 

 

Herausforderungen bei Performance-Tests in agilen Umgebungen

Die Kombination aus agilen Methoden und Lasttests bringen erhebliche Vorteile, ist aber auch eine Herausforderung, mit der sich Entwicklungsteams bislang nicht konfrontiert sahen.


Beschleunigte Entwicklungszyklen erfordern mehr Tests in kurzer Zeit

 

Last- und Performance-Tests werden zumeist bis zum Ende des Entwicklungszyklus aufgeschoben. Dag gilt auch für agile Projekte, in denen die Sprints deutlich kürzer sind. Hier führt die Zurückstellung von Last- und Performance-Tests dazu, dass sie manchmal unterbleiben und z. B. nur in jedem zweiten Sprint überhaupt durchgeführt werden. Damit steigt das Risiko, dass unzureichend getesteter Code veröffentlicht wird oder inadäquat umgesetzte User Stories in die nächste Softwareversion einfließen.

 

Funktionierender Code performt nicht immer gut

 

Entwickler müssen einen fehlerfrei funktionierenden Code abliefern. Aber können Code und Anwendungen, die unter Last plötzlicher Fehler produzieren, als „fehlerfrei“ gelten? Sollten User Stories und Tasks weiterhin als „erledigt“ markiert werden, wenn die entsprechende App bei 100 gleichzeitigen Nutzern abstürzt? Der Druck zur Code-Ablieferung ist in Agile-Teams hoch – der Verzicht auf Performance-Tests bringt allerdings keine Entlastung.

 

 

Entwickler benötigen Rückmeldungen - und zwar unverzüglich

Agile-Entwickler benötigen mehr Informationen als nur die, dass ihr Code Performance-Probleme hervorruft: Sie müssen wissen, wann ihr Code begonnen hat, Schwierigkeiten zu verursachen und bei welcher User Story dies zum ersten Mal auftrat. Code für eine mehrere Wochen zuvor bearbeitete User Story zu reparieren, bedeutet für Entwickler einen enormen Aufwand, der sie für aktuelle Aufgaben blockiert.

 

 

Automatisierte Übergänge von der Entwicklung in den Betreib erscheinen riskant

Betriebsteams wissen, wie folgenschwer Anwendungsausfälle für Unternehmen sind, und stehen Innovationen wie Continuous Deployment und DevOps daher skeptisch gegenüber. Sie befürchten, dass bestehende Systeme in ihrer Stabilität und Leistungsfähigkeit gefährdet werden, wenn Code-Änderungen direkt in die Produktion gehen. 

 

 

 

Praxis-Tipps

Setzen Sie Leistungs-SLAs auf die Aufgabenliste

Anwendungen müssen im Einklang mit den Service Level Agreements (SLAs) festgelegte Leistungswerte erreichen. Dennoch widmen viele Agile-Teams der Performance-Optimierung weniger Aufmerksamkeit und konzentrieren sich stärker darauf, neue Merkmale und Funktionen zu einer Anwendung hinzuzufügen.

 

Testläufe schon im Vorhinein eng mit Entwicklern abstimmen

Tester in agilen Umgebungen haben den Vorteil, in täglichen Meetings jeweils den aktuellen Stand der Entwicklungsprojekte zu erfahren. Den größtmöglichen Nutzen aus der fachübergreifenden Interaktion ziehen Tester, wenn sie frühzeitig im Hinterkopf haben, wie aktuell bearbeitete Stories später getestet werden. Tester profitieren dabei von ihrem Informationsvorsprung, solange sie mit dem Team eng in Kontakt bleiben.

 

Integration mit dem Build-Server

Auch wenn sie Agile-Konzepte noch nicht in allen Bereichen anwenden, nutzen Sie wahrscheinlich Build-Server für verschiedene automatisierte Modul-, Smoke-, Regressions- und andere Tests. Ebenso wie Leistungsziele in die Aufgabenliste gehören, sollten auch Performance-Tests fest in die Prüfroutinen für jeden Build integriert werden.