Zur Erfüllung bestimmter IEEE-Normen sind mittlerweile Stabilitäts- oder Robustheits-Tests zum Standard geworden. Aber was genau sind Stabilitätstests, und wie können diese zusammen mit Testautomatisierung dafür sorgen, dass ein zuverlässiges Softwaresystem entsteht?
Stabilitätstests sind Methoden zur Qualitätssicherung, die sich auf das Testen der Robustheit von Software konzentrieren. Tools zur Testautomatisierung können unter Zuhilfenahme solcher Robustheitsprüfungen die Qualität ihrer Software sicherstellen.
Wenn sich die meisten Menschen hinter das Steuer eines Autos setzen, machen sie sich keine Sorgen, dass die Bremsen versagen könnten. Sie machen sich auch keine Sorgen über Verletzungen aufgrund einer Fehlfunktion, wenn ihr Kind ein neues Spielzeug bekommt. Tatsächlich denken die meisten Menschen im Alltag an irgendwelche Systemstörungen. Das liegt daran, dass sich ein Softwareentwickler oder ein Qualitätsprüfer mit Qualitätsfragen beschäftigt hat.
Besteht das Ziel darin, hochwertige und zuverlässige Softwaresysteme zu liefern, dann müssen Tests durchgeführt werden. Je zuverlässiger das Produkt ist, desto sicherer ist es. Eines der Verfahren zum Testen von Qualität und Zuverlässigkeit sind die sogenannten Stabilitätstests. Dabei wird geprüft, inwieweit ein System auch bei außergewöhnlichen Eingaben oder stressigen Umgebungsbedingungen korrekt funktioniert. Wenn Sie mit dieser Art von Tests noch nicht vertraut sind, sollten Sie sich anschnallen.
Was bedeutet Stabilität bei Software-Qualitätstests?
Für die Qualitätssicherung zuständige Entwickler haften für einen Systemfehler, oder schlimmer noch, wenn dieser Fehler eine Verletzung oder Schaden verursacht. Neben anderen während des Validierungsprozesses durchzuführenden Tests, wie z. B. Benchmark-Testing, sollten die Entwickler das System auch auf seine Stabilität überprüfen.
Die Zuverlässigkeit von embedded Software und sicherheitskritischen Systemen erfordern gründliche Tests in jeder Phase des Lebenszyklus der Softwareentwicklung, vom System- und High-Level-Design bis hin zu Unit-Tests und Integrationstests.
Welche Bedeutung hat die Prüfung auf Stabilität in der realen Welt?
Ist im Zusammenhang mit Softwaretests von Robustheit die Rede, bedeutet dies im Allgemeinen, dass das eingesetzte oder noch in der Entwicklung befindliche System unter normalen oder gewöhnlichen Bedingungen gut funktioniert. Bei Stabilitätstests geht es um die Verbesserung der Zuverlässigkeit und das Aufspüren von Eckfällen durch die Eingabe von Daten, die extreme Umgebungsbedingungen nachahmen, um festzustellen, ob das System belastbar genug ist, um die Anforderungen zu erfüllen oder nicht.
Das Prüfen der Stabilität ist gezielter als das Benchmarking der Abhängigkeit. Denn beim Testen der Stabilität geht es darum, ob Software in der Lage ist, einem Missbrauch standzuhalten und korrekt zu funktionieren. Es geht nicht um diese ‚sonnigen‘ Tagesszenarien, in denen alles perfekt läuft. Sondern mithilfe von Stabilitätstests wird herausgefunden, was bei den anderen Tests versäumt wurde. Das Ziel ist es, Testumgebungen zu schaffen, mit denen die Robustheit eines Softwaresystems beurteilt werden kann. Um die Wirksamkeit der Tests zu messen, ist es wichtig, die Metriken von Softwaretests zu verfolgen.
In der Informatik sind Programmierer daran gewöhnt, Algorithmen zu erstellen, die Computersysteme zum Laufen bringen. Man ist nicht daran gewöhnt, Algorithmen zu entwickeln, die Dinge kaputt machen, so dass Stabilitätstests für einige vielleicht kontraintuitiv erscheinen. Dennoch ist das Überprüfen der Belastbarkeit der von uns erstellten Computersysteme notwendig, unabhängig von der Semantik der Programmiersprache. Dies gilt insbesondere dann, wenn es mehrere Abhängigkeiten gibt.
Beim Durchführen von Stabilitätstests wird nach den Szenarien gesucht, die zu einem Ausfall der Software führen können. Stabilitätstests sind eine End-to-End-Testlösung für embedded Systeme. Dabei wird die Zuverlässigkeit der Software im Zuge von gültigen und ungültigen Eingaben geprüft. Weil die Software aus vielen Gründen versagen kann, wird ebenso auf Änderungen geprüft, die sich auf die Hardware auswirken, auf Änderungen in der Umgebung oder auf externe und unabhängige Software.
Warum sind Robustheitstests in Softwaresystemen wichtig?
Sicherheit und Zuverlässigkeit sind eindeutige Vorteile von Stabilitätstests. Sie retten Leben und senken das Risiko von Verletzungen oder kostspieligen Gerichtsverfahren. Manche Branchen müssen strenge gesetzliche Vorschriften und Konformitätsstandards strenger einhalten als andere. Ein ausgezeichnetes Beispiel für die Bedeutung von Sicherheit und Zuverlässigkeit ist die Luftfahrtindustrie mit ihren vielen embedded Systemen. Hier stehen Menschenleben auf dem Spiel – darum wird bei den Tests auch an den Ernstfall gedacht.
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel Communications Group GmbH & Co. KG, Max-Planckstr. 7-9, 97082 Würzburg einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von redaktionellen Newslettern nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung, Abschnitt Redaktionelle Newsletter.
Anzahl der Flüge 1/2004 - 6/2021
Anzahl der Abstürze von Verkehrsflugzeugen seit 1945
16,9 Millionen
3346
Angesichts der hohen Anzahl von Flügen in den letzten sechzehn Jahren und der relativ niedrigen Zahl an Abstürzen von Verkehrsflugzeugen seit 1945 hat die Luftfahrtindustrie eine extrem hohe Erfolgsquote. Trotzdem gibt es leider Tote, Verletzte und Gerichtsverfahren - letztendlich ein gutes Argument für die Zweckmäßigkeit von Stabilitätstests.
Die automatisierte Testgenerierung ist wichtig, um die Tests zu beschleunigen. Einige Stabilitätstests bieten eine automatisierte Generierung von Testfällen, die die Qualität verbessern und dabei helfen, Softwarekomponenten direkt auf der Zielhardware zu verifizieren und zu validieren. Dies ist eine Anforderung innerhalb der strengsten Sicherheitsintegritätsstufen, wie z. B. DAL A im Prozessstandard DO-178C.
Sicherheit ist ein weiteres Beispiel, bei dem sich Entwickler und Ingenieure keinen Fehler leisten können. Finanzinstitute, Kreditkartenunternehmen und die Verteidigungsindustrie sind nur einige der Branchen, die sehr strenge Konformitätsanforderungen erfüllen müssen. Es ist möglich, die Konformität in bestehende Entwicklungsprozesse und Ökosysteme zu integrieren, vom Anforderungsmanagement und der Quellcodekontrolle bis hin zu IDEs und CI/CD. Durch das automatisierte Einhalten funktionaler und sicherheitskritischer Standards können Unternehmen Zeit und Geld sparen.
Unabhängig von der Branche oder der Anwendung unterstützen Stabilitätstests Unternehmen beim Erreichen und Automatisieren der Konformität und bei der Bereitstellung hochwertiger Software. Dass zudem ein guter ROI erzielt wird, was die Kosten für die Bereitstellung von embedded Software senkt, ist ein weiteres zugkräftiges Argument.
Welche Testarten oder -methoden stellen die Stabilität von Testsuiten sicher?
Unter den vielen Techniken und Werkzeugen ist das seit Jahrzenten eingesetzte Fuzz wahrscheinlich die am weitesten verbreitete Testmethode. Fuzz-Tests haben sich als sehr effektiv erwiesen. Bei dieser relativ einfachen Methode, erstellt man Testfälle mit mehreren Variationen von unerwarteten Eingaben und überwacht sie auf Ausnahmen. Wenn die Software nach ausführlichen Tests nicht abstürzt, keine eingebaute Codebestätigungen versagt oder potenzielle Speicherlecks aufweist, hat man ein hohes Maß an Software-Stabilität erzielt.
Eine weitere Technik für Stabilitätstests ist das Blackbox-Testing bzw. das Testen auf menschlicher oder Benutzerebene auf Funktionalität und Zuverlässigkeit. Dabei tun die QS-Tester oder das Softwareentwicklungsteam so, als wollten sie als Endnutzer oder Interessensgruppen des Produkts oder der Anwendung reale Szenarien testen und interessieren sich nur dafür, ob das Softwaresystem wie vorgesehen funktioniert oder nicht. Wenn das System unter stressigen Umgebungsbedingungen die korrekte Ausgabe oder das korrekte Verhalten erzeugt und ordnungsgemäß funktioniert oder so arbeitet, wie es konzipiert wurde, ist es stabil.
Was ist mit Testtechniken wie Fault Injection und Mutationstests?
Dabei handelt es sich um weitere Arten von Stabilitätstests. Das Ziel der klassischen Fehlerinjektionstests besteht darin, die Stabilität des Systemcodes während der Laufzeit zu ermitteln. Indem fehlerhafte Datentypen oder Hardwarefehler injiziert werden, stellt man fest, ob das System abstürzt oder unsicher ist. Wenn es die Fehler verkraftet, ist es stabil. Mutationstests haben das Ziel, die Effektivität des Testfalls zu bewerten, um einen Fehler zu entdecken. Bei diesem Test fügt man einen Fehler in den Code ein, um zu sehen, ob er gefunden wird. Ist dies der Fall, ist der Test gründlich.
Tipp! Arbeitet man als Entwickler mit Java, ist die Testmethode der Ausnahmebehandlung eine Möglichkeit, mit Laufzeitfehlern umzugehen, so dass der normale Ablauf der Anwendung aufrechterhalten werden kann.
Automatisierte Testtools & Stabilitätstests und Softwarequalität
Automatisierungstests dienen der Automatisierung von sich wiederholenden Aufgaben und anderen manuell nur schwer durchführbaren Testaufgaben. Es erfolgt ein Vergleich des tatsächlichen mit dem erwarteten Ergebnis. Testfälle werden erstellt, um ein bestimmtes Testziel zu erreichen. Stabilitätstests können bei der Durchführung von Regressionstests - einem anderen Ansatz - automatisiert werden. Regressionstests prüfen die gesamte Anwendung, um festzustellen, ob in einem Modul oder in der Funktionalität der Software Änderungen vorgenommen wurden, die sich negativ auswirken. Beim Durchführen von Regressionstests ist die Automatisierung notwendig, da es fast unmöglich ist, Systemtests manuell durchzuführen, außerdem schmälert sie den für stabile Tests benötigten Arbeits- und Zeitaufwand.
Mit automatisierten Testtools lassen sich auch automatisch Testfälle zur Unterstützung von Fuzz-Tests oder von symbolischer Ausführung erstellen, die Minimal-, Mittel-, Maximal- und andere Wertebereichstests durchführen. Indem einige Testfälle außerhalb der Wertgrenzen testen, stellen sie fest, ob die Software-Komponenten auch diese Werte verarbeiten.
Automatisierte Testwerkzeuge mit benutzerfreundlichen grafischen Oberflächen können das Testen von Einheiten noch vereinfachen, indem sie den Code in eine visuelle Tabelle abstrahieren, in der Anwender Felder, wie Eingabewerte und erwartete Ergebnisse, ausfüllen können. Anschließend wird der Testfall aus der Tabelle generiert. Wenn andere Softwarefunktionen nicht zur Verfügung stehen, bietet sich auch Stubbing zum Testen an. Zudem besteht die Möglichkeit, Testfälle zu ändern oder zu aktualisieren und zu verfolgen, welche Testfälle geändert werden müssen, wenn sich der Code ändert. Noch besser ist, dass QA-Teams Testsuiten mit all den Tausenden von erstellten Testfällen verwalten können.
Was sind die Grenzen von Stabilitätstests?
Für Unternehmen, die die IEEE-Normen erfüllen müssen, sind Stabilitätstests obligatorisch, aber für nicht-sicherheitskritische Anwendungen können sie übertrieben sein, so dass sie für manche Unternehmen nicht gerechtfertigt sind. Einige Tests, wie z. B. Mutationstests, erfordern einen bestehenden Testfall und das Einfügen realistischer Fehler, was schwierig zu bewerkstelligen sein kann.
Leider ist die Zeit nicht immer ein Freund von Stabilitätstests, weil diese zusätzlichen Aufwand bedeuten. Wenn sie aber dem Unternehmen helfen, um eine höhere Softwarequalität und eine sichere Software mit gutem ROI zu liefern und die Kosten für die Bereitstellung zu senken, dann sollte man Automatisierungstools in Betracht ziehen, welche die notwendige Geschwindigkeit und die Fähigkeiten zum Durchführen von Stabilitätstests bieten.
Wichtig ist, ein gutes Verständnis von Stabilitätstests zu haben. Dies geht so weit, dass das International Symposium on On-Line Testing and Robust System Design (IOLTS) Daten für die IEEE vorgelegt hat. Die IEEE hat auch eine Reihe von Standards für die Aufrechterhaltung der Kompatibilität spezifiziert. Zusätzlich hat die Association for Computing Machinery (ACM) in der Zeitschrift ACM Fallstudien über Robustheitstests vorgestellt.