Call for Papers

Effizient zum Unit-Test unter C++ und C ( Vortrag )

Praxiserprobte Wege, Embedded-Code zu isolieren und testen

Referent: Franco Chiappori, Schindler Aufzüge AG
Vortragsreihe: Test & Qualität
Zeit: 01.12.16 09:45-10:25

Zielgruppe

Entwicklung

Themenbereiche

Implementierung, Test & Qualitätssicherung

Schwerpunkt

Methode

Voraussetzungen

Grundlagenwissen

Kurzfassung

Continuous Integration und automatisierte Tests sind erprobte Mittel, um die Qualität von Software zu fördern. Gerade den automatisierten Unit-Tests kommt große Bedeutung zu, garantieren sie doch als Basis der Testpyramide auch die Basis der Qualität. Als Entwickler schätzt man zudem die schnellen Feedbackzyklen von Unit-Tests. In der Praxis fangen die Probleme aber oftmals schon beim Isolieren des zu testenden Codes an. Wie löse ich meine C++ Klasse oder meine C-Funktion aus ihren Abhängigkeiten? Im Vortrag wird zunächst der übliche Ansatz von Dependency Injection und Mock-Objekten vorgestellt. In einem zweiten Teil geht es darum, wie man durch Aufteilen von Kernlogik und Vernetzung den Aufwand für Mock-Objekte minimieren kann. Zum Schluss wird gezeigt, wie man mit ein paar Tricks auch tiefliegenden und laufzeitkritischen C-Code effizient testen kann.

Gliederung

- Kontext aufsetzen mit Continuous Integration, OS/HW-Abstraktion, Testpyramide
- Standardansatz Dependency Injection: Vorgehen, Vor- und Nachteile
- Mock Objekte vermeiden durch Trennung von Kernlogik und Vernetzung
- Herausforderungen beim Test von laufzeitkritischem Treibercode
- Lösungsansatz Treibercode patchen: Vorteile, Nachteile
- Lösungsansatz Source-File inkludieren: Vorgehen, Vor- und Nachteile

Nutzen und Besonderheiten

Die Teilnehmer bekommen ein paar wertvolle Hilfsmittel für ihren Werkzeugkoffer der Software Entwicklung. Die präsentierten Ansätze stammen aus diversen Embedded Software Projekten und sind in der Praxis erprobt. Es werden Möglichkeiten gezeigt, auch schwierigen Code effizient zu isolieren und zu Testen. Das Besondere ist, dass keine Tools oder aufwändige Vorarbeiten gefordert sind. Die gezeigten Ansätze und Techniken lassen sich ohne viel Aufwand in einer bestehenden Umgebung umsetzen.

Über den Referenten

Franco Chiappori arbeitet seit über 20 Jahren als Entwickler und Architekt von Embedded Software. Er hat Erfahrung in der Spezifikation, Entwicklung und Test von C/C++ Anwendungen auf kleinen Mikrokontrollern bis hin zu Linux Multi-Prozess-Systemen. Seit 2015 arbeitet er für Schindler Aufzüge AG als Software Architekt im Bereich Motorsteuerung.