Branchen
Clever angelegte Tests für Produkte und Systeme werden gerade heute immer wichtiger. Verantwortlich dafür sind nicht zuletzt die wachsende Anzahl von Schnittstellen, die sich durch immer mehr Features und ausgeprägter Flexibilität ergeben. Helbling hat seine Test-Methodik und Tool-Kompetenz in Kundenprojekten in den letzten Jahren stark verfeinert. Der Fokus liegt dabei auf gezielten Tests, die die Qualität und Resilienz von Systemen prüfen.
Was haben Diesel-Gate, eine gegroundete Flugzeugflotte und ein Zeichen-ersetzender Scanner gemeinsam? Angemessenes gesamtheitliches Testen der involvierten Produkte und Systeme hätte wahrscheinlich den immensen Image-Schaden für die Hersteller verhindert.
In einer Welt, in der Systeme immer komplexer werden – von einzelnen Geräten bis hin zu vernetzten Maschinen – steigen neben den Fehlerrisiken auch die Anforderungen an die Stabilität und Resilienz. Zahlreiche Features in Kombination mit ausgeprägter Flexibilität eines Produkts führen zu einer wachsenden Anzahl an Schnittstellen. Wie stellt man in einem solch komplexen System sicher, dass es wie gewünscht funktioniert, robust bleibt und die hohen Kundenerwartungen erfüllt?
Nebst Methodik, Entwicklungsprozessen und Reviews spielen Tests eine wichtige Rolle. Je nach Eigenheiten eines Systems gibt es Unterschiedliches zu beachten und Testabstraktionen müssen spezifisch definiert werden. Um Tests effizient und stabil umzusetzen, ist neben der Fertigkeit zum Schreiben von hochwertigem Code und zum Entwickeln von Hardware auch eine breite Erfahrung in weiteren Bereichen relevant: Schnittstellen-Design, Softwarearchitektur, Tools für Unit-, Integrations- und User Interface Tests, Build-, Deployment und Test-Automatisierung, sowie dedizierter Testsystem-Hardware. Helbling vereinigt diese Kompetenzen unter einem Dach. Nebst der Produkt-Entwicklung bietet Helbling die Entwicklung von Testsystemen und Testautomation an, und kann dabei auf eine langjährige Erfahrung aus interdisziplinären Projekten zurückschauen.
Gezieltes Testen gewährleistet die Qualität bei vertretbarem Aufwand
Stellen Sie sich vor, ein System wird entwickelt und erst beim Einsatz im Feld treten kritische Fehler auf. Solche Fehler können sich als kostspielig, rufschädigend, nicht korrigierbar oder sogar lebensgefährlich erweisen. Im schlimmsten Fall muss das Produkt vom Markt genommen werden. Deshalb sind Tests – in unterschiedlicher Granularität und zu verschiedenen Zeitpunkten – essenziell. Durch Simulationen oder Nachbildungen der entsprechenden Anwendungsfälle und der realen Einsatzbedingungen können Schwächen und Fehler frühzeitig erkannt und behoben werden. Dabei werden nicht nur der Gut-Fall, sondern auch Fehler wie menschliches Versagen oder technische Störungen einbezogen.
Eine hundertprozentige Testabdeckung zu erreichen, würde immense Ressourcen erfordern. Daher ist es wichtig, gezielt und effizient zu testen. Durch Helblings ausgefeilten Methoden der Risikoabschätzung für die Eintrittswahrscheinlichkeit von Fehlern und deren Tragweite können die passenden Massnahmen identifiziert und unnötige vermieden werden. Massnahmen sind nicht nur Testfälle, sondern beispielsweise Änderungen im Design oder in Prozessen. Dieser systematische Ansatz erlaubt die Reduktion auf die wesentlichen Tests.
Die Testpyramide – eine strukturierte Herangehensweise
Eine gut strukturierte Teststrategie umfasst mehrere Ebenen – von Unit-Tests über Komponenten- und Schnittstellen-Tests bis hin zu Gesamtsystem-Tests. Diese Struktur ermöglicht eine frühzeitige und gut lokalisierte Fehlererkennung, eine gute Wartbarkeit der Tests sowie eine klare Zuweisbarkeit von Projekt-Rollen zu Tests.
Die Testpyramide in Abb. 1 stellt die umfassende Teststruktur dar unter Berücksichtigung der Abstraktionsebenen von der Hardware bis zur Cloud.
Voraussetzung: Testbarkeit und zuverlässige Testausführung
Eine gut strukturierte System- und Softwarearchitektur mit klaren Schnittstellen sowie die Berücksichtigung der Testbarkeit aller Komponenten bereits ab der Entwurfsphase ermöglichen effektives Testen. Mithilfe einer gut definierten Branching-Strategie und einem passenden Merge- und Release-Management kann sichergestellt werden, dass Tests optimal im Entwicklungsprozess integriert und auf allen Stufen automatisierbar sind.
Die Automatisierung, die für eine zuverlässige, stabile und kosteneffiziente Testausführung unerlässlich ist, wird typischerweise auf einem Buildserver oder einer DevOps-Plattform implementiert. Diese erstellen in Pipelines die Software-Artefakte, testen sie auf verschiedenen Zielplattformen, und geben sie im Erfolgsfall als neues Release frei. Für voneinander unabhängige Testausführungen sowie für die zuverlässige Bereitstellung, das sogenannte Deployment, sind insbesondere im Cloud-Bereich oder beim Einsatz von Containern die Werkzeuge von «Infrastructure as Code» (IaC) essenziell. IaC beschreibt die zur Ausführung benötigte Infrastruktur in Form von Code, zum Beispiel für Server, Datenbanken oder Netzwerkeinstellungen. Das erlaubt, ganze Entwicklungs- und Test-Umgebungen schnell und konsistent aufzusetzen und zu verwalten. Dadurch lassen sich etwa auch nicht-funktionale oder destruktive Tests wie Stress-Tests, Penetration-Tests oder Recovery-Tests wiederholbar, skalierbar, zeit- und kosteneffizient durchführen.
Durch den gezielten Einsatz verschiedener spezialisierter Tools für Traceability und Reporting kann zudem sichergestellt werden, dass die Anforderungen an das Produkt in den Tests berücksichtigt und die Tests rückverfolgbar ausgeführt werden. Zudem können die Testresultate auf eine verständliche Art für ein breiteres Publikum zugänglich gemacht werden.
Komponenten- und Schnittstellen-Tests: Integration im Fokus
Bei diesen Tests geht es um die Integration von ein, zwei oder mehreren Komponenten, die als Blackbox einzeln oder im Zusammenspiel über die Schnittstellen geprüft werden. In der Realität noch nicht getestete oder verfügbare Komponenten werden simuliert. Durch klar definierte Schnittstellen und die Simulation nicht getesteter Komponenten können die Komplexität reduziert und Fehler schneller identifiziert werden.
In der Factbox weiter unten sind drei konkrete Beispiele dargestellt. Sie beziehen sich auf die obige Testpyramide und zeigen die Bandbreite der Projekte, die von Helbling umgesetzt wurden und auch die Vorteile der strukturierten Herangehensweise in der Praxis.
Zusammenfassung: Spezifische Methodik für die effiziente Qualitätssicherung
Gezielte und strukturierte Tests sind der Schlüssel zur Sicherstellung der Qualität und Resilienz komplexer Systeme. Mit einer erprobten Methodik, interdisziplinär zusammengesetzten Teams und aktuellen Tools unterstützt Helbling Kunden umfassend dabei, die Resilienz und Stabilität von Produkten zu sichern. Überprüft wird dabei sowohl die kleinste Komponente als auch das Gesamtsystem.
Autoren: Daniela Biberstein, Walter Pirrotta, André Wangler
Hauptbild: Helbling. Generiert mit Midjourney