Erfahren Sie, wie die Continuous Quality Platform von Parasoft dabei hilft, Testumgebungen zu steuern und zu verwalten, um zuverlässig hochwertige Software zu liefern. Für Demo registrieren >>

BLOG

Der einfache Weg, um den ROI für Java-Unit-Tests zu erhöhen

Der einfache Weg, um den ROI für Java-Unit-Tests zu erhöhen Lesezeit: 5 Minuten
Erfahren Sie, wie Sie den Aufwand für Unit-Tests um mindestens 50% reduzieren können. Mit diesen Einsparungen können Softwareteams ihre Produktivität steigern, ohne die Qualität zu beeinträchtigen, und die Lieferzeiten erheblich verkürzen.

Die Arbeit von Capers Jones ist für Softwareentwickler in jeder Branche von großem Vorteil. Er hat seine Karriere damit verbracht, die Erfolge und Misserfolge von Softwareprojekten zu untersuchen, von denen ein Großteil in den 2011er Jahren gipfelte Die Ökonomie der Softwarequalität. Obwohl Java-Entwickler in Unternehmen der Meinung sind, dass diese gesammelten Informationen sie nicht ansprechen, verpassen sie meiner Meinung nach einige wertvolle Erkenntnisse.

Hier sind einige ernüchternde Statistiken, die für Entwickler, die Scrum und die neuesten Softwaretools verwenden, genauso gelten wie für jede andere Art der Softwareentwicklung. Insgesamt werden für jeden Dollar, den die Softwareindustrie für die Entwicklung ausgibt, 50 Cent dieses Dollars für die Wartung sowie das Auffinden und Beheben von Fehlern ausgegeben. Bei den meisten Testformen werden jedoch nur etwa 35% der Fehler entfernt, sodass trotz der Bemühungen eines Teams die meisten Fehler in der Software verbleiben.

Jones war ein sehr früher Befürworter von "Shift-Left-Tests", obwohl er den Begriff möglicherweise nie verwendet hat. Das frühestmögliche Auffinden und Beheben von Fehlern (insbesondere von Fehlern in Anforderungen, Analyse und Design) im Software-Lebenszyklus ist der Schlüssel zu einer höheren Softwarequalität. Interessanterweise zeichnete sich Jones durch ein gutes Argument gegen die Cost-per-Defect-Metrik aus, die von vielen Anbietern zur Berechnung des Werkzeug-ROI verwendet wird. Wenn überhaupt, unterbietet Cost-per-Defect den ROI von Automatisierungswerkzeugen und den Testaufwand nach links.

Aktuelle Testerfolgsraten

Wir wissen bereits, dass Softwareentwickler die Hälfte ihres Entwicklungsbudgets für das Auffinden und Beheben von Fehlern ausgeben und dass die aktuellen Testmethoden immer noch zwei Drittel der Fehler in der Software belassen. Hier sind einige weitere interessante Statistiken:

  • Selbst mit den neuesten Softwareentwicklungsmethoden liegt die Fehlerbeseitigungsrate in den besten Projekten bei etwa 85%. Dies bedeutet, dass 15% der Mängel noch gefunden werden müssen und in das Endprodukt gelangen.
  • Etwa 6% der Testfälle weisen Fehler in den Testfällen selbst auf.
  • In großen Projekten sind bis zu 20% der Regressionstests Duplikate, die die Testkosten erhöhen, aber nichts zur Steigerung der Produktqualität beitragen.
  • Ungefähr 7% der Fehlerkorrekturen enthalten neue Fehler. Selbst wenn Fehler behoben werden, werden neue eingeführt.

Wie Test Automation und der Parasoft Jtest Unit Test Assistant helfen können

Wie wir in der Vergangenheit schon oft gesagt haben, handelt es sich bei Unit-Tests um notwendig, aber eine mühsame Anforderung der Softwareentwicklung. Die Testautomatisierung hilft dabei, einen Großteil der langwierigen Prozesse vom Entwickler zu entfernen. Die Erstellung und Wartung von Tests bleibt jedoch eines der Hauptprobleme, mit denen Java-Entwickler konfrontiert sind, wenn sie Unit-Tests ihres Codes durchführen. In einem previous postIch habe erläutert, wie Parasoft Jtest für die automatische Erstellung von Komponententests verwendet wird und wie die Effizienz und die Ergebnisse von Komponententests gesteigert werden können, während gleichzeitig die Komplexität der Verspottung und die Wartung von Testfällen verringert werden. Lassen Sie uns in diesem Thema die wirtschaftlichen Vorteile der automatischen Erstellung von Komponententests und die Auswirkungen auf die Testbemühungen betrachten.

In einer kürzlich von Parasoft durchgeführten Umfrage haben wir erfahren, dass die Mehrheit der Entwickler etwa 40% ihrer Zeit mit Unit-Tests verbringt. In Anbetracht eines zweiwöchigen Sprint-Entwicklungszyklus, der aus zehn Tagen besteht, sind vier Tage dem Testen gewidmet. Es ist leicht zu verstehen, warum das Testen zu einer Belastung werden kann, die die iterative und agile Softwareentwicklung verlangsamt. Darüber hinaus bedeutet die aktuelle Erfolgsquote beim Testen, dass diese Zeitspanne immer noch nicht ausreicht oder noch wichtiger ist. Es ist eine Möglichkeit erforderlich, diese Zeit zu verkürzen und gleichzeitig die Ergebnisse zu verbessern.

