Entdecken Sie das TÜV-zertifizierte GoogleTest mit Agentic AI für C/C++-Tests!
Details ansehen »
Whitepaper
Neugierig, was sich im Inneren befindet? Werfen Sie unten einen Blick darauf.
Hersteller von Medizinprodukten müssen die Einhaltung der FDA-Anforderungen und Kundenerwartungen über den gesamten Produktentwicklungszyklus hinweg – von der Entwicklung bis zur Bereitstellung – nachweisen. Die Norm ISO 13485 legt bewährte Verfahren für die Qualitätssicherung in Unternehmen fest, während IEC 62304 einen Rahmen für die sichere Softwareentwicklung von Medizinprodukten bietet.
Moderne Medizinprodukte sehen sich zunehmend komplexerer Software und einem starken Wettbewerbsdruck durch Unterhaltungselektronikhersteller gegenüber, die in den Gesundheitsmarkt eintreten. CI/CD- und DevOps-Praktiken helfen Herstellern, Kosten zu senken und die Markteinführungszeit zu verkürzen, ohne dabei die Qualität zu beeinträchtigen.
Die Automatisierung von Softwaretests ist unerlässlich – die Integration von statischer Analyse, Unit-Tests und Codeabdeckung in die CI-Pipeline verbessert die Effizienz und die Softwarequalität erheblich.
Die Automatisierung des Build- und Deployment-Prozesses ist für eine echte kontinuierliche Integration unerlässlich, da manuelle Methoden zu langsam und mühsam sind. CI nutzt zwar ein zentrales Code-Repository und automatisierte Builds, um Integrationsprobleme schnell zu beheben, doch ein wesentlicher Engpass entsteht in der Testphase.
Das Testen ist zeitaufwändig und schwer abzuschätzen, ein Problem, das durch manuelle Methoden noch verschärft wird. Obwohl Testautomatisierung unerlässlich ist, argumentiert das Whitepaper, dass die bloße Durchführung automatisierter Tests nicht ausreicht – ein Punkt, der weiter untersucht werden soll.
In der Softwareentwicklung für Medizinprodukte steht die Einführung von CI/CD vor besonderen Herausforderungen, die über die typische Anwendungsentwicklung hinausgehen. Dazu gehören strenge Sicherheits- und Zuverlässigkeitsanforderungen, jahrzehntelange Produktlebenszyklen und Einschränkungen der eingebetteten Hardware. Insbesondere automatisierte Tests gestalten sich schwierig, da die Durchführung und Beobachtung von Tests auf Zielgeräten komplex ist und Rückverfolgbarkeits- sowie Konformitätsdaten benötigt werden.
Lösungen wie Parasoft C/C++test überwinden diese Hürden durch ein optimiertes Testframework mit minimalem Speicherbedarf, anpassbarem Quellcode und Integrationen mit eingebetteten Compilern und IDEs. Dies ermöglicht automatisierte Regressionstests, Verhaltensverifizierung und Remote-Ausführung und erlaubt es Teams in der Medizintechnik, die in anderen Bereichen üblichen Automatisierungsvorteile zu nutzen und gleichzeitig strenge regulatorische Standards zu erfüllen.
Das Testen von Software für Medizinprodukte ist zeitaufwändig, insbesondere die nach jeder Änderung erforderlichen Regressionstests. Die Automatisierung von Regressionstest-Suites bietet erhebliche Zeit- und Kosteneinsparungen.
Parasoft C/C++test bietet ein optimiertes Testframework mit minimalem Binärspeicherbedarf, das als anpassbarer Quellcode für plattformspezifische Modifikationen bereitgestellt wird.
Die Lösung bietet dedizierte Integrationen mit Embedded-Compilern (GNU GCC, IAR, ARM, Intel, Keil, Wind River, Green Hills) und branchenüblichen IDEs (Eclipse, VS Code, Green Hills Multi, Wind River Workbench, IAR EW, ARM MDK). Sie unterstützt die Erstellung von Regressionstest-Baselines, die alle Ergebnisse automatisch verifizieren und Tests automatisch ausführen, um Funktionsänderungen zu erkennen.
Containerisierte Bereitstellungen werden für Entwicklungsteams von Medizinprodukten, die komplexe Toolchains verwalten, zum Standard. Die Teams haben mit der Synchronisierung von Upgrades, der Reaktion auf Sicherheitspatches, der Gewährleistung der Toolchain-Konsistenz, der Versionierung von Umgebungen für zertifizierte Produkte, der Unterstützung von Audit-Anforderungen und dem Onboarding von Entwicklern zu kämpfen.
Parasoft C/C++test Professional lässt sich einfach konfigurieren und mit Kompilierungs-Toolchains und in Containern bereitgestellten Ausführungsumgebungen verwenden. Die Tools werden in einem einzigen komprimierten Archiv bereitgestellt, um die Containerinitialisierung zu vereinfachen und unterstützen Linux- und Docker-Container.
Als Kommandozeilen-Tool eignet es sich für Container-Bereitstellungen und wird zusammen mit Compiler und Build-System für CI/CD und lokale Scans bereitgestellt. Das Tool greift auf containerisierte Compiler (GNU GCC) und Laufzeitumgebungen mit separaten Docker-Containern für Compiler-/Build-Tools und die Ausführungsumgebung zu.
Fehler werden frühzeitig aufgedeckt, sodass sie einfacher und kostengünstiger behoben werden können. Die frühzeitige Erkennung von Fehlern im Entwicklungszyklus reduziert die Kosten im Vergleich zur Entdeckung in späteren Phasen exponentiell.
Neue Funktionen können getestet werden, um ihre Auswirkungen auf bestehenden Code zu ermitteln. Nach jeder Iteration werden der Regressionstestsuite neue Tests hinzugefügt, wodurch eine umfassende Validierung entsteht.
Das Produkt wird schrittweise verbessert, indem neue Funktionen hinzugefügt und getestet sowie Fehler behoben werden. Qualität und Sicherheit werden durch kontinuierliche Weiterentwicklung gewährleistet und nicht nachträglich hinzugefügt.
Kontinuierliches Testen und Bereitstellen sind wesentliche Bestandteile des kontinuierlichen Entwicklungsprozesses. Integration allein ist ohne kontinuierliches Testen und Bereitstellen nicht effektiv.
Der Shift-Left- Ansatz integriert Qualitäts-, Sicherheits- und Schutztests frühzeitig in die Entwicklung, um Probleme zu beheben, solange sie noch kostengünstig und risikoarm sind. Dies erfordert, dass Qualität von Anfang an in die Entwicklung integriert wird. Wichtige Empfehlungen für die Umsetzung in CI/CD umfassen die Verbesserung der Testautomatisierung , die Erhöhung der Codeabdeckung, die Automatisierung der bidirektionalen Rückverfolgbarkeit und die Überwachung aller Commits.
Obwohl die Testautomatisierung für die Qualität und Sicherheit von CI/CD unerlässlich ist, besteht ihre größte Herausforderung darin, die zu testenden Aspekte auszuwählen, da umfassende Tests nicht praktikabel sind. Um die Testpipeline zu beschleunigen, müssen Teams strategisch nur die Tests automatisieren, die die Codeabdeckung maximieren und Änderungen verifizieren, um effizientes, kontinuierliches Testen zu ermöglichen.
Die Codeabdeckung misst, wie viel Produktionscode während automatisierter Tests ausgeführt wird. Je nach Klassifizierung kann die Software für medizinische Geräte Metriken für Anweisungs-, Verzweigungs- und MC/DC-Abdeckung (modifizierte Bedingungs-/Entscheidungsabdeckung) erfordern, um eine umfassende Validierung zu gewährleisten.
Parasofts Coverage Advisor nutzt eine fortschrittliche statische Codeanalyse (Daten- und Kontrollflussanalyse), um die Werte für Eingabeparameter zu ermitteln, die zur Ausführung bestimmter, nicht abgedeckter Codezeilen erforderlich sind. Er berechnet Vorbedingungen für Funktionsparameter, globale Variablen und externe Funktionsaufrufe und präsentiert Lösungen für die vom Benutzer ausgewählten Zeilen. Diese Werte generieren neue Unit-Testfälle und steigern so die Produktivität der Entwickler bei der Erstellung von Unit-Tests zur Verbesserung der Testabdeckung.
Die Rückverfolgbarkeit von Anforderungen ermöglicht es, den Lebenszyklus einer Anforderung sowohl vorwärts als auch rückwärts durch Entwicklung, Spezifikation, Bereitstellung und kontinuierliche Optimierung zu beschreiben und zu verfolgen. Sie stellt sicher, dass genau nachvollziehbar ist, was entwickelt wird – und gewährleistet so, dass die Software die gewünschte Funktion erfüllt und nur das entwickelt wird, was tatsächlich benötigt wird.
Viele Softwareanforderungen an Medizinprodukte basieren auf Sicherheitsanalysen und Risikobewertungen. Das System muss die vorgesehenen Funktionen erfüllen und Risiken minimieren, um die Verletzungsgefahr zu reduzieren. Die Dokumentation und der Nachweis, dass diese Sicherheitsfunktionen vollständig implementiert und getestet wurden, erfordern Rückverfolgbarkeit.
Die Nachverfolgbarkeit von Testdaten erfordert in jedem Umfang Automatisierung, insbesondere in CI/CD-Pipelines, da die manuelle Nachverfolgbarkeit jeden Iterationsschritt verlangsamen würde. Integrierte Softwaretest-Tools vervollständigen die Verifizierung und Validierung durch automatisierte, bidirektionale Nachverfolgbarkeit zu ausführbaren Testfällen, einschließlich der Rückverfolgung von Erfolgs-/Fehlerergebnissen zum Quellcode, der die Anforderungen implementiert.
Kontinuierliche Qualitätssicherung in CI/CD-Pipelines erfordert die Überwachung aller Eingaben in den Software-Build. Wenn Entwickler nach Änderungen Code einchecken, wird die CI-Pipeline ausgelöst, was Kompilierungs-, Build- und Testzyklen zur Folge hat. Entspricht der Code nicht den Codierungsstandards oder schlagen Tests fehl, wird der Code bzw. der Branch nicht in den Master-Branch übernommen, um die Codequalität im Master-Branch jederzeit zu gewährleisten.
DevSecOps-Methoden nutzen Automatisierung und kontinuierliche Prozesse gemeinsam mit DevOps, um kollaborative Entwicklungszyklen zu etablieren. DevSecOps verlagert die Sicherheit auf den frühen Entwicklungsschritt, was für eingebettete sicherheitskritische Software von entscheidender Bedeutung ist.
Moderne DevSecOps-Initiativen erfordern die sofortige und kontinuierliche Bewertung der mit Release-Kandidaten verbundenen Risiken. Kontinuierliches Testen innerhalb von CI/CD-Pipelines liefert automatisiertes, unaufdringliches und sofortiges Feedback zu Sicherheitsrisiken. So werden Entwicklungsteams bei der Einhaltung der Sicherheitsanforderungen unterstützt und Manager können fundierte Entscheidungen zur Optimierung von Release-Kandidaten treffen.
Kontinuierliche Integration und Bereitstellung spielen eine entscheidende Rolle in der Entwicklung von Medizinprodukten. Die Umstellung von einem Wasserfallmodell auf CI/CD und agile Entwicklungsmethoden zahlt sich durch Risikominderung sowie Qualitäts- und Sicherheitsverbesserungen aus. Sicherheit hat für Entwickler von Medizinprodukten höchste Priorität, und CI/CD ermöglicht DevSecOps, indem Sicherheitsanforderungen und -kontrollen in alle Phasen der Entwicklungspipeline integriert werden.
Container eignen sich ideal für CI/CD und unterstützen schnelle Bereitstellung und Portabilität in verschiedenen Host-Umgebungen mit Versionsverwaltung und zentralisierter Steuerung. Containerisierte Entwicklungsumgebungen sind wichtig für die sichere Entwicklung in DevSecOps-Pipelines, da sie eine reproduzierbare Anwendungsumgebung mit integrierten Sicherheitskontrollen ermöglichen.
Das Testen ist mit Abstand die zeit- und ressourcenintensivste Aktivität in der Entwicklung von Medizinprodukten. Kontinuierliches Testen ist ein notwendiger Bestandteil einer reibungslos funktionierenden CI/CD-Pipeline und ermöglicht es, Tests früher im Lebenszyklus zu integrieren. Durch den gezielten Einsatz von Automatisierung und die Fokussierung auf die risikoreichsten Bereiche lässt sich das Testen so optimieren, dass es kontinuierliche Prozesse weniger beeinträchtigt. Kontinuierliches Testen erfordert Tools zur Automatisierung und Optimierung – Tools, die eine höhere Codeabdeckung , intelligente Testausführung und bidirektionale Rückverfolgbarkeit gewährleisten.
Bereit, tiefer einzutauchen?