Development of a Hardware-in-the-Loop test system for continuous integration
by
Zoom
Vortrag zur Masterarbeit von Sebastian Speiser zum Thema Entwicklung eines Hardware-in-the-Loop-Testsystems für die Kontinuierliche Integration
Testen ist ein integraler Bestandteil der Produktentwicklung. Tests dienen dazu, Fehler
in Systemen zu finden und erhöhen die Wahrscheinlichkeit, ein fehlerfreies System zu
entwickeln. Im Gegensatz zu traditionellen Lebenszyklusmodellen fordern moderne agile
Entwicklungsprozesse den Einsatz von ’continuous integration’ und kontinuierlichem
Testen.
Der Einsatz von ’Unit testing’ sowie statischer Codeanalysis sind bereits weit verbreitete
Methoden bei Softwareprojekten. Grund hierfür ist die einfache Implementierung von
Tests und die unaufwändige Integration in bereits bestehende ’CI pipelines’.
Testen auf Softwareebene ist daher eine effiziente Möglichkeit agile Entwicklungsme-
thoden einzusetzen, ist aber für komplexere Hard- und Softwareprojekte nicht ausreichend.
Systeme die aus externen Sensoren, programierbarer Logik, analogen ’Frontends’ und
Softwarekomponenten bestehen, bedürfen aufwändigere Testmethoden.
Diese Thesis erweitert das Testportfolio durch ein hardware in the loop Test-Framework.
Dabei liegt der Fokus auf automatisierter Testdurchführung, Integration in die Entwick-
lungsumgebung des IPE und ’continuous integration’ Infrastruktur. Das Ziel ist es, allen
Entwicklern das Durchführen von Integrationstests auf Systemebene zu ermöglichen.
Das Framework beinhaltet einen automatisierten TestRunenr, welcher python basierte
Testfälle ausführen kann. Es ermöglicht das nutzen von automatisierten Piplines und
ist in das GitLab CI System eingebunden. Zusätzlich zu Testergebnissen, können auch
Coveragereports für die C++ basierten Treiber generiert werden.
Presentation of the master thesis from Sebastian Speiser on the topic Development of a Hardware-in-the-Loop test system for continuous integration
Testing is an integral part of product development. Tests serve to uncover bugs in a system
and increase the confidence in its correctness.
In contrast to traditional life cycle models, modern agile development processes call for
continuous integration and testing. Unit testing and statical analysis are already common
place in many software projects. They are easy to implement and are well integrated in
CI pipelines and tools. Testing on the software level is therefore an efficient measure to
comply with agile development processes, but fall short for projects consisting of hardware
and software components. Systems consisting of external sensors, programmable logic,
analog frontends and software components, call for more sophisticated testing methods.
This thesis expands on software testing by implementing a hardware in the loop testing
framework. Focusing on test automation, integration into the development environment
and continuous integration infrastructure present at IPE, the framework aims to enable all
developers to write and execute system level integration tests.
The Framework provides an automated test runner that can execute test cases written in
python. It enables the use of automated pipelines and is integrated into the existing GitLab
CI framework. In addition to test reports containing passed and failed tests, coverage
reports for the drivers developed with C++ can be generated by the framework.