Wege zu finden um die Kosten für Softwaretests zu optimieren, ohne dabei die Qualität des Produkts zu beeinträchtigen wird je länger je wichtiger. Vielleicht gelingt es auch zu vermeiden, eigentlich wertvolle Teammitglieder nur aus Kostengründen entlassen zu müssen. In bestimmten Fällen ist Letzteres manchmal unvermeidlich, aber zunächst sollten Sie versuchen, die Kosten so weit wie möglich zu kontrollieren oder zu optimieren.
In diesem Blog stelle ich einige Möglichkeiten zur Senkung der Kosten für Software-Tests vor, die wir entweder selbst angewendet haben oder von denen wissen, dass sie bereits mit Erfolg angewendet wurden.
Optimieren der Testkosten
Testen Sie so bald als möglich
Genauso wie Check-ups beim Arzt wichtig für die Früherkennung von Krankheiten sind, ist es auch wichtig, dass Sie Ihre Software frühzeitig testen, damit sich kleine Probleme (sprich: Fehler) nicht zu viel grösseren und teureren entwickeln. Mit dem Shift-Left-Ansatz wird das Testen effizienter, da die Lernkurve des Testers verkürzt werden kann. Wenn Fragen wie «Was würde passieren, wenn…» viel früher gestellt werden, hilft das zum Beispiel, die Anforderungen von vornherein zu verbessern und den Umfang an Nacharbeit aufgrund von Fehlern, die erst spät gefunden werden, zu reduzieren.
Seien Sie Effizienter mit der Dokumentation
Dokumentieren Sie Tests am besten nur sparsam (ebenso die Anforderungen und andere Artefakte), achten Sie aber auf eine gute Ausgewogenheit. Mehr Dokumentation hilft zwar neuen Mitarbeitern schneller zu lernen und Fragen zu klären, wenn man es schwarz auf weiss vor sich hat. Auf der anderen Seite macht es den Prozess weniger flexibel und verursacht zusätzliche Wartungskosten, wenn die Dokumentation mit den sich ständig ändernden Anforderungen synchron gehalten werden muss. Ziel ist es, die richtige Balance zu finden. Eine gute Regel lautet: Beschreibe alles nur einmal und sorge dafür, dass die Information gut auffindbar ist!
Wenden Sie risikobasierten Testentwurf für alles an
Wenn wir ein Risiko betrachten, sehen wir, dass es sich aus zwei Faktoren zusammensetzt:
- der Wahrscheinlichkeit, dass etwas passiert,
- dem Ausmass der (negativen) Auswirkungen, die es haben würde, wenn es eintritt, also beispielsweise Kosten oder Reputationsverlust.
Beim risikobasierten Testen geht es darum, Prioritäten zu setzen, Prioritäten zu setzen, Prioritäten zu setzen. Wenden Sie das Pareto-Prinzip an: Was sind die 20% der Testfälle, die 80% des Risikos mindern würden?
Nutzen Sie Informationen aus der Produktion zur Verbesserung des Testens
Während es unerlässlich ist, die Tests nach links zu verlagern, ist es sehr wichtig, die Tests auch nach rechts zu verlagern. Dieser Ansatz zielt darauf ab, dass die Benutzer Ihrer Software nicht die einzigen sind, die sie in der Produktion testen!
Eine Quelle nützlicher Informationen für das reale Nutzerverhalten ist z. B. Google Analytics, wenn Sie sehen wollen, welche Bereiche Ihrer E-Commerce-Website am stärksten frequentiert werden und daher strenger getestet werden sollten. Sie könnten Google Analytics auch nutzen, um zu verstehen, mit welchen Geräten, Betriebssystemversionen oder Browsern die meisten Ihrer Nutzer oder mit welchen überhaupt sie auf Ihre Website zugreifen, so dass Sie dieses Aufkommen in Ihren Tests simulieren können.
Ein weiteres Beispiel für den Erhalt von wichtigen und nützlichen Informationen aus der Produktion ist die Überwachung der Leistung mit Ihrem bevorzugten APM-(Application Performance Management) Tool, um zu verstehen, wie sich Änderung am Code im Laufe der Zeit auf die Leistung auswirken.
Optimieren der Automatisierungskosten
Automatisieren Sie auf der API-Ebene statt auf der UI-Ebene
Testautomatisierung kann, wenn sie klug angewandt wird, trotz der erforderlichen Anfangsinvestitionen eine grosse Kapitalrendite bieten.
Sie sollten für sich festlegen, auf welcher Testebene Sie wieviel Aufwand für Automatisierung betreiben wollen, wobei Sie gleichzeitig an die verschiedenen Schichten Ihrer Anwendung denken müssen. Tester können auf der UI-Ebene oder der API-Ebene automatisieren. Um mehr über die Vor- und Nachteile dieser Optionen zu erfahren, lesen Sie beispielsweise diesen Artikel über die agile Testpyramide.
Eine sinnvolle Strategie besteht darin, mit der Automatisierung der Hauptfunktionalität (höchstes Risiko!) oder der wichtigsten User Story, die Sie auf der UI-Ebene testen möchten, und mit den am häufigsten verwendeten Daten zu beginnen. Dann analysieren Sie, welche Endpunkte in diesem Ablauf aufgerufen werden. Fügen Sie für jeden Endpunkt automatisierte Tests auf API-Ebene hinzu und erweitern Sie dort die Abdeckung mit verschiedenen Testdaten, wodurch interessante Kombinationen entstehen. Diese Tests lassen sich schneller ausführen, sind robuster (weniger Wartung) und laufen schneller. Ausserdem gibt es zahlreiche kostenlose Tools, um sie zu implementieren und durchzuführen, etwa Postman und SoapUI.
Erwägen Sie den Umstieg auf Open-Source-Werkzeuge
Wenn Ihre Testtool-Lizenzen sehr teuer sind, könnten Sie den Wechsel auf Open-Source-Tools in Betracht ziehen. Open-Source-Testwerkzeuge bieten heute ein hohes Mass an Flexibilität und haben einen Reifegrad erreicht, der dem kommerzieller Werkzeuge nicht nachsteht.
Mit dem beträchtlichen Wachstum der Open-Source-Gemeinschaft teilen Tausende von Beitragenden ihre Add-ons und Lösungen mit der Welt, was das Leben für jedermann viel einfacher macht.
Wenn Sie zum Beispiel heute LoadRunner für Leistungstests verwenden, könnten Sie sicher zu JMeter oder Gatling migrieren, die in mancher Hinsicht sogar besser sind.
Es darf aber nicht unterschlagen werden, dass dies in vielen Fällen eine Anfangsinvestition bedeutet, um das, was Sie in einem Tool eingerichtet haben, in ein anderes Tool zu migrieren. Aber auf mittlere bis lange Sicht wird es zu Kosteneinsparungen führen. Es gibt sogar Fälle, in denen die Migration automatisch durchgeführt werden kann: Zum Beispiel gibt es einen Konverter von BlazeMeter, der Ihnen bei der Migration von LoadRunner zu JMeter hilft.
Optimieren der Infrastruktur und Werkzeugkosten
Überprüfen Sie Lizenzen und Abonnements
In Zeiten des Überflusses kümmern wir uns nicht ganz so sehr um Ausgaben, vor allem nicht um kleine. Sie sehen ein Werkzeug, eine Mitgliedschaft, ein Abonnement für einen Dienst oder eine Zeitschrift, und Sie kaufen es oder melden sich einfach an, ohne viel nachzudenken, weil es unter einer bestimmten Schwelle liegt. Wenn man sich aber in einer Krise befindet, ist es notwendig, das Unwesentliche zu überprüfen und herauszuschneiden.
Werkzeuge sind hier ein grosses Thema. Analysieren Sie die tatsächliche Nutzung der Werkzeuge, für die Sie bezahlen, und passen Sie vielleicht ein Abo an, so dass es wieder Ihren Bedürfnissen entspricht. Prüfen Sie beispielsweise, welche Funktionen Sie routinemässig nutzen und welche nicht und ob es ein kostengünstigeres Abo gibt, das die meisten der von Ihnen benötigten Funktionen abdeckt.
Überprüfen Sie die Verwendung von virtuellen Maschinen in der Cloud
Möglicherweise verwenden Sie Cloud-basierte virtuelle Maschinen, z. B. Instanzen von Amazon oder Azure, die in irgendeiner Weise optimiert werden könnten. Allenfalls reicht eine Instanz für zwei wenig belastete Systeme, oder Sie schalten diejenigen aus, die Sie nur wenige Male im Monat verwenden.
Optimieren der Schulungskosten
Ermutigen Sie zum internen Wissensaustausch
Bei SwissQ achten wir sehr darauf, wie wir unsere Mitarbeiter ausbilden. Für uns ist dies ein wichtiger Teil unserer Kultur und wir arbeiten ständig daran, unseren Mitarbeitern dabei zu helfen zu wachsen. Bei der Einstellung von neuen Mitarbeitenden messen wir Potenzial und Einstellung einen grossen Wert zu, da wir das Training ziemlich gut im Griff haben. Viele von uns haben Erfahrung im Unterrichten im Rahmen der SwissQ Academy.
Unserer Überzeugung folgend, dass Juniors viel von erfahreneren Teammitgliedern lernen können, streben wir an, dass ihre Ausbildung direkt von unseren Seniors kommt. Das hilft uns, die Kosten für externe Schulungen zu senken, und ermöglicht es den Senioren auch, wichtige Fähigkeiten wie Kommunikation, Führung, Sprechen in der Öffentlichkeit usw. zu entwickeln. Derzeit entwickeln wir eine Learning Journey, die einen «manuellen» Tester zum Testautomatisierer ausbildet. Darin sind SwissQ-eigene und Xebia-Anteile enthalten.
Optimieren der Prozesskosten
Nicht zuletzt führen Ineffizienzen in den Prozessen zu Verschwendung – eine Verschwendung von Zeit und Geld. Hier also einige Möglichkeiten, wie Sie Ihre Prozesse verbessern könnten:
- Finden Sie im Entwicklungsprozess diejenigen Schritte, die Wartezeiten oder Engpässe, Abhängigkeiten, unnötige Anhäufungen usw. verursachen.
- Analysieren Sie die Kommunikationskanäle und finden Sie möglicherweise auftretenden Probleme (es gibt immer Kommunikationsprobleme), um Wege zur Verbesserung und Klärung zu finden und so später resultierende Nacharbeit, Fehler usw. zu vermeiden.
- Einen agilen Ansatz wählen. Dies impliziert das Vermeiden langer Entwicklungszyklen, die ohne frühes Feedback ablaufen. Streben Sie kurze Iterationen an und überprüfen Sie früh und häufig mit Benutzern oder Kunden, ob Sie die gestellten Erwartungen erfüllen. Führen Sie in jeder Iteration retrospektive Analysen durch; finden Sie heraus, wie gut das Team gearbeitet hat, mit dem Ziel, in Zukunft besser zu werden.
- Führen Sie eine Ursachenanalyse wiederkehrender Fehler durch; nicht nur, um an der Lösung dieser Probleme an sich zu arbeiten, sondern auch, um das "Warum" dahinter zu verstehen und sie in Zukunft zu vermeiden.
Falls erforderlich: auslagern der Softwaretests
Outsourcing ist ideal für Unternehmen, die sich auf ihre Kernkompetenzen konzentrieren müssen. Wenn Ihr Team in seinen Testbemühungen nicht sehr reif ist oder Ihr Software-Qualitätsprogramm und Ihre Entscheidungen nicht die gewünschten Ergebnisse liefern, kann es ratsam sein, externe Hilfe in Anspruch zu nehmen, anstatt den Zeitaufwand mit ineffizienten und ineffektiven Prozessen zu verlängern.
Wenn Sie intern nicht über ausreichende Ressourcen oder Fähigkeiten verfügen, kann Auslagern – von Insourcing bis Offshoring – aufgrund der Einsparungen bei den Gemeinkosten eine bessere Option sein als jemanden direkt einzustellen. Ein ernstzunehmender Outsourcing-Partner wird auch schnell startklar sein und fähig sein flexibel und nahtlos hoch- oder herunterzufahren. Darüber hinaus kann as Auslagern einen Mehrwert erzielen, weil Sie vom kollektiven Fachwissen des gesamten Partnerunternehmens profitieren und nicht nur von dem einen Tester, der in Ihrem Projekt mitarbeitet.
Und schliesslich kann Ihnen das Auslagern von Tests helfen, die Geschäftskontinuität aufrechtzuerhalten. Wenn Sie jemanden intern einstellen und dieser Ihr Unternehmen verlässt, oder wenn er allein für die Tests zuständig ist und Urlaub nimmt, kann es vorkommen, dass Sie in der Klemme sitzen. Im Fall, dass Sie eine andere Person finden, die die Rolle übernimmt, müssen Sie den gesamten Ausbildungsprozess von vorn beginnen. Wenn Sie aber auslagern, wird der Dienstleister mehrere Personen verfügbar haben, die bei Bedarf einspringen, und er wird den Aufwand für das Einlernen und die Ausbildung dieser Tester für Sie übernehmen.
Natürlich sprechen wir aus Erfahrung, wenn es um das Auslagern von Tests geht, denn das ist es, was unser SwissQ-Testteam engagiert leisten will. Schon von unserem neuen Crowd-Testing-Angebot gehört?
Fazit
Ich habe Ihnen Möglichkeiten gezeigt, die Kosten von Tests zu optimieren: früher testen, weil es dann günstiger ist; hauptsächlich wichtige Dinge testen (Risiko); automatisieren, wo es am effizientesten ist; Tooleinsatz auf Kosten überprüfen und weiteres. Bevor Sie eine dieser Änderungen vornehmen, stellen Sie aber sicher, dass Sie mit Ihrem Team kommunizieren, damit alle mit an Bord sind.
Wenn Sie darüber nachdenken, wie Sie mit weniger Ressourcen mehr Wirkung mit Ihren Tests erzielen könnten, wie würden Sie vorgehen? Lassen Sie es uns wissen!