Software-Testing-Papers Library
Security für vernetzte Medizingeräte
Royd Lütke und Artur Hirsch
Viele Medizingeräte enthalten Mikrocontroller und werden durch Software gesteuert. Je nach Einsatzbereich und Kritikalität sind die Anforderungen an die Softwarequalität durchaus unterschiedlich. Man beurteilt
die Programme hinsichtlich ihrer funktionalen Sicherheit (Safety) sowie ihrer Sicherheit gegenüber Angriffen von außen (Security).Die Bedeutung der funktionalen Sicherheit für in der Medizin eingesetzte Geräte
ist klar. Seit der Vernetzung dieser Geräte rückt jedoch der Bedarf an Sicherheit gegen Angriffe mehr in den Fokus.
© 2025 Download
Software-Qualität: Statische Code-Analyse und dynamische Tests - Komplementäre Methoden zur Qualitätssicherung
Klaus Lambertz
Um eine gute Softwarequalität zu gewährleisten, werden während der Softwareentwicklung zwei sich ergänzende Verfahren eingesetzt: Statische Code-Analyse und dynamische Tests in Verbindung mit Code-Coverage-Messungen.
Dieses Papier zeigt die Vorteile und Grenzen beider Methoden auf und erklärt, warum statische und dynamische Tests einander ergänzen und beide notwendig sind, um eine hohe Softwarequalität zu gewährleisten.
© 2024 Download
ISO/SAE 21434 "Road vehicles – Cybersecurity Engineering"
Christian Simco
Mit zunehmender Vernetzung und Komplexität von Fahrzeugen steigt der Umfang der Software stetig. 100 Millionen Codezeilen sind für herkömmliche Automobile Standard. Für autonome Fahrzeuge werden bis zu
300 Millionen Codezeilen benötigt. Mit der Konnektivität und Komplexität wächst auch die Angriffsfläche für Cyberattacken. Das Ziel von ISO/SAE 21434 ist es, diese Sicherheitsbedrohung zu bekämpfen und
die Cybersicherheitstechnik von Automobilsoftware zu verbessern. Die 2021 herausgegebene Norm ist eine Ergänzung der ISO-Norm 26262 und soll Ziele, Anforderungen und Richtlinien für die Sicherung elektrischer
und elektronischer Systeme in Kraftfahrzeugen definieren. © 2022 Download
Die Testabdeckung messen: 10 Kriterien zur Auswahl eines Code-Coverage-Tools
Klaus Lambertz
Speziell in der sicherheitskritischen Softwareentwicklung schreiben Branchennormen genaue Anforderungen für die Code Coverage vor, so dass Produkte hier ohne den Nachweis einer ausreichenden Testabdeckung
nicht zertifiziert werden können. Aber auch bei anderen Entwicklungsprojekten legen Unternehmen zunehmend großen Wert auf Software-Qualität und messen die Code Coverage. Zur Messung der Code Coverage sind am
Markt unterschiedliche Code Coverage Analyzer verfügbar. Die Lösungen unterscheiden sich im Handling und in der Qualität teils deutlich. Wir haben deshalb zehn grundsätzliche Kriterien für die Auswahl eines
Code-Coverage-Tools zusammengestellt: © 2021 Download
Software-Qualität mit statischer Analyse und dynamischen Tests steigern
Klaus Lambertz
Gute Software erfüllt die erwartete Funktionalität, ist sicher, zuverlässig und gut wartbar. Es ist wichtig, dass Software möglichst keine Fehler hat, damit sowohl die Funktionale Sicherheit (engl. Safety),
als auch die Angriffssicherheit (engl. Security) sichergestellt ist. Hierzu kommen während der Softwareentwicklung idealerweise zwei unterschiedliche Verfahren zum Einsatz, die komplementär sind:
die statische Code-Analyse und das Testen zur Laufzeit, auch dynamische Analyse genannt. Beide Methoden decken verfahrensbedingt nur einen Teil der vorhandenen Probleme auf. Erst wenn sie gemeinsam genutzt werden,
kann die Qualität der Software entscheidend gesteigert werden. © 2021 Download
Gemeinsam zum Erfolg: Statische Codeanalyse und dynamische Tests
Royd Lüdtke
Softwareentwicklern stehen zwei Techniken zum Testen von Software zur Verfügung: dynamische Tests und die statische Codeanalyse. Erst wenn beide Methoden kombiniert werden, lassen sich Fehler in der Software
weitgehend ausschließen. Um die Qualität sicherzustellen, werden zwei Methoden unterschieden: statische Codeanalyseverfahren und das Testen lauffähiger Software während der dynamischen Analyse – unter anderem
mit Unit-Tests. Beide Verfahren sind komplementär – jeder der beiden Ansätze deckt verfahrensbedingt jeweils nur einen Teil der vorhandenen Fehler auf. Größte Fehlerfreiheit kann erst im Zusammenspiel von
statischer und dynamischer Analyse erreicht werden. © 2021 Download
Fehlerfreie Software mit statischer Code-Analyse und dynamischen Tests
Royd Lüdtke / Roland Person
Um eine gute Softwarequalität zu gewährleisten, ist eine Kombination von statischer Analyse und hinreichendem Testen zur Laufzeit (dynamische Tests) in Verbindung mit einer Messung der Testabdeckung erforderlich.
Unser Praxisbeispiel zeigt, warum beide Verfahren zur Absicherung der Softwarequalität genutzt werden müssen und warum die Konzentration auf nur eine Test- oder Analyseform gefährliche Konsequenzen haben kann.
© 2021 Download
Testreihung mit allen Tricks
Grünfelder, Stephan und Luckeneder, Christoph
Reihung von automatischen Tests für komplexe Embedded-Systeme
Viele Firmen haben über mehrere Jahre automatisierte (Firmware-)Systemtests akkumuliert. Die Tests laufen oft auf proprietären, teuren Anlagen. Auch automatische Testdurchführung benötigt Zeit, mitunter viel Zeit. Wenn der Zeibedarf für einen vollständigen Durchlauf hoch wird, dann wird man versuchen die Tests so zu reihen, dass die Tests mit der höchsten Fehlerfindungswahrscheinlichkeit zuerst drankommen. Das ist zwar naheliegend, aber oft gar nicht so einfach. Das übergeordnete Ziel ist, die Zeit vom Start der Testsuite bis zum ersten Bugreport zu minimieren. Dieser Artikel beschreibt, wie man hier vorgehen kann. Es wird ein einfacher Lösungsansatz vorgestellt, der selbst für verteilte Echtzeit-Systeme anwendbar ist. © 2020 Download
Viele Firmen haben über mehrere Jahre automatisierte (Firmware-)Systemtests akkumuliert. Die Tests laufen oft auf proprietären, teuren Anlagen. Auch automatische Testdurchführung benötigt Zeit, mitunter viel Zeit. Wenn der Zeibedarf für einen vollständigen Durchlauf hoch wird, dann wird man versuchen die Tests so zu reihen, dass die Tests mit der höchsten Fehlerfindungswahrscheinlichkeit zuerst drankommen. Das ist zwar naheliegend, aber oft gar nicht so einfach. Das übergeordnete Ziel ist, die Zeit vom Start der Testsuite bis zum ersten Bugreport zu minimieren. Dieser Artikel beschreibt, wie man hier vorgehen kann. Es wird ein einfacher Lösungsansatz vorgestellt, der selbst für verteilte Echtzeit-Systeme anwendbar ist. © 2020 Download
Embedded-Anbieter im Dilemma zwischen Marktdruck und Verantwortung: Wie können Software-Testwerkzeuge helfen?
Klaus Lambertz / Royd Lüdtke
Bei der Entwicklung von Embedded Devices und Embedded Software gilt wie in vielen anderen Projekten das Modell des magischen Dreiecks, in dem Sachziele bzw. Qualität mit Kosten und Zeit in Beziehung gesetzt werden.
Vor dem Entwicklungsstart werden die drei Größen definiert und priorisiert. Es wird festgelegt, welche Sachziele man bis zu welchen Terminen mit welchem Budget umsetzen will. Wird später eine der drei Größen
verändert, hat das direkte Auswirkungen auf die beiden anderen Größen. Bei der Entwicklung von Embedded Software können vor allem die Qualität und die Produktivität (Zeit) durch geeignete Software(test)-Werkzeuge
positiv beeinflusst werden. © 2020 Download
Wegweiser zur Auswahl eines Werkzeuges zur statischen Codeanalyse
Royd Lüdtke
Werkzeuge zur statischen Codeanalyse ermöglichen das Auffinden von Softwarefehlern bereits früh im Entwicklungsprozess und tragen damit dazu bei Kosten und Risiken eines Projektes zu minimieren.
Die auf dem Markt erhältlichen Tools unterscheiden sich zum Teil erheblich hinsichtlich Preis und Leistung. Es ist daher nicht einfach das geeignete Werkzeug für einen definierten Einsatzbereich auszuwählen.
Das vorliegende Dokument zeigt einige Beurteilungskriterien auf, die Sie dabei unterstützen können, sich für ein zu Ihrem Projekt passendes Werkzeug zu entscheiden.
© 2020 Download
Wie Imagix 4D das Verständnis von Programmen auf Quelltextebene unterstützt
Baltzer, Jan-David
Mit wachsender Laufzeit von Softwareprojekten steigen typischerweise deren Umfang und Komplexität. Damit wird es auch zusehends aufwendiger den Überblick zu behalten, sei es zur Wartung, Erweiterung oder
Verifikation gegen bestehende und veränderte Anforderungen. Verstärkt wird dies zudem durch Fluktuationen in der Belegschaft und der Einbindung von zusätzlichen Programmteilen, sei es zugekauft, frei zugänglich
oder aus bestehenden Projekten. Diese Arbeit zeigt, wie Imagix 4D dabei unterstützt unbekannten Quelltext zu erkunden und zu verstehen. Nach einer Einführung in den Kontext der Problemstellung folgen
Erörterungen verschiedener Methoden von Imagix 4D und wie diese zur Lösung beitragen. © 2019 Download
Static Analysis: Detect bottlenecks - Identify problems with the cache usage
Royd Lüdtke
The use of the cache has a considerable impact on the overall system performance, even with small targets. This efficiency plays an important role, in particular in regard to real-time applications. Possibilities
for optimisation should already be found in a very early phase of the software development lifecycle. The sooner the bottleneck is recognised, the easier and cheaper it can then also be removed. A procedure is
suited for this task, which actually should be established in every development team: Static code analysis. With its use, it is possible to root out problems involving the cache usage and to remove them.
© 2019 Download
Grundlagen der Code-Coverage-Messung
Sabine Poehler
Dieser Beitrag bietet Neuanwendern einen Einstieg in das Thema „Code Coverage“. Neben einem systematischen Überblick über die verschiedenen theoretischen Ansätze werden konkrete Entscheidungshilfen für den
Einsatz von Coverage Werkzeugen diskutiert. Der Nachweis der Code Coverage wird für den Test sicherheitskritischer Software in einer Reihe von Sicherheitsnormen gefordert oder empfohlen. Dabei werden,
abhängig von der Sicherheitsklasse der Software, verschiedene starke Coverage Maße festgelegt. ... © 2019 Download
Testabdeckung und Penetration Testing: Code Coverage zeigt Angriffsvektoren auf
Sabine Poehler
Die Messung der Testabdeckung ist ein unverzichtbarer Standard, wenn es um die funktionale Sicherheit von Embedded-Systemen geht. Doch haben die dafür genutzten Code-Coverage-Analyzer noch einen weiteren Nutzen,
der wenig bekannt ist: Code Coverage ist sehr hilfreich, um im Rahmen des Penetration Testings Schwachstellen im Code zu erkennen und in ihrer Brisanz zu bewerten. Vor allem innerhalb des Entwicklungszyklus können
die Programmierer und Teamleiter so frühzeitig Sicherheitslücken aufdecken und zeitnah schließen. © 2019 Download
Code Coverage auf Embedded Devices: Testabdeckung bei kleinen Targets
Klaus Lambertz
Auch bei Embedded-Geräten muss die Software hinreichend getestet werden, bevor das Produkt marktreif ist. Die Überwachung des Testfortschritts, die von vielen Sicherheitsnormen gefordert wird, ist hier jedoch
nicht ganz trivial. Denn oft sind die Ressourcen der Targets limitiert, Speicher und Prozessor können durch die Code Coverage an ihre Grenzen stoßen. Doch mit etwas Kreativität ist es möglich, auch im
Embedded-Bereich die Testabdeckung zu erfassen und nachzuweisen. © 2018 Download
Effizientes Auffinden von Nebenläufigkeitsfehlern durch statische Codeanalyse
Royd Lüdtke
Die zunehmende Verbreitung moderner Multicore-Prozessoren ist mit der Forderung nach nebenläufiger Software verbunden, die derartige Hardwarearchitekturen optimal auszunutzen versteht. In nicht unerheblichem
Maße gilt das auch im embedded Umfeld. Softwareentwickler und –Tester müssen sich neuen Herausforderungen stellen. Kann die Softwarequalität von single-threaded Applikationen durch Code-Review und dynamische
Testverfahren noch hinreichend gesichert werden, reichen diese Testmethoden für multithreaded Applikationen meist allein nicht mehr aus.
© 2014 Download
Bug-Hunting mit statischer Codeanalyse
Daniel Fischer
Statische Testverfahren zählen zu den analytischen SW-Qualitätssicherungsverfahren. Neben Komplexitätsmetriken, Architektur- und WCET-Analysen stellt insbesondere die statische Codeanalyse eine effiziente
Möglichkeit dar, um Software-Bugs zu finden, welche durch dynamische Testverfahren (Whige-Box- und Black-Box-Testing) nicht entdeckt wurden.
Dieser Artikel enthät einen Vergleich der Werkzeuge CppCheck, Lint und CodeSonar. © 2013 Download
Testwell CTC++: Code Coverage for safety-critical Embedded Systems
Daniel Fischer
Software for embedded systems is often used in safety-critical systems. In this area malfunctions could lead to accidents or damages of high magnitude and even to loss of lives. Therefore, security standards
such as the DO178-C (aviation), the ISO 26262 (automotive) or the EN 50128 (railway) demands harsh proff of code coverage. In dependency to the ciritcality, a suitable level of code coverage has to be applied.
© 2013 Download
Statische Codeanalyse
Feder, Fabian
Automatisierte Codeüberprüfung ist mittlerweile Stand der Technik. Sie wird in vielen Bereichen der Softwareentwicklung eingesetzt, von Embedded Anwendungen bis hin zu großer Unternehmenssoftware. Im
sicherheitskritischen Bereich ist es jedoch notwendig zu beweisen, dass die Tests korrekte Ergebnisse liefern. Dies ist mit der "statischen Codeanalyse" möglich.
© 2012 Download
Code-Coverage auf Embedded-Systemen
Fischer, Daniel
Die Testabdeckung sowie der Testfortschritt lassen sich mittels Code-Coverage quantitativ bestimmen. Je nach Kritikalität des Embedded Systems sind dabei verschiedenartige Coveragestufen
(Anweisungs- und Zweigüberdeckung, Modified Condition/Decision Coverage) anzuwenden. Zur Messung dieser Coveragestufen ist der Code zu instrumentieren und auf dem Host oder Target möglichst mittels
automatisierten Tests auszuführen. Bei der Instrumentierung des Codes entstehen bei kleinen eingebetteten Systemen verschiedenartige Herausforderungen. Neben der Begrenzung durch RAM und ROM sollte
beispielsweise das Zeitverhalten kaum oder nur gering beeinflusst werden. Im Rahmen des Papers wird auf die verschiedenen Coveragestufen und die Instrumentierung eingegangen. Die Probleme die dabei bei
eingebetteten Systemen entstehen werden aufgezeigt und Lösungsmöglichkeiten dargestellt. © 2012 Download
Automatisches Erkennen von Data Races
Grünfelder, Stephan
Race Conditions sind eine besonders unangenehme Art von Programmfehlern. Sie können überall dort auftreten, wo Software nicht nur rein sequenziell abgearbeitet wird, sondern zumindest zum Teil parallel.
Das betrifft also fast alle Anwendungen mit Betriebssystemen und auch Software, die mit Interrupt Service Routinen arbeitet. Race Conditions treten nur sporadisch auf und sind besonders schwer zu erkennen.
Dieser Artikel zeigt wie Race Conditions durch Software-Werkzeuge erkannt werden können und demonstriert den Einsatz eines solchen Werkzeugs beim Test eines Echtzeit-Betriebssystems.
© 2012 Download
TTCN-3
Schlegel, Andreas
Das Testen komplexer Systeme, besonders im Bereich verteilter Systeme, gestaltet sich oft sehr schwierig. Dies ist bedingt durch das Zusammenwirken verschiedener Komponenten mit unterschiedlicher Hardware und
Plattformen. Für diese Komponenten werden die selben Testfälle entwickelt, jedoch aufgrund der Unterschiede meistens für jede Komponente einzeln implementiert. Dies verursacht einen erheblichen Mehraufwand,
der besonders auch beim Ändern von Testfällen sehr hoch ist. Um diesen Aufwand zu minimieren ist eine gemeinsame Testsprache notwendig, in der alle Testfälle erstellt werden können.
Dieses Paper stellt die Testsprache TTCN-3 vor. TTCN-3 ist eine einheitliche technologie-unabhägige Testsprache für kommunikationsbasierte, verteilte Systeme und bietet dadurch eine Lösung für diese Probleme.
© 2010 Download
Fuzzing
Basáez, Daniel
Fuzzing is a technique for Testing, and is very effective for finding security vulnerabilities in software. It was used in several applications like Unix systems, GUI applications under Windows and Apple
MacOS. ... it is often used to improve the programming of everything, because it can reach parts of code, in some cases, that other testing tools never reach, this concept of testing is still used nowadays
and his creator is still doing research over this. Fuzzing is a method that inserts unexpected data into input. In this paper some approaches are discussed and also some applications and some tools are showed.
© 2009 Download
Objektorientierte Codemetriken und deren Anwendung im Bereich von Embedded Systems
Drosdezki, Eugenia
Empirische Untersuchungen haben gezeigt, dass Metriken als Indikatoren der Softwarequalität verwendet werden können.
Durch die immer zunehmende Popularität objektorientierter Paradigmen wird gerade die Bewertung der Qualität objektorientierter Software immer wichtiger. Objektorientierte Metriken berücksichtigen die strukturelle Besonderheit und Charakteristika objektorientierter Software und helfen dabei potenzielle Schwachstellen in der Software zu identizieren und den Softwareentwurf zu optimieren. Der Einsatz objektorientierter Metriken senkt die Entwicklungs-, Test- und Wartungskosten. In dieser Arbeit werden objektorientierte Metriken von Chidamber und Kemerer, Li und Henry sowie von Bruito und Abreu näher vorgestellt. Danach werden die Ergebnisse einer Studie erläutert, in der gezeigt wird, dass Metriken-Tools, die unter anderem Metriken von Chidamber und Kemerer messen, Definitionen von Metriken unterschiedlich interpretieren.
Zum Schluss wird noch aufgezeigt, wie objektorientierte Codemetriken im Bereich eingebetteter Systeme sinnvoll eingesetzt werden können. © 2009 Download
Durch die immer zunehmende Popularität objektorientierter Paradigmen wird gerade die Bewertung der Qualität objektorientierter Software immer wichtiger. Objektorientierte Metriken berücksichtigen die strukturelle Besonderheit und Charakteristika objektorientierter Software und helfen dabei potenzielle Schwachstellen in der Software zu identizieren und den Softwareentwurf zu optimieren. Der Einsatz objektorientierter Metriken senkt die Entwicklungs-, Test- und Wartungskosten. In dieser Arbeit werden objektorientierte Metriken von Chidamber und Kemerer, Li und Henry sowie von Bruito und Abreu näher vorgestellt. Danach werden die Ergebnisse einer Studie erläutert, in der gezeigt wird, dass Metriken-Tools, die unter anderem Metriken von Chidamber und Kemerer messen, Definitionen von Metriken unterschiedlich interpretieren.
Zum Schluss wird noch aufgezeigt, wie objektorientierte Codemetriken im Bereich eingebetteter Systeme sinnvoll eingesetzt werden können. © 2009 Download
Testen von Echtzeitsystemen
Ehret, Mathias
Das Testen ist ein sehr teurer Schritt in der Entwicklung von Real-Time Systems. Während für reine Softwaresysteme mit moderaten Anforderungen an das Laufzeitverhalten schon länger moderne Testverfahren und
Paradigmen angewandt werden, sind deren Varianten für das Testen von Echtzeitsystemen noch relativ unbekannt. Echtzeitsysteme können günstig als Timed Automata beschrieben und als Black-Box Systeme nach
digitaltechnischen und formalen Gesichtspunkten verifiziert werden. Weitere Möglichkeiten ergeben sich durch adaptive Testgenerierung und Robustheitsprüfungen. Für die Spezifikation der Testfälle existiert
eine Echtzeiterweiterung der TTCN Notation. © 2009 Download
Echtzeitprogrammierung und Echtzeitverhalten von Keil RTX
Erdrich, Frank
Echtzeitsysteme werden immer komplexer. Darum bedarf es Hilfsmittel wie Echtzeitbetriebssysteme, die die Komplexität vereinfachen.
Das vorliegende Paper zeigt anhand gängiger Verfahren zur Echtzeitprogrammierung auf, inwieweit das Echtzeitbetriebssystem RTX von Keil Echtzeitprogrammierung und Echtzeitverhalten unterstützt.
© 2009 Download
Softwaremetriken gezielt einsetzen
Fischer, Daniel
Software-Metriken stellen Kennwerte dar, um Software hinsichtlich Komplexität, Wartbarkeit und Fehleranfälligkeit zu bewerten. So empfliehlt die DIN EN 61508 die Erhebung von Software-Metriken für die Safety
Integrity Level (SIL) 1-4. Weitere Empfehlungen der DIN EN 61508, wie beispielsweise die der strukturierten Programmierung, können aus einzelnen Software-Metriken abgeleitet werden. © 2009
Download
Softwarefehler verursacht das teuerste "Feuerwerk" aller Zeiten
Lambertz, Klaus
Softwaretests können in Europa über 100 Milliarden Euro jährlich einsparen. © 2009 Download
Embedded Unit-Tests und Mocking mit CMock
Raffeiner, Simon
Softwareentwicklung für eingebettete Systeme hat sich in den vergangenen Jahren meist kaum verändert. Obwohl die Konzepte hinter Agiler Entwicklung, Test-Driven Development und Extreme Programming auch auf
eingebettete Systeme übertragen wurden liegen die Potentiale in vielen Projekten brach. Unit Testing und Mocking werden weitestgehend ignoriert. Das Problem entsteht aus der Fehleinschätzung vieler Entwickler,
dass Software für eingebettete Systeme ohne Betriebssystem schwer zu testen ist weil die notwendigen Angriffspunkte (Automatisierbarkeit, Frameworks) fehlen und die knapp bemessenen Ressourcen den Einsatz größerer
Test-Frameworks unmöglich macht. Statt dessen beschränkt man sich meist auf Systemtests. Kernthema dieses Dokumentes ist die Einführung in das CMock Mocking Framework, das in Verbindung mit dem Unity Unit Test
Framework genutzt werden kann um White-Box-Tests für C-Programme generieren. © 2009 Download
Classic Algorithms for Pairwise Testing
Rothmann, Andreas
This paper gives an overview on the most important classic algorithms for pairwise testing. All algorithms use combinatorial strategies to find a test set, which covers pairwise combinations of system parameters
(for example system settings or inputs from the user). The idea of pairwise testing is already 20 years old but for the last five years its popularity has been rising extremely. The reason is that testers have to
face more complex software projects with the same time target. © 2008 Download
Zentrale Fehlerbehandlung in verteilten eingebetteten Systemen
Spinner, Simon
Die Fehlerbehandlung ist ein wichtiger Teil bei der Implementierung von robusten und fehlertoleranten Systemen. In modernen Programmiersprachen gibt es meist bereits spezielle Konstrukte zur Fehlerbehandlung.
Insbesondere in verteilten und nebenläfigen Szenarien sind die traditionellen, sequentiellen Fehlerbehandlungssysteme allerdings nicht ausreichend. Es werden mit Erlang, dem Guardian Modell und den CA Actions
drei aktuellere Lösungsvorschläge für dieses Problem vorgestellt. Es wird dabei auch auf deren Einsetzbarkeit in eingebetteten Systemen eingegangen. Abschließend wird ein Vergleich der vorgestellten Systeme
vorgenommen. © 2008 Download
