14:00 Uhr
Können Sie Ihren Testfällen vertrauen?
Mit Mutationstests die Testfallgüte bewerten
Details anzeigen
Autor:innen:
Andres Richter | Hitex GmbH | Germany
Frank Büchner | Hitex GmbH | Germany
Sprache:
deutsch
Zielgruppe:
Tester, Verantwortliche für Software-Qualität
Voraussetzungen:
Keine besonderen Voraussetzungen
Überblick und Zusammenfassungen:
Leider implizieren 100% Codeüberdeckung nicht automatisch gute Testfälle. Der Mutationstest jedoch erlaubt die Qualität von Testfällen zu prüfen und gegebenenfalls zu verbessern.
Beim Mutationstest wird ein Satz von bestandenen Testfällen auf einem mutierten Testobjekt erneut ausgeführt. Mutieren bedeutet, dass die zu testende Software (subtil) verändert wird. Beispielsweise wird aus einem Vergleichsoperator „größer“ der Vergleichsoperator „größer-gleich“ oder aus einem logischen UND wird ein logisches ODER. Die IEC 61508 nennt den Mutationstest deshalb treffend „Fehlereinpflanzung“ bzw. „error seeding“. Schlägt bei der Wiederholung der Tests nun mindestens einer der Tests fehl, dann hat dieser Testfallsatz die Mutation aufgedeckt („getötet“ im Fachjargon) und heißt bezüglich dieser Mutation adäquat. Falls nicht, ist dies bedenklich und muss überprüft werden. Möglicherweise liegt eine äquivalente Mutation vor, bei der sich das Verhalten des Testobjekts nach außen nicht ändert und die deshalb durch einen Testfall nicht getötet werden kann. Dies muss durch einen Menschen geprüft werden; der hierdurch entstehende Aufwand ist die Problematik des Mutationstests. Handelt es sich um eine nicht-äquivalente Mutation, ist die Qualität des Testfallsatzes mangelhaft, denn er erkennt die Mutation nicht und muss nachgebessert werden.
Der Vortrag stellt das Verfahren des Mutationstests vor und erläutert Begriffe wie starke/schwache Mutation, Kopplungseffekt, die Hypothese des kompetenten Programmierers, Mutationstest im Unterschied zur Fehlerinjektion, adäquater Testfall.
Ferner werden Fragen diskutiert wie: Welche Mutationen sind sinnvoll, welche eher nicht? Wieso ist die Problematik des Mutationstest bei sicherheitskritischer Software reduziert? Inwieweit kann der Mutationstest automatisiert werden? Wie kann eine Mutation ohne einen fehlgeschlagenen Testfall getötet werden?
Art der Vermittlung:
Methodenerklärung, Diskussion der Vor- und Nachteile, mit Beispielen.
Nutzen:
Die Teilnehmer lernen eine Methode zur Bewertung der Testfallgüte kennen und erfahren, wie diese praktisch angewendet werden kann.
14:50 Uhr
Driving Embedded Software Testing with an Effective Strategy
Applying strategic thinking to coding standards, static analysis, and dynamic testing
Details anzeigen
Autor:in:
Adam Mackay | QA Systems | United Kingdom
Sprache:
English
Zielgruppe:
software engineers and thier managers - particularly those working on saftey critical embedded projects to industry standards
Voraussetzungen:
Working knowledge of programming in C. Experiance of working on saftey critical software projects.
Überblick und Zusammenfassungen:
The session will aim to answer the following questions:
What is the goal of creating a test-centric embedded development environment?
How does a test-centric development environment lead to time savings?
What are the obligations and responsibilities of software customers and vendors?
The consequences of applying coding standards. (what are the benefits?)
Best practices for successful testing.
Art der Vermittlung:
Slides and practical examples
Nutzen:
An overview of current testing strategies.
A look into the future of embedded software development.
Tips for achieving a successful test strategy.
A discussion of best practices for successful testing
At the end of the session, the participants will have a better understanding of what they can do to optimize their code base and will know how to integrate testing into all phases of development. The session will benefit experienced embedded developers, as well as those who are new to the topic of embedded software development and testing.
15:40 Uhr
Virtuelle Inbetriebnahme von Embedded-Systemen
Methoden und Tools zum Testen und Verifizieren durch Simulation ohne Ziel-Hardware
Details anzeigen
Autor:in:
Andreas Foltinek | IMACS GmbH | Germany
Sprache:
deutsch
Zielgruppe:
Entwickler, Tester, Service, Entwicklungsmanagement
Voraussetzungen:
C/C++ Grundwissen
Überblick und Zusammenfassungen:
Wäre es nicht erstrebenswert die Applikations-Software von Embedded Systemen bereits ohne die vorliegende Hardware bzw. der dahinterliegenden physikalische Anlage/Prozess realitätsgetreu zu simulieren?
Derartige sog. virtuelle Prototypen laufen z.B. auf einem PC und arbeiten dabei den Applikations-Code des Zielsystems vollständig ab. Über ein API wird jedoch anstelle der realen Hardware (HMI, I/Os, Kommunikationen) eine grafische Oberfläche zur Verfügung gestellt, die den Systemzustand darstellt und die Manipulationen der Anlage als auch die Bedienung des Zielsystems selbst ermöglicht.
In erweiterten Formen ist auch ein automatisiertes Einspielen von Stimuli-Sequenzen, das Prüfen der Reaktionen und das Verbinden mehrerer virtueller Prototypen zur Nachbildung von komplexen verteilten Systemen möglich.
Die Zielsetzung und Systemnutzen sind:
- extrem frühzeitig ein sinnvolles Testen durch Entwickler/Tester zu ermöglichen
- disziplinfremden Teammitgliedern und Auftraggebern für deren Blinkwinkel den Entwicklungsstand darzustellen und beurteilen zu lassen
- auf umfangreiche Hardware- und Anlagenaufbauten zu verzichten
- Tests deutlich zu beschleunigen und im Aufwand zu reduzieren
Die Umsetzung ist prinzipiell einfach, jedoch in der Realität relativ aufwändig zu implementieren, da quasi eine zweite Software (virtueller Prototyp) parallel zum eigentlichen Projekt entwickelt werden muss.
Der Vortrag stellt die wesentlichen Teile und die Erstellung eines solchen virtuellen Prototypen vor.
Neben der manuellen Erstellung werden auch Open-Source-Tools vorgestellt, die ein automatisches Erzeugen eines derartigen Systems anhand von Modellen und Generatoren ermöglicht.
Art der Vermittlung:
Methoden- und Toolerklärung anhand von Projektbeispielen
Nutzen:
Der Vortrag richtet sich an Produkt/-Projektmanager und Entwickler, die ihren Entwicklungsprozess und hier insbesondere die Testabwicklung vorziehen und beschleunigen wollen. Es wird gezeigt wie ein solches System konzipiert, erstellt und betrieben wird und welche Open-Source-Tolos hier für verwendet werden können.
16:30 Uhr
Aufbau einer ultimativen CI/CD-Maschine
Contionuous Integration / Continuous Development Umgebung einführen
Details anzeigen
Autor:in:
Ingo Nickles | Vector Informatik GmbH | Germany
Sprache:
Deutsch
Zielgruppe:
Entwickler, Tester, Entwicklungsleiter, Manager, Berater, Entscheidungsträger, IT-Verantwortliche
Voraussetzungen:
Verständnis für die Vorgehensweisen in der Softwareentwicklung
Überblick und Zusammenfassungen:
Die immer größer werdenden Codebasen moderner Embedded Software stellen viele Entwickler Teams vor immense Schwierigkeiten. Die Integration von neuem Code war noch nie wirklich einfach. Während es jedoch früher "ausreichte" den Code zu erstellen und am Ende der Entwicklung alle Codeänderungen zu integrieren, ist dies bei Projektgrößen von vielen Millionen Codezeilen nahezu unmöglich, wenn eine optimale Codequalität erzielt werden soll.
Um diese Problematik zu umgehen entscheiden sich viele Teams für Continuous Integration: Änderungen werden dabei kontinuierlich, quasi sofort in das Projekt eingefügt und automatisch überprüft. Ziel ist es, so viele Aspekte wie möglich zu automatisieren. Das beginnt mit dem Build des Projekts über die statische Analyse (Code, Security) bis hin zu diversen Tests (Unit, Integration, System, Ende zu Ende).
Kernstück einer CI ist eine automatische Testumgebung die sechs wesentliche Aspekte erfüllen sollte:
> Entwicklern zu ermöglichen, zu testen, wann immer sie es brauchen
> Einen Überblick über die Vollständigkeit der Tests bieten
> Automatisch Testfälle für unvollständige Codeschnipsel generieren
> Ein Repository, das die Job-Planung des Integrationsprozesses automatisiert
> Eine Parallelisierung und Skalierung der Testarchitektur, um die schnellste Build-Zeit zu erreichen
> Eine Möglichkeit die minimale Anzahl von Tests durchzuführen, die durch eine Änderung am Quellcode erforderlich sind
Der Vortrag bietet Lösungen für den Aufbau einer automatisierten CI-CD Testumgebung und bietet Tipps zur Verwendung von Werkzeugen.
Art der Vermittlung:
Methodenerklärung, praktische Demonstration
Nutzen:
Der Zuschauer erhält zunächst einen grundsätzlichen Überblick über den Nutzen von CI und CD.
Es wird ein konkreter Lösungsansatz für den Aufbau einer automatisierten CI-CD Testumgebung vorgestellt.
Der Vortrag gibt darüber hinaus auch Hinweise für die Verwendung von unterschiedlichen Werkzeugen und zur Vermeidung von Problemen bei der Einrichtung von CI-Servern.