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

Post on 18-Oct-2020

11 views 0 download

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