Continuous Testing Welche Testautomatisierungen sind möglich und sinnvoll? Frank Ziesel 11.05.2017 12. Neu-Ulmer Test-Engineering-Day 2017
Agenda Motivation Automatisierung in Software Projekten Continuous Testing Zusammenfassung Firmenprofil: GIGATRONIK 2
Motivation 3
Motivation Gleiche Basis-Software für mehrere Projekte verwenden Ja, aber https://www.hanser-automotive.de/zeitschrift/archiv/artikel/flexibilitaet-durch-modulares-steuergeraetekonzept-933111.html 4
Motivation Grundprinzip Continuous Integration Ein automatisiertes System überwacht alle Änderungen am Versionsverwaltungs-System Automated via SVN and Jenkins Skripts Jenkins Job Alle Fehler werden umgehend an alle betroffenen Personen gemeldet Commit Check Out SVN Checkout Software Compilation Generische Konfiguration basiert primär auf Skripten Source SVN Error Notification Ziel: Fehler in der Software frühestmöglich erkennen um Folgefehler zu eliminieren und die Kosten für die Fehlerbehebung zu minimieren. Error Notification 5
Motivation Ziel Embedded Continuous Delivery Änderung von Softwarefunktion und Testbeschreibung löst eine Automatisierungsroutine aus Am Ende der Routine steht der fertige Auslieferungszustand zur Verfügung: Vollständige Firmware im richtigen Format Release-Notes Software- oder API-Dokumentation Testberichte für Modul-, Integration- und HIL-Tests Qualitätsberichte für SW und Prozessschritte Diagnosedateien (A2L, ODX, DBC, ) 6
Motivation Ziel Embedded Continuous Delivery Änderung von Softwarefunktion und Testbeschreibung löst eine Automatisierungsroutine aus Am Ende der Routine steht der fertige Auslieferungszustand zur Verfügung: Vollständige Firmware im richtigen Format Release-Notes Software- oder API-Dokumentation Testberichte für Modul-, Integration- und HIL-Tests Qualitätsberichte für SW und Prozessschritte Diagnosedateien (A2L, ODX, DBC, ) 7
Automatisierung in Software Projekten 8
Automatisierung in Software Projekten Automatisierung im Software Entwicklungsprozess Bestimmte Schritte des Entwicklungsprozesses können teilweise oder sogar vollständig automatisiert durchgeführt werden. Vorteile: Prozessgerechte Entwicklung Höhere Qualität und Nachverfolgbarkeit Entwicklungsaufwand reduziert sich Mittelfristig Nachteile: Initial höherer Aufwand durch Prozessänderung Betreuung vom Automatisierungs-System erforderlich 9
Automatisierung in Software Projekten Software Entwicklung nach V-Modell Spezifikation Design Modellbasierte Entwicklung Code Generierung Integrations- Test (SW) Modultest (Embedded) Integrations- Test (HW+SW) Modultest (Model) Abnahmetest Software Implemenierung Operativ 10
Automatisierung in Software Projekten Software Entwicklung und Management nach V-Modell Project Management Requirements Management Software Qualität HW Ressourcen Verbrauch Test Management Software Analyse Review Management Konfigurations Management API-Dokumentation Release Notes Spezifikation Design Modellbasierte Entwicklung Code Generierung Integrations- Test (SW) Modultest (Embedded) Abnahmetest Integrations- Test (HW+SW) Modultest (Model) Software Implemenierung Organisatorisch Operativ 11
Automatisierung in Software Projekten Software Entwicklung Automatisierungspotential Spezifikation Design Modellbasierte Entwicklung Code Generierung Integrations- Test (SW) Modultest (Embedded) Integrations- Test (HW+SW) Modultest (Model) Abnahmetest Software Implemenierung Manuell Teilautomatisierbar Vollautomatisierbar 12
Automatisierung in Software Projekten Software Entwicklung Automatisierungspotential Project Management Requirements Management Software Qualität HW Ressourcen Verbrauch Test Management Software Analyse Review Management Konfigurations Management API-Dokumentation Release Notes Spezifikation Design Modellbasierte Entwicklung Code Generierung Integrations- Test (SW) Modultest (Embedded) Abnahmetest Integrations- Test (HW+SW) Modultest (Model) Software Implemenierung Manuell Teilautomatisierbar Vollautomatisierbar 13
Automatisierung in Software Projekten Automatisierung Notwendig? Mehrere Software-Entwickler (>2) Mehrere Beteiligte Standorte (>2) Unterschiedliche Toolchains wie z. B. Code- Generierung und Embedded Compiler Software-Plattformkonzepte bei denen Sourecode in mehreren Projekten verwendet wird Hohe Anforderungen aus dem Entwicklungsprozess bei z. B. Funktional Sicheren Projekten (Anforderungen und Testergebnisse Traceability) Sonstige Faktoren: Prozess wird nicht gelebt Kundenanforderung zu Automatisierung 14
Continuous Testing 15
Continuous Testing Grundprinzip Continuous Integration Automated via SVN and Jenkins Skripts Jenkins Job Commit Check Out SVN Checkout Software Compilation Source SVN Error Notification Error Notification 16
Continuous Testing Minimalbeispiel Unit Tests Zusätzlich zur Erstellung der Firmware werden Test-Skripte ausgeführt: Modultests von einzelnen Softwaremodulen Automated via SVN and Jenkins Skripts Jenkins Commit Check Out Job SVN Checkout Software Compilation Benachrichtigungen können abhängig von mehreren Faktoren getriggert werden: Anzahl fehlerhafter oder übersprungener Tests zu hoch (Instabil) Zu viele MISRA Warnings Smoke Test nicht erfolgreich Source SVN Error Notification Unit Testing Error Notification 17
Automatisierte Ausführung Direkte Ausführung Zeitgesteuerte Ausführung Separater Jenkins Slave Continuous Testing Welche Teststufen sind sinnvoll realisierbar Automatisierbarkeit ist toolabhängig Direkte Ausführung ist nur bei kurzen Testzeiten zu Empfehlen Bei langen Testzeiten empfiehlt sich eine zeitgesteuerte Ausführung (z. B. Nachts) Separate Instanz von Jenkins ist für mache Teststufen sinnvoll (Jenkins Slave) Teststufen Abnahmetest - - - - Systemtest - Systemintegrations-test - Hardwaretest - - - - Hardware-integrationstest - - - - Hardwaremodultest - - - - Softwaretest Softwareintegrations-test Softwaremodultest Modelltest Modellintegrations-test Modellmodultest empfehlenswert möglich - nicht möglich 18
Trigger Instabiel E-Mail Fehler E-Mail Continuous Testing Best Practice für CI-Systeme Job #1 Build (GHS Compiler) SVN - SW-Team #2 Modultest (Tesssy) Job #1 SW-Entwickler Testmanager #3 Smoke Test (UDS Flash und CAN) Job #2 SW-Entwickler Integrator #4 MISRA Checker (UnderstandC) Zeit (0h) SW-Entwickler SW-Entwickler, QSP 19
Continuous Delivery 20
Contineous Testing Beispiel Continuous Delivery 21
Zusammenfassung 22
Continuous Testing Zusammenfassung Continuous Testing Vorteile Jenkins und >1000 Plugins sind kostenlos Aktueller Spezifikationsstand durch Synchronisation mit Requirements- und Testtools Langfristige Reduzierung der Testaufwände und der Fehlerquellen im Testablauf Bessere Software (wenig Raum für persönliche Ausprägungen) CI-Sytem als Quality Gate im Entwicklungsprozess 23
Continuous Testing Zusammenfassung Continuous Testing Nachteile Automatisierungssystem benötigt Pflege und Maintenance Jenkins ist (meist) ein separater Rechner, der eigene Lizenzen benötigt Initial höhere Aufwände für aufsetzen der Automatisierung 24
Toolanbindung und Möglichkeiten Fazit CI-Systeme können beliebig komplex ausgelegt werden Sinnvolles maß muss für jedes Entwicklungsteam definiert und etabliert werden Definition von automatisierten Teststufen ist notwendig Testautomatisierung muss in Entwicklungsprozess integriert werden 25
Firmenprofil GIGATRONIK Technologies GmbH 26
27
Copyright 2015 GIGATRONIK Alle Rechte vorbehalten