Programm Details

Dienstag, 22.01.2019   |   09:55 - 10:40 Uhr   |    KDi 3.2

Test Driven Development für Embedded Systems (eine Fallstudie)

Test Driven Development etabliert sich immer weiter als wichtige Methode in der agilen Softwareentwicklung. Mehr und mehr Teams entscheiden sich zuerst Tests zu definieren und erst dann die entsprechenden Module zu implementieren. Die Komplexität steigt jedoch, wenn man Hardware-Software basierte Produkte entwickelt. Konkret bezieht sich diese Fallstudie auf Rundfunksendeanlagen wie z.B. Hochleistungs-DVB-T2-Fernsehsender. Ein Sender ist ein komplexes System, bestehend aus mehreren Hardware und Software Subsystemen wie Signalmodulatoren, Verstärkern, Sensorik etc. Die Sender müssen höchst zuverlässig und flexibel gestaltet werden und zusätzlich muss das System redundant ausgelegt sein. Die Softwarearchitektur folgt dem Microservices Konzept – in unserem Kontext heißt dies, dass verschiedene Software Komponenten auf verschiedenen Prozessoren laufen und ein System bilden. Um die Anforderungen zu erfüllen, verwenden wir Hardwarebausteine, FPGAs, Mikrocontroller und embedded Prozessoren. Die Softwaretechnologien umfassen C/FreeRTOS für die Mikrokontrollersteuerung und C++/Linux für nicht zeitkritische Steuerung/Überwachung. Außerdem setzen wir TypeScript/Node.js im Backend und TypeScript/Angular im Frontend ein. Des Weiteren ist ein ausgeklügeltes Testkonzept notwendig, um den heterogenen Technologiestack zu bewältigen. Das Konzept ist mehrstufig – Unittests, Komponententests und Systemtests. Die Unittests verwenden BoostTest und Jasmine Testframeworks und werden mit verschiedenen Compilern (gcc/llvm clang) und Compiler-Optionen (Thread- und AddressSanitizer) übersetzt. Um die Testbarkeit auf Komponentenebene zu erhöhen, ist die Logik der Hardwareansteuerung in verschiedene Komponenten aufgeteilt. In Komponententests, die mittels Robot Framework realisiert werden, werden alle benötigten Komponenten durch Mockups ersetzt. Die zu testende Komponente wird durch Middleware Schnittstellen stimuliert und bewertet. Zur Validierung aller Aspekte des Systems braucht man hochpräzise und zuverlässige Messgeräte. Der Sender wird in vollem Umfang bereitgestellt. Das Testsystem stimuliert den Sender zum Beispiel mit Signalgeneratoren und validiert die Senderfunktionalität. Alle Testebenen werden automatisch durch ein Continuous Integration System (Jenkins) ausgeführt und bewertet – Protokolle werden automatisch erstellt und versioniert.



Ivan Kostov
Rohde & Schwarz GmbH & Co. KG
Software Architekt