Parasoft C/C++test 2022.2 unterstützt MISRA C:2012 Amendment 3 und eine Entwurfsversion von MISRA C++ 202x. Erfahren Sie mehr >>

FALLSTUDIEN

Fitch bietet hohe Codeabdeckung und Qualität für Microservices-Anwendungen

Lesezeit: 5 Minuten

PDF Herunterladen "

Fitch bietet hohe Codeabdeckung und Qualität für Microservices-Anwendungen

90%

CODE-ABDECKUNG

0 Tage

AUSFALLZEIT

+ 12%

YOY PRODUKTIVITÄT

Fitch Solutions ist ein weltweit führender Anbieter von Kreditinformationen und der Hauptvertreiber von Fitch Ratings-Inhalten. Heute verlassen sich 90 % der weltweit führenden Finanzinstitute, multinationalen Unternehmen, Regierungsbehörden und Beratungsunternehmen mit Sitz in mehr als 118 Ländern auf Fitch-Inhalte, um ihre Geschäftsentscheidungen zu treffen. Sie sind ein weltweit führender Anbieter von Finanzinformationsdiensten mit Niederlassungen in mehr als 30 Ländern.

Fitch Solutions verfolgt eine Microservice-Architektur mit über 200 Microservices. Die meisten dieser Microservices basieren auf Java Spring Boot, während einige Vue.js und C++ verwenden. Das für diese Dienste verantwortliche Team von Fitch Solutions umfasst mehr als 50 Entwickler, die auf der ganzen Welt verteilt sind.

Sehen Sie sich eine Vorschau der Fitch-Präsentation auf dem kürzlich stattgefundenen Automated Software Testing & Quality Summit an. Erfahren Sie, wie sie Abhängigkeiten für >200 Microservices verwaltet und die Codeabdeckung mit Komponententests erhöht hat.

VOLLSTÄNDIGE PRÄSENTATION HIER VERFÜGBAR >>

DIE HERAUSFORDERUNGEN

Fitch hatte drei Hauptprobleme zu lösen:

  • Ungeplante Ausfallzeiten
  • Fehlendes Feedback für Entwickler
  • Starre zweiwöchige Release-Zyklen

UNGEPLANTE AUSFALLZEIT

Im Jahr 2019 hatte Fitch 18 Vorfälle, die dazu führten, dass ihre Website aufgrund von Störungen in der Produktionsumgebung ausfiel. Diese ungeplanten Ausfälle bezogen sich entweder auf ihre eigenen APIs oder andere Produkte, die sie hosten. Achtzehn Vorfälle durchschnittlich mehr als einmal im Monat. Das sind schlechte Nachrichten für die Service Level Agreements (SLA) und ihre Kunden.

FEHLENDES FEEDBACK FÜR ENTWICKLER

Das Softwareentwicklungsteam bei Fitch Solutions ist fließend. Entwickler wechseln von Projekt zu Projekt, daher ist es üblich, dass sie an ihnen unbekannten Microservices arbeiten und dafür verantwortlich sind. Das Hinzufügen von Funktionen zu unbekanntem Code war schwierig, da es nur eine geringe Anzahl von Tests gab, um Ergebnisse zu liefern und Entwicklern zu helfen, das erwartete Verhalten zu verstehen. Darüber hinaus standen Fachexperten (KMU) häufig nicht zur Verfügung.

All diese Faktoren zusammengenommen – Entwickler wechselten häufig das Team, hatten keinen Zugang zu KMU und hatten eine geringe Testabdeckung von etwa 20 % – führten zu einem Mangel an Feedback. Die fehlenden Informationen behinderten die Fähigkeit des Teams, die Dienste am Laufen zu halten und neue Funktionen hinzuzufügen. Aus diesem Grund hat Fitch Maßnahmen ergriffen, um eine höhere Testabdeckung zu erreichen.

STARRE ZWEIWOCHEN-RELEASE-ZYKLEN

Zwei Wochen Release-Zyklen sind der Standard-Entwicklungsprozess bei Fitch. Entwickler konnten nicht nach ihrem eigenen Zeitplan veröffentlichen. Wenn die Entwicklung eines neuen Features also vor dem Ende des Bereitstellungszyklus abgeschlossen war, musste es bis zum Ende des Sprints warten, um zur QA überzugehen. Im Idealfall mussten sie in der Lage sein, ein Feature zu entwickeln und bereitzustellen, wenn es implementiert und getestet wurde. Dies würde es ihnen ermöglichen, häufiger neue Funktionen zu veröffentlichen und ihre Markteinführungszeit zu verkürzen.

DIE VORGEHENSWEISE

