Success Story: Automatisierte Validierung einer Continuous-Integration-Toolkette
in Zusammenarbeit mit Fresenius Medical Care
Die Dialysegeräte von Fresenius Medical Care enthalten zunehmend komplexere Software. Um diese qualitativ hochwertig in immer kürzeren Release-Zyklen bereitzustellen, setzt Fresenius Medical Care auf das Konzept der Continuous Integration (kurz: CI). Die dafür erforderliche Toolkette wurde durch sepp.med validiert.
„Die Validierung durch sepp.med war für uns der optimale Weg, unsere Werkzeugkette abzusichern.“
Horst Bachmann, Director Software, Procedures, Electronical Engineering
Die Aufgabe
Seit 1979 hat Fresenius Medical Care die medizinische Erfolgsgeschichte der Behandlung chronischer Nierenerkrankungen wesentlich mitgeschrieben. Die kontinuierliche Weiterentwicklung der Produkte stellt gerade die Softwareentwicklung vor die Herausforderung, qualitativ guten Code in immer kürzeren Release-Zyklen zu erzeugen. Dies ist ohne das Konzept der kontinuierlichen Integration kaum mehr vorstellbar. „Continuous Integration“ (CI) bedeutet, dass die zu entwickelnde Software möglichst häufig kompiliert, gebaut und im Anschluss daran geprüft wird. So erhalten die Entwickler schnell Feedback über durchgeführte Änderungen.
Die erforderliche Werkzeugkette enthält neben der eigentlichen Build-Umgebung eine Reihe von Software-Werkzeugen, die unterschiedliche Prüfungen durchführen. Dazu gehören Tools zur statischen und dynamischen Code-Analyse sowie das Framework für die automatisierten Unit-Tests. Für den Einsatz im regulierten Umfeld muss diese Werkzeugkette validiert werden.
Das Vorgehen
Für die Validierung beauftragte Fresenius Medical Care die sepp.med gmbh. sepp.med führte zunächst eine Bestandsaufnahme der bestehenden Werkzeuge durch. Diese „Inventur“ ergab eine Liste von zwanzig Werkzeugen, die je nach Projekt zum Einsatz kommen können. Des Weiteren klärte sepp.med in einer Reihe von Stakeholder-Interviews die geplante Verwendung der CI-Toolkette. So wurde u.a. ermittelt, welche Programmiersprachen relevant sind, welche Werkzeuge verwendet werden und wie die Anwendungsfälle aussehen. Diese wurden graphisch als UML-Diagramm dokumentiert und in Aktivitätsdiagrammen weiter detailliert.
Parallel dazu führte Fresenius Medical Care eine Risikoanalyse (FMEA) durch und identifizierte eine Reihe von Maßnahmen. Die Risikoanalyse bildete zusammen mit den in den Interviews ermittelten Workflows die Grundlage für die Anforderungsspezifikation der Toolkette.
Besonders im Fokus stand die Validierung der MISRA C++ Regeln und der von Fresenius spezifizierten Ausnahmen, die nicht zu Fehlermeldungen führen dürfen. Für die zu validierenden Compiler wurden verschiedene Szenarien geprüft, darunter die Konfiguration, der Abbruch im Fehlerfall, mögliche Warning Levels und natürlich das Erzeugen der Binaries. Darüber hinaus spezifizierte sepp.med im Validierungsplan Workflow-Tests, die sich an den ermittelten Abläufen orientierten.
Bereits zu Beginn des Projektes war klar, dass ein Teil der Tests automatisiert werden sollte. Erstens wäre es zeitraubend und fehlerträchtig gewesen, die verschiedenen Testdaten „per Hand“ zuzuweisen und die Log-Dateien im wörtlichen Sinne „lesend“ auszuwerten. Zweitens war die Menge der Testdaten händisch nicht handhabbar, da allein mehrere hundert MISRA-Regeln verifiziert werden mussten. Drittens war absehbar, dass eine größere Anzahl der Tests erneut durchgeführt werden muss. sepp.med evaluierte verschiedene Alternativen. Die Wahl fiel schließlich auf das Testautomatisierungs-Framework Spock, das Testdurchführungs-Werkzeug gradle und die Programmiersprache Groovy. Die zentrale Steuereinheit bildet der Jenkins-Server, über welchen das Testprojekt ausgecheckt und konfiguriert wird.
Die Anforderungen, Testfälle und die Testdurchführung der manuellen und automatisierten Tests durch sepp.med wurden im ALM-Werkzeug Polarion dokumentiert. Zum Abschluss erstellte sepp.med einen Validierungsbericht.
Die Erfolgsfaktoren
- Die Anforderungsermittlung
Zu Beginn wurden die Toolkette, die anzuwendenden Prozessvorgaben und Richtlinien sowie die genauen Anforderungen geklärt. Diese Zeit war gut investiert. Anforderungen an das zu validierende System, die vorher nicht bewusst waren, wurden ermittelt – und somit auch implementiert. Andere Anforderungen wurden wieder verworfen, weil sie sich als nicht sinnvoll herausstellten. - Die Modellierung
Die erstellten UseCase- und Aktivitätsdiagramme waren einerseits sehr hilfreich, die ermittelten Ergebnisse zu kommunizieren, andererseits dienten sie zur Festlegung des Validierungsumfangs und damit auch zur Abgrenzung von anderen Validierungsprojekten.
- Die Automatisierung
Das Testautomatisierungskonzept konnte mit großem Erfolg in einem Folgeprojekt übernommen werden. Grundlage dafür war die textuelle Spezifikation des erwarteten Systemverhaltens, wie sie im Behavior-Driven Development (BDD) üblich ist und durch Spock unterstützt wird. Damit reduzierte sich z. B. die Prüfung der zahlreichen MISRA-Regeln auf das simple, leicht verständliche Schema:- Given [Vorbedingung]
- Expect [Verletzung der MISRA-Regel wird entdeckt]
- Where [MISRA-Regel]
Mittels dieses BDD-Schemas können die erstellten Basisskripte jederzeit neu kombiniert und somit neue Testfälle mit geringem Aufwand spezifiziert und implementiert werden.
Das Ergebnis
Für die statische Codeanalyse wurden Testdaten verwendet, die vom Hersteller des Tools zur Verfügung gestellt wurden. Daher war eigentlich zu erwarten, dass der Test der MISRA-Regeln problemlos laufen würde. Es stellte sich jedoch heraus, dass einige MISRA-Regelverstöße nicht korrekt detektiert wurden. Damit zeigte sich unerwartet deutlich, wie wichtig die Tool-Validierung tatsächlich ist.
Fazit
Obwohl – bzw. gerade weil – zunächst keine Freigabe der CI-Toolkette erfolgte, betrachten Fresenius Medical Care und sepp.med die Validierung als Erfolg. Zum einen ist es gelungen, Fehler durch blindes Vertrauen in Tools zu vermeiden. Zum anderen wurde die Grundlage für weitere automatisierte Validierungen gelegt. Die automatisierten Tests wurden seit Abschluss des ersten Durchlaufs bereits mehrfach wiederholt. Inzwischen ist geplant, auch die Workflow-Tests zu automatisieren. Auf diese Weise wird es möglich, jeden neuen CI-Server vor seinem Einsatz innerhalb eines halben Tages vollständig zu prüfen.
Fresenius Medical Care
Fresenius Medical Care ist der weltweit führende Anbieter von Produkten und Dienstleistungen für Menschen mit chronischem Nierenversagen, von denen sich weltweit rund 3,2 Millionen Patienten regelmäßig einer Dialysebehandlung unterziehen. In einem weltweiten Netz aus mehr als 3.700 Dialysekliniken betreut das Unternehmen mehr als 320.000 Patienten.
Fresenius Medical Care ist der weltweit führende Anbieter von Dialyseprodukten wie Dialysegeräten, Dialysatoren und damit verbundenem Einweg-Zubehör und bietet Produkte und Dienstleistungen entlang der gesamten Dialyse-Wertschöpfungskette aus einer Hand an. Mit innovativen Produkten und Behandlungskonzepten auf qualitativ höchstmöglichem Niveau arbeitet Fresenius Medical Care kontinuierlich an der Verbesserung der Lebensqualität nierenkranker Patienten.
Erfolgreiche Projekte:
Erkunden Sie unsere Customer Journeys
Jedes einzelne Projekt hat seine eigene Erfolgsgeschichte – mit vielen großartigen persönlichen und unternehmerischen Erfahrungen, die uns zu dem machen, was wir heute sind. Danke an unsere Kunden für ihr Vertrauen.
Wie dürfen wir Sie bei der Validierung unterstützen?
Profitieren Sie von der Expertise unserer Experten.
„Der erste Schritt ist der Wichtigste.
Sprechen Sie mich an!“Tel.: +49 9195 931–253