Wir waren auch damit beschäftigt, Daten von Kunden mit abzurufen Parasoft Jtest für Java-Tests und es ist sehr ermutigend. In Java-Entwicklungsteams ist der Aufwand für Unit-Tests um mindestens 50% gesunken. Mit anderen Worten, sie können ihre viertägigen Unit-Tests mit Jtest und dem Unit-Test-Assistenten in zwei Tagen abschließen. Diese Art von Einsparungen pro Sprint ist beeindruckend, wird jedoch noch deutlicher, wenn dies in einem typischen Projekt über viele Sprints zusammengesetzt wird. Wenn beispielsweise ein typisches Projekt alle drei Monate mit sechs Entwicklungssprints veröffentlicht wird, spart Jtest umgerechnet 1.2 Sprints oder 12 Tage Entwicklungsaufwand. Mit diesen Einsparungen können Softwareteams ihre Produktivität steigern, ohne die Qualität zu beeinträchtigen, und die Lieferzeiten erheblich verkürzen. Bessere Qualität und pünktlich (oder sogar früh) geliefert? Dies sind schwerwiegende wirtschaftliche Vorteile.

Der wahre ROI verbesserter Qualität

Für eine höhere Qualität gibt es mehr Kapitalrendite als die Kosten für die Behebung eines Defekts. Das frühzeitige Beheben eines Fehlers im Lebenszyklus ist billiger und spart Geld. Obwohl dies eine Metrik ist und selbst ausreicht, um die Investition in eine bessere Qualität zu rechtfertigen, unterbietet sie tatsächlich den ROI.

Eine der Hauptursachen für Projektverzögerungen sind fehlende Mängel und Sicherheitslücken, die in die späten Phasen eines Produktentwicklungszyklus gelangen. Natürlich ist es billiger, diese früher zu finden und zu beheben, da das Entwicklungsteam den Code immer noch im Kopf hat und nicht mit der nächsten Iteration (oder dem nächsten Projekt) fortgefahren ist.

Betrachten Sie das obige Beispiel mit einem Team von 20 Mitarbeitern, die an einem Projekt mit einer Arbeitsbelastung von 100 USD pro Stunde arbeiten, und verwenden Sie nur die Cost-per-Defect-Metrik und den Ansatz zur Berechnung des ROI. Dieses Team verwendet neue Testautomatisierungstools mit allen Vorteilen (Verschiebung der Fehlererkennung nach links) und entdeckt 20 Fehler mehr als in den vorherigen Sprints. Das frühzeitige Auffinden und Beheben dieser Fehler kann drei Stunden pro Defekt für insgesamt 6,000 US-Dollar erfordern. Das spätere Auffinden und Beheben dieser Fehler bei der Integration oder beim Testen des Systems kann den Aufwand verdreifachen und kostet 18,000 US-Dollar. Vereinfacht ausgedrückt beträgt der ROI für diesen Sprint 12,000 US-Dollar. Hört sich toll an, oder? Dies berücksichtigt jedoch nicht die Einsparung von 2 Tagen Entwicklungszeit für den Sprint für zusätzliche Einsparungen von 32,000 USD und eine Steigerung der Produktivität.

Wenn wir das Gesamtbild betrachten, können wir sehen, dass die Verkürzung der Entwicklungszeit für die gesamte Version hier den echten Geldsparer darstellt und nicht die Kosten pro Defekt. Die wirkliche Auszahlung für die Verlagerung nach links besteht darin, Projektpläne und -ziele zu erreichen oder zu übertreffen. Betrachten Sie noch einmal das obige Beispiel, aber sehen Sie sich diesmal den ROI in Bezug auf das gesamte Entwicklungsteam an, das die Veröffentlichung um 12 Tage vorzeitig beendet. Für dieses Team sind das 12 Tage mit 20 Personen, was 192,000 US-Dollar entspricht! Obwohl dieses einfache Beispiel offensichtlich erscheint, weist es darauf hin, dass der ROI von Tools auf Teamebene erzielt wird, wenn Produkte schneller auf den Markt gebracht werden, ohne die Qualität zu beeinträchtigen.

Fazit

Traditionelle Unit-Test-Methoden verbrauchen viel Zeit für die Softwareentwicklung, und die Ergebnisse dieser Ansätze müssen verbessert werden. Parasoft Jtest kann dazu beitragen, den Aufwand für Unit-Tests um 50% zu reduzieren, was sich in Bezug auf Qualität und verkürzte Sprint-Zeitpläne auszahlt.

Der ROI dieser Tools ist erheblich, wenn Sie berücksichtigen, wie stark sich Unit-Tests auf das Team und das gesamte Projekt auswirken. Im Gegensatz zur einfachen Kosten-pro-Fehler-Analyse ist es der große Gewinn, Projekte pünktlich abzuschließen und die Anforderungen an die Ziele zu erfüllen. Wenn Sie dabei Zeit und Geld sparen, wird dies viel besser.

Automatisieren Sie die Erstellung von JUnit-Tests und lieben Sie Unit-Tests

Geschrieben von

Kapil Bhandari

Kapil ist Produktmanager bei Parasoft und konzentriert sich auf Parasoft Jtest. Kapil hatte verschiedene technische Positionen inne, die vom Softwareentwickler bis zum Entwicklungsleiter reichten, bevor er zum Produktmanagement wechselte.

Erhalten Sie die neuesten Nachrichten und Ressourcen zum Testen von Software sofort.