Fitch Solutions betrachtete diese drei großen Herausforderungen und suchte nach einem gemeinsamen Nenner für alle drei. Es stellte sich heraus, dass alle drei mit fehlenden Tests zusammenhingen, was zu einer schlechten Codeabdeckung führte. Sie beschlossen, die Codeabdeckung zu erhöhen, um sicherzustellen, dass sie ihre Microservices vollständig testen und ihren Entwicklern dabei helfen, besseren Code schneller bereitzustellen.

Eine gute Codeabdeckung auf einem Microservice bedeutet, dass die meisten, wenn nicht alle Pfade durch den Code ausgeführt werden. Das Erstellen einer Testsuite für jeden Microservice, die alle verschiedenen Funktionen abdeckt, bedeutet, dass Clients keinen ungetesteten Code offenlegen. Bei zukünftigen Änderungen geben automatisierte Regressionstests Entwicklern sofortiges Feedback, ob etwas im Code defekt ist.

Dieser Ansatz reduziert schließlich Ausfälle. Es ist effektiver und effizienter, aktuelle und neue Funktionen zu testen, bevor sie in die Produktion gehen. Dieser Ansatz half Fitch Solutions, die Abhängigkeit von ihrer QA-Gruppe zu reduzieren, um neue Funktionen bereitzustellen und zu testen und die Funktionsentwicklung vom zweiwöchigen Release-Zyklus zu entkoppeln.

EIN ZWEIFACHER ANSATZ ZUR ERHÖHUNG DER CODE-ABDECKUNG

Der von Fitch Solutions entwickelte Plan bestand darin, eine 90%ige Unit-Test-Abdeckung (insbesondere Line-Abdeckung) zu erreichen. Dies war eine große Aufgabe, da sie über 200 Microservices haben! Das Team war der Herausforderung gewachsen und ging zweigleisig vor.

Erstellen Sie viele neue Tests

Der erste Ansatzpunkt des Ansatzes bestand darin, die Testabdeckung des gesamten vorhandenen Codes rückwirkend zu erhöhen. Um das Ziel der Codeabdeckung von 90 % zu erreichen, mussten viele neue Tests erstellt werden. Dafür haben sie ein engagiertes Team zusammengestellt. Das Team war dafür verantwortlich, Unit-Tests ausschließlich zu schreiben, um die Codeabdeckung aufzubauen und die bestehenden Microservices von Fitch Solutions vollständig zu testen.

Befolgen Sie die Richtlinien für Unit-Tests

Der zweite Aspekt dieses Ansatzes bestand darin, sicherzustellen, dass Entwickler, die neue Funktionen schreiben, die Richtlinien für Komponententests befolgen und die Ziele der Codeabdeckung erreichen, wenn neuer Code geschrieben wird. Diese Richtlinien wurden im gesamten Unternehmen angewendet, damit alle Entwickler sie in die Praxis umsetzen können. Das Team führte Quality Gates ein, um die Qualität des Codes sicherzustellen, der mit dem Hauptproduktionszweig zusammengeführt wurde.

EINNAHME EINES INTEGRIERTEN JAVA-TEST-TOOLS ZUM ERREICHEN DER ZIELE

Um ihre Test-, Abdeckungs- und Qualitätsziele zu erreichen, hat Fitch Solutions eingeführt Parasoft Jtest. Sie fanden es besonders nützlich, sowohl die Code-Coverage-Funktionen als auch die Unit Test Assistent in Parasoft Jtest. Wenn die Entwickler neue Funktionen schrieben oder Legacy-Dienste erneut testeten, maßen sie zuerst die Codeabdeckung, um zu beurteilen, wie umfangreich die bestehenden Tests waren. Sie verwendeten die Code-Coverage-Berichte von Jtest auf allen verschiedenen Ebenen, um herauszufinden, wo ihre Tests mangelhaft waren, einschließlich der Untersuchung fehlender Coverage auf Datei- und Codezeilenebene.

Der Unit Test Assistant half Fitch Solutions, die Lücke bei Unit-Tests zu schließen. Entwickler erstellten neue Komponententests mit einem Klick auf eine Schaltfläche, während sie den Mauszeiger über eine Methode im Code bewegten. Der Unit Test Assistant erstellt nach Bedarf eine Testdatei, einen Kabelbaum und Stubs/Mocks. Entwickler fügen einfach Assertionen hinzu, um das Verhalten zu überprüfen und Mocks anzupassen, und ein neuer Komponententest ist fertig.

Das gesamte Team beschleunigte die Erstellung und Durchführung von Tests mit Parasoft Jtest. Es war besonders hilfreich für ihre Junior-Entwickler, die eine Anleitung zur Erstellung von Komponententests benötigten.

LÖSUNGS-VORTEILE

