Mastering Software Complexity

Kombinatorische State Transition Tests für Embedded Systems

Hohe Testabdeckungen schnell erreicht!

Kombinatorische State Transition Tests werden in vielen Standards für sicherheitskritische Systeme empfohlen. Sie sind aber für alle Embedded Systems eine hervorragende Methode, um schnell und strukturiert hohe Testabdeckungen zu erreichen.

Methoden zur Ableitung von Testcases

Die bekanntesten Methoden zur Ableitung von Testcases sind Äquivalenzklassen und Grenzwertanalyse. Typischerweise werden Sie in Unit Tests in Verbindung mit Code Coverage Messungen (C0, C1, …) verwendet, um die Vollständigkeit der Tests zu prüfen. Asynchrone, nebenläufige Komponenten wie sie in Embedded Systemen verwendet werden, können allerdings nur sehr schlecht mit synchronen, sequenziellen Unit Tests getestet werden. Auch für Integrations- oder Systemtests auf Basis von Hardware oder Software in the Loop sind diese Testmethoden kaum geeignet.

Kombinatorische State Transition Tests sind weniger weit verbreitet. Sie bieten allerdings hervorragende Möglichkeiten komplexe, nebenläufige Software mit hohen Abdeckungen zu testen. Man ist damit in der Lage eine Pfadabdeckung für den Zustandsraum der zu testenden Applikation zu definieren (n-switch). Die dafür benötigten Testcases können manuell abgeleitet oder generiert werden. Durch geeignete Anwendung der Methode lassen sich sogar Tests zur Datenkombinatorik (n-wise) durchführen.

Kombinatorische State-Transition Tests - Metriken zur Test Coverage

Die Methodik des Kombinatorischen State Transition Tests mit Pfadabdeckung

Kombinatorische State Transition Tests als Black Box Tests definieren in einem State Transition Diagramm zunächst alle von außen erreichbaren Zustände des System under Test (SUT). Transitionen beschreiben alle Zustandsübergänge zwischen den Systemzuständen. Jeder Pfad vom initialen Zustand (initial) bis zum Endzustand (end) ist ein möglicher Testpfad und damit ein möglicher Testcase. Um komplette Transition und State Abdeckung (0-switch) zu erreichen, müssen die Pfade aller erzeugten Testcases zusammen jede Transition mindestens einmal durchlaufen haben.

Höhere Abdeckungen definieren die Kombination aus aufeinander folgenden Transitionen:

Durch die hohe Pfadabdeckung können die Tests viele Probleme aufdecken. Ein Beispiel hierfür sind sporadisch auftretende Race Conditions. Diese sind mit den meisten anderen Methoden nur schwer zu entdecken.

In der folgenden Abbildung ist ein vereinfachter State Transition Test für einen Geldautomaten modelliert. Die farbigen Pfeile stellen verschiedene Ausführungspfade und damit Testcases für den State-Transition Test dar. Um vollständige Transition und State Abdeckung (coverage n-switch=0) zu erreichen, sind hier 7 Testcases nötig. Für höhere Abdeckungen müssen deutlich mehr Testcases generiert werden.

Kombinatorische State Transition Tests mögliche Pfade ATM

Datenkombinatorik

Kombinatorische State Transition Tests sind ebenfalls gut geeignet um Datenkombinatorik zu testen. Im Beispiel werden alle Kombinationen von zwei Parametern mit jeweils drei Werten gegeneinander getestet. Dies entspricht dem pairwise Test. Auch Kombinationen von mehr Parametern (n-wise) können einfach erzeugt werden. Die dafür nötigen Werte der einzelnen Parameter können gut mit Äquivalenzklassen und Grenzwertanalyse abgeleitet werden.Kombinatorische State-Transition Tests - Beschreibung von Datenkombinatorik

Kombination und Generierung von Daten und Pfadabdeckung

Man kann die Abdeckung von Daten und Pfaden auch gut miteinander kombinieren. So werden im Beispiel für alle Kombinationen aus 3 Parametern (n-wise) sämtliche Ablaufpfade (n-switch) getestet.

Da die große Anzahl von nötigen Testcases manuell kaum mehr entwickelt werden kann, empfiehlt sich für größere Abdeckungen die Verwendung geeigneter Werkzeuge mit Testcase Generatoren.Kombinatorische State-Transition Tests - Kombination von Daten und Pfadabdeckung

Analyse und Dokumentation

Um die entstehenden Testcases zu analysieren, zu verstehen und zu dokumentieren, können unterschiedliche Sichten verwendet werden.

