Testautomatisierung – Effizienz und Qualität bei medizinischer Softwareentwicklung
Heutzutage muss gerade medizinische Software immer höheren Anforderungen gerecht werden: Performance und Effizienz aufgrund stetig steigender Datenmengen, Einhaltung von rechtlichen Vorgaben hinsichtlich höchster Sicherheitsstandards und des Datenschutzes und nicht zuletzt den steigenden Erwartungen von Nutzer:innen hinsichtlich Usability und Funktionalität.
Diese Vielfalt an Zielen führt zu einer hohen Komplexität der Software, die ohne geeignete Hilfsmittel kaum zu überschauen ist. Abgesehen davon, ist ein wichtiger Punkt die Traceability. Alle Risiken und Fehler, die in Tests entdeckt werden, müssen zurückzuverfolgen, dokumentiert und nachweisbar sein – besonders wenn das Projekt den Anforderungen der ISO 62304 unterliegt.
Aus diesem Grund sind umfangreiche Testautomatisierungen in der medizinischen Softwareentwicklung längst nicht wegzudenken.
Was kann Testautomatisierung leisten?
Automatisierte Tests erlauben häufige Wiederholungen bestehender Tests und damit die Bestätigung, dass sich das Verhalten bereits implementierter Software nicht ändert. Ein fehlerhafter Release kann damit ohne das Zutun von Menschen unterbunden werden, indem im Prozess ein erfolgreicher Testdurchlauf als notwendige Bedingung definiert wird.
Noch wichtiger ist jedoch, dass Entwickler:innen die Tests während der Implementierung wiederholt durchführen können. So erkennen sie Fehler noch während der Umsetzung und können diese beheben. Würde dieser erst ein paar Monate später, während der Benutzung auffallen, kann dies verheerende Folgen haben, besonders wenn es sich um ein Medizinprodukt handelt. Es wäre ein deutlicher Mehraufwand nötig, um die früheren Anpassungen zu untersuchen und die Ursache zu identifizieren. Durch diese parallele Ausführung von Entwicklung und Testing, wird nicht nur die Softwarequalität erhöht, sondern auch der Prozess erheblich beschleunigt.
Die Strategie der Testautomatisierung und wie viel Automatisierung überhaupt möglich ist, hängt vom jeweiligen Projekt ab. Je nach Umfang wird ein Konzept entwickelt, auf dessen Grundlage die Automatisierung basiert und die Testarchitektur beschreibt.
Gut zu wissen
Die IEC 62304 fordert eine Regressionsprüfung. Diese ist notwendig, um festzustellen, dass Änderungen von System-Komponenten nicht deren Funktionalität, Zuverlässigkeit und Leistungsfähigkeit beeinträchtigt hat. Regressiontests müssen bereits im Rahmen der Integrationsprüfung durchgeführt werden sowie bei selbst kleinsten Änderungen in der Software. Hersteller:innen müssen zudem begründen, wenn sie nach einer Änderung nicht alle Regressionstests erneut durchführen.
Sie möchten mehr darüber erfahren, wie sie die Norm IEC 62304 agil im Entwicklungsprozess nutzen können? Hier gelangen Sie zu unserem ausführlichen Beitrag.
Die Test-Pyramide
Im unteren Segment der Pyramide befinden sich in der Regel Unittests oder automatisierte Testverfahren für einzelne, gut abgrenzbare Komponenten der Software. Auf dieser Ebene sind Input und Output der zu testenden Komponenten für gewöhnlich überschaubar komplex, aber zahlreich. Sie bilden damit die Basis, worauf alle weiteren Ebenen aufbauen.
Die nächste Ebene der Pyramide, nach Mike Cohn auch Service-Ebene genannt, verwendet die Funktionen der Basis, um sinnvollen Output zu generieren. Im Gegensatz zu den atomaren Vorgängen der Basis (z.B. Abgleich von Messwerten oder Erstellen neuer Einträge), entstehen hier vollständige Vorgänge wie bspw. die Rückgabe aller Eckdaten einer Temperaturmessung. Das heißt, dass die Rückgabe eines Service zwar sehr formal ist, von einem Menschen aber durchaus verstanden werden kann.
Services sind schwieriger zu testen, da sie häufig vom Datenstand abhängen und sich hier nicht alle Eventualitäten mit Sicherheit vorhersagen lassen. Da Services außerdem die gleichen Funktionalitäten nutzen, die auch schon von Unittests abgedeckt werden, entstehen hier potenziell Dopplungen. Ein Beispiel wäre, dass Zahlen als Grad Celsius formatiert werden, was eine Basisfunktion darstellt. Da die Servicetests potenziell alle eine oder mehrere Messangaben enthalten, würde man hier mit einem Test für jeden Fall keine zusätzliche Sicherheit schaffen, müsste bei einer Anpassung der Darstellung aber nicht nur den Basistest, sondern auch alle Servicetests überarbeiten.
In der dritten Ebene, die vor allem Darstellung der Informationen und Eingabemaske darstellt (GUI), ist es sinnvoll die Tests zu reduzieren. Im Gegensatz zu den stark linear ablaufenden Prozessen der Basis-Funktionen, sind Benutzeroberflächen deutlich komplexer, da Eingaben unabhängig voneinander mit viel mehr Freiheit eingegeben werden können. Tests auf dieser Ebene können aber nur definierte Abläufe abspielen und sollten deshalb auch nur für die wichtigsten und bekannten (oder vorausgesetzten) Prozesse verwendet werden.
Einmaliger Testaufwand, dauerhaft reduzierter Entwicklungsaufwand?
Testautomatisierungen reduzieren Aufwände und Fehler, aber sie sind keine einmalige Investition, sondern fester Bestandteil der Entwicklung: Ändert sich die Software, ändern sich auch die Tests. Gegenüber manuellen Tests, wird hier „Betriebsblindheit“ durch Automatisierung aktiv vorgebeugt und der Testprozess wird weniger fehleranfällig. Da sie aber niemals alle komplexen Fälle abdecken können, muss man sie als Ergänzung zu manuellen Tests verstehen, denn sie können nur das überprüfen, wofür sie geschrieben worden sind.
Ebenso muss je nach Rahmenbedingungen des Projekts der Zeitpunkt zur Einführung der Tests angepasst werden. In der Anfangsphase von Softwareprojekten, bei denen noch viele Änderungen und Anpassungen zu erwarten sind, ist es sinnvoller erst später auf Testautomatisierungen zurückzugreifen. Bei Projekten, die bereits zu Beginn sehr strikte Anforderungen haben, kann es hingegen sogar sinnvoll sein, erst die Tests und anschließend den Code so zu schreiben. Dadurch können die Tests nach und nach erfolgreich durchlaufen, man nennt diese Herangehensweise Test-Driven-Design.
Testautomatisierung – Entscheidend ist auch der Faktor Mensch
Software-Entwickler:innen spielen bei Testautomatisierungen eine entscheidende Rolle, denn auch Testskripte können Fehler aufweisen. Das bedeutet: Testautomatisierungen sind immer nur so gut, wie diejenigen, die sie programmiert haben. Die Systeme basieren in der Regel nicht auf KI oder selbstlernenden Algorithmen, sondern auf Daten, die Entwickler:innen selbst erstellt oder aus einem bestehenden System übernommen haben. Eine Abnahme mit detaillierter Prüfung durch die Entwickler:innen und durch die Auftraggeber:innen ist zur Qualitätskontrolle weiterhin unerlässlich.
Performance und Regression
Neben der Anforderung möglichst fehlerfreie Software zu veröffentlichen, können Tests noch andere Vorgaben erfüllen. Regressiontests bspw. werden explizit dazu angelegt, um bestehende Funktionalitäten auf neue Fehler zu prüfen.
Performancetests hingegen können mit definierten und gleichbleibenden Datenmengen Verbesserung bei der Applikationsgeschwindigkeit nachweisen.
Der größte Nutzen von Testautomatisierungen ist für Unternehmen die Reduktion des Gesamtentwicklungsaufwandes. Bremsende Bug-Suchen werden frühzeitig verhindert, zugleich sind Tests eine Voraussetzung für eine übersichtliche Code-Base. Schlecht lesbarer Code ist Hauptursache für unbeabsichtigte und schwer auffindbare Fehler. Weiterhin fördert zuverlässige Software das Vertrauen in ein Unternehmen und bietet Nutzer:innen eine sichere und funktionsfähige Anwendung.
Unsere einfache Lösung für die Dokumentation Ihrer Testautomatisierungen
Bei allen Maßnahmen bezüglich Tests, ist es wichtig, die Dokumentation ordentlich durchzuführen. Automatisierte Tests haben den klaren Vorteil, dass sie in digitalisierte Arbeitsprozesse über APIs integriert werden können.
Produkte wie der BAYOOSOFT Risk Manager ermöglichen es Ihnen, mit Hilfe des Requirements Engineering Moduls, Tests zwischen Ticketsystem und Technischer Dokumentation zu synchronisieren. So kann später jeder Testlauf und sein Ergebnis in der Dokumentation wiedergefunden werden, ohne zusätzlichen Mehraufwand.
Lernen Sie uns kennen
Möchten Sie den BAYOOSOFT Risk Manager kostenlos testen? Dann nutzen Sie unser kostenloses TRIAL für 30 Tage.
Oder besuchen Sie eine Online-Produktvorstellung und lernen Sie den BAYOOSOFT Risk Manager direkt am System kennen.