Fitch Solutions ist immer noch auf dem Weg, ihre Softwaretests zu verbessern. Sie profitieren bereits von ihrer Parasoft-Lösung.

  • Eine zuverlässige Methode zum Messen und Verbessern der Codeabdeckung.
  • Beschleunigte Erstellung und Wartung von Komponententests.
  • Reduzierte Ausfallzeiten.
  • Erhöhte Entwicklerproduktivität.

DIE ERGEBNISSE

Bis zum dritten Quartal 3 verbesserte Fitch Solutions das Testen von 2020 % der Microservices auf das Ziel einer Codeabdeckung von 10 %. Obwohl sie noch auf dem Weg sind, ihre Abdeckungsziele zu erreichen, haben sie 90 Tage ohne Ausfallzeiten in ihrem Produktionssystem verbracht. Es ist ihre längste Serie seit der Einführung ihres neuen Unit-Testing-Ansatzes. Vince Recupito, Senior Software Engineer bei Fitch Solutions, sagte: „Das Spannende daran ist, dass wir 100 Tage ohne Ausfallzeiten in unserem Produktionssystem verbracht haben. Etwas, das mehr als monatlich passierte.“

Fitch Solutions hat mit einem Drittanbieter zusammengearbeitet, der sich auf die Messung der Entwicklerproduktivität spezialisiert hat. Die eingehende Analyse verwendet direkten Zugriff auf Code-Repositorys, um den Commit-Verlauf zu messen und Trends und Metriken basierend auf Entwickleraktivitäten zu finden.

Ein Diagramm, das die Entwicklerproduktivität im Zeitverlauf basierend auf der Quell-Repository-Aktivität bei Fitch Solutions zeigt.
Ein Diagramm, das die Entwicklerproduktivität im Zeitverlauf basierend auf der Aktivität des Quell-Repositorys zeigt.

Das obige Diagramm wurde aus den gesammelten Produktivitätsdaten erstellt, die die monatliche durchschnittliche Zeit zeigen, die Entwickler pro Tag mit dem Schreiben von Code verbringen.

Die Daten zeigen, dass Fitchs Team etwa zwei Stunden pro Tag damit verbrachte, nur auf einer Tastatur zu tippen und Code zu schreiben. Der Einbruch im Januar wird voraussichtlich auf Feiertage zurückzuführen sein. Der interessante Teil ist der Beginn ihrer neuen Testbemühungen im Juli.

Zu diesem Zeitpunkt ging das Team seine Legacy-Microservices durch, evaluierte und erhöhte die Codeabdeckung. Es ist auch der Punkt, an dem das Team darauf bestand, dass alle neuen Funktionen ordnungsgemäß getestet werden.

Nach diesem ersten Einbruch war das Team wieder mit der Codeentwicklung beschäftigt, und zwar mit einer um 12 % höheren Rate als im gleichen Zeitraum im Jahr 2019. Dies war ein gutes Zeichen, da die Entwickler mehr Zeit mit dem Programmieren und weniger Zeit mit Meetings verbrachten. Die Hauptursache für diese Produktivitätssteigerung war jedoch die deutliche Verringerung der Ausfallzeiten der Produktionssysteme.

„Eine der Schlussfolgerungen, die wir ziehen, ist, dass unsere Entwickler weniger Zeit damit verbringen, Produktionsprobleme zu beheben und mehr Zeit mit dem Schreiben von Code verbringen. Darüber hinaus finden die Entwickler, während die Entwickler immer mehr Tests schreiben, hoffentlich früher Fehler, bevor sie mit der QA beginnen.“

—Vince Recupito, Senior Software Engineer bei Fitch Solutions

Fitch Solutions verzeichnete nicht nur eine Reduzierung der Ausfallzeiten von Produktionssystemen, sondern auch eine Reduzierung der „Brandbekämpfung“ der Entwickler, um Produktionsprobleme zu lösen. Darüber hinaus hatte das neue Testregime mit einer beobachteten Produktivitätssteigerung von 12% nur geringe Auswirkungen auf die Entwicklerproduktivität.

Zusätzlich zu diesen Gewinnen schreiben die Entwickler von Fitch Solutions weitere Tests und finden Fehler früher, bevor sie mit der QA beginnen. Fehler früher zu finden bedeutet auch weniger Hin und Her bei der QA und insgesamt weniger Zeit im QA-Prozess.

MACH DEN NÄCHSTEN SCHRITT

Sparen Sie Ihrem Entwicklungsteam Zeit und befähigen Sie es, die Produktqualität deutlich zu verbessern. Laden Sie ein komplettes Tutorial herunter Informationen zum Einrichten, Schreiben und Ausführen von JUnit-Tests und zum Skalieren von Unit-Tests mit automatisierten Java-Tests.