D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und...

28
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

Transcript of D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und...

Page 1: D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und fortlaufende Integration von Testergebnissen mit Jenkins bei der Ottobock Healthcare

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

Page 2: D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und fortlaufende Integration von Testergebnissen mit Jenkins bei der Ottobock Healthcare

| © 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

Page 3: D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und fortlaufende Integration von Testergebnissen mit Jenkins bei der Ottobock Healthcare

| © 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

Page 4: D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und fortlaufende Integration von Testergebnissen mit Jenkins bei der Ottobock Healthcare

| © 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

Page 5: D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und fortlaufende Integration von Testergebnissen mit Jenkins bei der Ottobock Healthcare

| © 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)

Page 6: D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und fortlaufende Integration von Testergebnissen mit Jenkins bei der Ottobock Healthcare

| © 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)

Page 7: D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und fortlaufende Integration von Testergebnissen mit Jenkins bei der Ottobock Healthcare

| © 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)

Page 8: D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und fortlaufende Integration von Testergebnissen mit Jenkins bei der Ottobock Healthcare

| © 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

Page 9: D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und fortlaufende Integration von Testergebnissen mit Jenkins bei der Ottobock Healthcare

| © 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

Page 10: D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und fortlaufende Integration von Testergebnissen mit Jenkins bei der Ottobock Healthcare

| © 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)

Page 11: D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und fortlaufende Integration von Testergebnissen mit Jenkins bei der Ottobock Healthcare

| © 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)

Page 12: D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und fortlaufende Integration von Testergebnissen mit Jenkins bei der Ottobock Healthcare

| © 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

Page 13: D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und fortlaufende Integration von Testergebnissen mit Jenkins bei der Ottobock Healthcare

| © 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)

Page 14: D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und fortlaufende Integration von Testergebnissen mit Jenkins bei der Ottobock Healthcare

| © 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

Page 15: D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und fortlaufende Integration von Testergebnissen mit Jenkins bei der Ottobock Healthcare

| © 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

Page 16: D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und fortlaufende Integration von Testergebnissen mit Jenkins bei der Ottobock Healthcare

| © 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

Page 17: D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und fortlaufende Integration von Testergebnissen mit Jenkins bei der Ottobock Healthcare

| © 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

Page 18: D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und fortlaufende Integration von Testergebnissen mit Jenkins bei der Ottobock Healthcare

| © 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

Page 19: D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und fortlaufende Integration von Testergebnissen mit Jenkins bei der Ottobock Healthcare

| © 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

Page 20: D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und fortlaufende Integration von Testergebnissen mit Jenkins bei der Ottobock Healthcare

| © 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

Page 21: D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und fortlaufende Integration von Testergebnissen mit Jenkins bei der Ottobock Healthcare

| © 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

Page 22: D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und fortlaufende Integration von Testergebnissen mit Jenkins bei der Ottobock Healthcare

| © 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

Page 23: D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und fortlaufende Integration von Testergebnissen mit Jenkins bei der Ottobock Healthcare

| © 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

Page 24: D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und fortlaufende Integration von Testergebnissen mit Jenkins bei der Ottobock Healthcare

| © 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

Page 25: D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und fortlaufende Integration von Testergebnissen mit Jenkins bei der Ottobock Healthcare

| © 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

Page 26: D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und fortlaufende Integration von Testergebnissen mit Jenkins bei der Ottobock Healthcare

| © 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

Page 27: D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und fortlaufende Integration von Testergebnissen mit Jenkins bei der Ottobock Healthcare

| © 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

Page 28: D3.2 Unit Testing mit Vectorcast und fortlaufende ...€¦ · Unit Testing mit Vectorcast und fortlaufende Integration von Testergebnissen mit Jenkins bei der Ottobock Healthcare

www.ottobock.com

Vielen Dank für IhreAufmerksamkeit!www.ottobock.com