D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und...
Transcript of D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und...
Unit Testing mit Vectorcast und fortlaufende Integration von Testergebnissen
mit Jenkins bei der Ottobock Healthcare GmbH
Anwenderbericht
Torsten Wender, Embedded Testing | München, 22. Juni 2017
| © Ottobock
Gliederung
• Unit Testing bei Ottobock* Top 5 Anforderungen an Unit Test Tool* Lösung mit Vectorcast
• Testintegration bei Ottobock* Top 5 Anforderungen an CI Tool* Lösung mit Jenkins
Unit Testing und fortlaufende Integration bei der Ottobock Healthcare GmbH | Torsten Wender, Embedded Testing | 22.06.2017 2
| © Ottobock
Unit Testing bei Ottobock
Top 5 Anforderungen an Unit Test Tool
1. Tool soll effiziente C++Testentwicklung ermöglichen- Tabellarische Testdateneingabe, Stubs, Testdebugging, etc.- Kontrollflussprüfung, Zusichern von Übergabeparametern- Umgang mit Abstrakten Klassen/Templates
2. Tool soll Coverage-Messung ermöglichen- Nachweis der durch Regulatoren geforderten Testabdeckung
Unit Testing und fortlaufende Integration bei der Ottobock Healthcare GmbH | Torsten Wender, Embedded Testing | 22.06.2017 3
| © Ottobock
Unit Testing bei Ottobock
Top 5 Anforderungen an Unit Test Tool
3. Tool soll mit verschiedenen Compilern funktionieren- Konfigurationsdatensatz-Verwaltung- Trennung von Konfigurationsdaten und Test-Input-Daten
4. Tool soll mit verschiedenen Targets funktionieren (Testausführung)- Windows-Simulator, Launchpad, Platinen aus Eigenfertigung
5. Tool soll Dokumentation in regulatorisch-relevantem Format erzeugen
Unit Testing und fortlaufende Integration bei der Ottobock Healthcare GmbH | Torsten Wender, Embedded Testing | 22.06.2017 4
| © Ottobock
Umsetzung bei Ottobock mit Vectorcast
Unit Testing und fortlaufende Integration bei der Ottobock Healthcare GmbH | Torsten Wender, Embedded Testing | 22.06.2017 5
1. Effiziente C++Testentwicklung (Tabellarische Testdateneingabe)
| © Ottobock
Umsetzung bei Ottobock mit Vectorcast
Unit Testing und fortlaufende Integration bei der Ottobock Healthcare GmbH | Torsten Wender, Embedded Testing | 22.06.2017 6
1. Effiziente C++Testentwicklung (Stubbing)
| © Ottobock
Umsetzung bei Ottobock mit Vectorcast
Unit Testing und fortlaufende Integration bei der Ottobock Healthcare GmbH | Torsten Wender, Embedded Testing | 22.06.2017 7
1. Effiziente C++Testentwicklung (Kontrollflussprüfung)
| © Ottobock
Umsetzung bei Ottobock mit Vectorcast
Unit Testing und fortlaufende Integration bei der Ottobock Healthcare GmbH | Torsten Wender, Embedded Testing | 22.06.2017 8
1. Effiziente C++Testentwicklung (Abstrakte Klassen, Templates)
• Spezialisierungen können „gewählt“ werden, wenig User Code notwendig
• Instanzierbare Klassen werden automatisch generiert, kein UserCodenotwendig
| © Ottobock
Umsetzung bei Ottobock mit Vectorcast
Unit Testing und fortlaufende Integration bei der Ottobock Healthcare GmbH | Torsten Wender, Embedded Testing | 22.06.2017 9
2. Messung der Testabdeckung
| © Ottobock
Umsetzung bei Ottobock mit Vectorcast
Unit Testing und fortlaufende Integration bei der Ottobock Healthcare GmbH | Torsten Wender, Embedded Testing | 22.06.2017 10
3. Unterstützung verschiedener Compiler (Konfigurationsdatensatzverwaltung)
| © Ottobock
Umsetzung bei Ottobock mit Vectorcast
Unit Testing und fortlaufende Integration bei der Ottobock Healthcare GmbH | Torsten Wender, Embedded Testing | 22.06.2017 11
3. Unterstützung verschiedener Compiler (Konfigurationsdatensatzverwaltung)
| © Ottobock
Umsetzung bei Ottobock mit Vectorcast
Unit Testing und fortlaufende Integration bei der Ottobock Healthcare GmbH | Torsten Wender, Embedded Testing | 22.06.2017 12
3. und 4. Unterstützung verschiedener Compiler und Targets• Trennung von Konfigurationsdaten und Test-Input-Daten• Trennung von versionsüberwachten Inhalten und Compilaten• Speicherung als editierbare Textdateien
| © Ottobock
Umsetzung bei Ottobock mit Vectorcast
Unit Testing und fortlaufende Integration bei der Ottobock Healthcare GmbH | Torsten Wender, Embedded Testing | 22.06.2017 13
5. Dokumentation in regulatorisch-relevantem Format (Requirements Gateway)
| © Ottobock
Testintegration bei Ottobock
Top 5 Anforderungen an CI Tool
1. Tool soll konfigurierbare Testautomatisierung leisten- parametrisierte Testausführung auf virtuellen Maschinen
2. Tool soll auf Commit-Events im Produktionscode oder Testcode reagieren- Unterstützung mehrerer SCMs (TFS, SVN, Git)
3. Tool soll Testergebnisse aufzeichnen- Grafische Darstellung der Ergebnisse- Grafische Darstellung des Ergebnis-Trends- Berechnung der Ergebnis-Differenz zu vorherigen Run
Unit Testing und fortlaufende Integration bei der Ottobock Healthcare GmbH | Torsten Wender, Embedded Testing | 22.06.2017 14
| © Ottobock
Testintegration bei Ottobock
Top 5 Anforderungen an CI Tool
4. Tool soll Coverage-Ergebnisse aufzeichnen- Grafische Darstellung der Ergebnisse- Grafische Darstellung des Ergebnis-Trends
5. Tool soll Ergebnisse unmittelbar an Entwickler zurückmelden- frühe Fehlererkennung- testgetriebene Entwicklung
Unit Testing und fortlaufende Integration bei der Ottobock Healthcare GmbH | Torsten Wender, Embedded Testing | 22.06.2017 15
| © Ottobock
Testintegration bei Ottobock
Unit Testing und fortlaufende Integration bei der Ottobock Healthcare GmbH | Torsten Wender, Embedded Testing | 22.06.2017 16
1. Konfigurierbare Testautomatisierung
| © Ottobock
Testintegration bei Ottobock
Unit Testing und fortlaufende Integration bei der Ottobock Healthcare GmbH | Torsten Wender, Embedded Testing | 22.06.2017 17
1. Konfigurierbare Testautomatisierung - Hauptskript
| © Ottobock
Umsetzung bei Ottobock mit Jenkins
Unit Testing und fortlaufende Integration bei der Ottobock Healthcare GmbH | Torsten Wender, Embedded Testing | 22.06.2017 18
1. Konfigurierbare Testautomatisierung - Eingabe
| © Ottobock
Umsetzung bei Ottobock mit Jenkins
Unit Testing und fortlaufende Integration bei der Ottobock Healthcare GmbH | Torsten Wender, Embedded Testing | 22.06.2017 19
1. Konfigurierbare Testautomatisierung - Ausgabe
| © Ottobock
Umsetzung bei Ottobock mit Jenkins
Unit Testing und fortlaufende Integration bei der Ottobock Healthcare GmbH | Torsten Wender, Embedded Testing | 22.06.2017 20
2. Commit Trigger für Testausführung
| © Ottobock
Umsetzung bei Ottobock mit Jenkins
Unit Testing und fortlaufende Integration bei der Ottobock Healthcare GmbH | Torsten Wender, Embedded Testing | 22.06.2017 21
3. Testergebnis und Reportarchivierung
| © Ottobock
Umsetzung bei Ottobock mit Jenkins
Unit Testing und fortlaufende Integration bei der Ottobock Healthcare GmbH | Torsten Wender, Embedded Testing | 22.06.2017 22
3. Test-Trends
| © Ottobock
Umsetzung bei Ottobock mit Jenkins
Unit Testing und fortlaufende Integration bei der Ottobock Healthcare GmbH | Torsten Wender, Embedded Testing | 22.06.2017 23
4. Coverage-Ergebnisse
| © Ottobock
Umsetzung bei Ottobock mit Jenkins
Unit Testing und fortlaufende Integration bei der Ottobock Healthcare GmbH | Torsten Wender, Embedded Testing | 22.06.2017 24
4. Coverage-Trend
| © Ottobock
Umsetzung bei Ottobock mit Jenkins
Unit Testing und fortlaufende Integration bei der Ottobock Healthcare GmbH | Torsten Wender, Embedded Testing | 22.06.2017 25
5. Entwickler-Feedback
| © Ottobock
Fazit (1)
Unit Testing und fortlaufende Integration bei der Ottobock Healthcare GmbH | Torsten Wender, Embedded Testing | 22.06.2017 26
Positiv
• Die genannten Anforderungen können von der Werkzeugkette weitestgehend erfüllt werden
• Robustheit und Performanz des Prozesses sind zufriedenstellend• Wichtige Arbeitsschritte sind quellcodezugänglich (z.B. Python Skripte,
Jenkins-Plugins) und können somit adaptiert/optimiert werden• Frühes Feedback und somit frühzeitiges Erkennen von Bugs konnte
erreicht werden
| © Ottobock
Fazit (2)
Unit Testing und fortlaufende Integration bei der Ottobock Healthcare GmbH | Torsten Wender, Embedded Testing | 22.06.2017 27
Negativ
• Hohe Komplexität bezüglich Compiler-, Linker-, Debugger-Einstellungen- Support war notwendig
• Hocher (aber einmaliger) Konfigurationsaufwand des Testintegrations-Prozesses
- Jenkins Job Erstellskript war vorhanden- Kleinere Anpassungen waren nötig
www.ottobock.com
Vielen Dank für IhreAufmerksamkeit!www.ottobock.com