Kombinatorische State Transition Tests

Ausführungsbaum und Sequenzdiagramm für Testcases

Fazit

 

Über den Autor

Thomas Schütz ist Geschäftsführer von PROTOS und berät Unternehmen beim Aufbau domänenspezifischer Werkzeugketten für Embedded Systeme. Zudem ist er gemeinsam mit Henrik Rentz-Reichert Projektleiter des Eclipse Projektes eTrice.

Fragen, Anregungen oder Kritik zu dem Artikel? Schreiben Sie Thomas Schütz persönlich. Ihre Nachricht wird nicht veröffentlicht!




Einwilligung



Es gilt die PROTOS Datenschutzvereinbarung

Bitte stimmen Sie der Kontaktaufnahme zu, bevor Sie das Formular absenden können.

Kunde

Pari GmbH

Schlagworte: Produktion in der Medizintechnik, Traceability, Modellbasierte Automatisierung und Produktionssteuerung, Fertigungsoptimierung, SAP-Anbindung

Technologien: ROOM, Trice, eTrice, UML2, Rhapsody, Linux, Interbus-S, Sercos-III, Modbus, EtherCAT, Codegenerierung für C++ und Java, Eclipse EMF und RCP

Partner

Embedded for You

Embedded for You ist ein Verein von deutschen Anbietern für Software- und Hardwarelösungen im Bereich der Embedded Systeme. Mit unseren Partnern erstellen wir kundenspezifische Gesamtlösungen für alle Arten von Embedded Systemen.

Partner

Eclipseina

Die Eclipseina GmbH ist ein Beratungs- und Dienstleistungsunternehmen, das sich auf embedded Softwareentwicklung spezialisiert hat. Dabei bedient sie alle Disziplinen, die für eine erfolgreiche Softwareentwicklung sowohl in technischer als auch in organisatorischer Hinsicht notwendig sind.

Partner

oose.

oose bietet Ihnen exzellente Seminare, Workshops, Beratung und Projektunterstützung für Software & Systems Engineering, neue Arbeitswelten und Innovation.

Kunde

Visteon

Schlagworte: Entwicklung von domänenspezifischen Sprachen für Infotainmentsysteme, DSL-Entwicklung auf der Basis von Xtext, Middleware in C++ für verschiedene Architekturen, Tooling für Entwickler, GUI-Entwicklung für Eclipse-basierte Tools, Integration der eTrice Statemachine Editoren und Code Generatoren

Technologien:  Xtext, Xtend, Eclipse, C++, Java, eTrice, Statemachines

Kunde

Siemens

Schlagworte: Maschinensteuerungen, Barcode, Netzwerkapplikationen, Traceability in der Produktion, Datenbank Integration

Technologien: C++, XML

Kunde

SCHAEFFLER

Schlagworte: Entwicklung einer modellgetriebenen Toolchain für Mechatronik und Elektro-Mobilität auf Basis von Eclipse eTrice, Aufbau des technischen Entwicklungsprozesses mit hohem Automatisierungsgrad

Technologien: ROOM, Eclipse eTrice, Codegenerierung und Transformationen für verschiedene Sprachen und Formate (Eclipse Xtend, EMF), Entwicklung domänenspezifischer Sprachen (Eclipse Xtext), Continuous Integration (Hudson), C, Python, A2L, CAN

Kunde

HARMAN

Harman Automotive ist weltweit führender Hersteller von In-Car Premium Audio- und Infotainmentsystemen.

Schlagworte: Automatiserte Auswertung von Tracedaten aus Tests, Systemstabilität, Performance

Technologien: QNX, Perl, C++

Kunde

ept

Schlagworte: Automatisierungstechnik, Modellbasierte Steuerungslösungen für Serienanlagen, Harte Echtzeitsysteme, numerische Optimierung

Technologien: ROOM, Trice, Codegenerierung für C++ und C, CAN

Kunde

Infineon

Schlagworte: Modellbasierte Konfiguration für Microcontroller Varianten

Technologien: Eclipse-EMF, Xtext, JET, Codegenerierung für C, Java

Kunde

BMW Group

Schlagworte: Software Architektur für Bordnetze, Spezifikationen für elektronische Fahrzeugfunktionen, Modellbasiertes Rapid Prototyping für Steuergeräte, Modellbasierte Entwicklung, Automatisierte Steuergerätetests, Model und Hardware in the Loop

Technologien: ROOM, Trice, Codegenerierung, Java, C++, C, CAN, MOST, Flexray, Eclipse-EMF