SlideShare ist ein Scribd-Unternehmen logo
© Automated Software Testing GmbH www.devmate.software
Entwicklungsqualität steigern!
Johannes Bergsmann & Daniel Lehner
CTO Researcher
- 1 -
© Automated Software Testing GmbH www.devmate.software
Inhalt
▪ Unittest Praxis vs. Theorie
▪ Blackbox basierte Testcode Generierung
▪ KI Beispiel mit Whitebox Generierung
▪ Aktuelle KI Forschung zur Testfallreduktion
▪ Forschungsausblick
▪ Fragen/Diskussion
- 2 -
© Automated Software Testing GmbH www.devmate.software
Praxis vs. Theorie im Unit-Testen
- 3 -
© Automated Software Testing GmbH www.devmate.software
Unit Test Erstellung
▪ Welche Unit-Tests werden typischerweise erstellt?
▪ Unit-Test, der einmal links geht und
▪ Unit-Test, der einmal rechts geht
→ 100% Code-Abdeckung ist mit 2 Tests erreicht
und im CI-System ist alles „grün“
▪ Welche Tests sollten erstellt werden,
um dies funktional voll zu testen?
▪ Jede (Einzel-)Bedingung muss für sich
getestet werden (4 Normal-Testfälle)
▪ Grenzwerte (oben/unten) der beiden
Bedingungen (weitere 4 Testfälle)
▪ Fehlertests außerhalb der Grenzen oben
und unten sowie innerhalb der Grenzen
mit Fehlerwerten (weitere 6 Testfälle)
→ mind. 14 Unit-Tests erforderlich für gute funktionale Testabdeckung!
- 4 -
Unit Test Design Techniques
A > 10
& B < 5
T1 T2 T3 T4
A > 10 1 1 0 0
B < 5 1 0 1 0
© Automated Software Testing GmbH www.devmate.software
durch den devmate Testcode Generator
Toolunterstützte Unit-Tests Erstellung
- 5 -
© Automated Software Testing GmbH www.devmate.software
Unit-Test Code
Unit-Test Code
Test-Code-Generator Ablaufübersicht
▪ Low-Code Plattform für Unit-Test Erstellung
▪ Bessere fachliche Sicht auf die Tests für Entwickler
(Legacy)
Code
Entwickler
Parser
Generator
Zwischen-
Modell
Jeder Code, der
getestet und für gut
befunden wurde
Syntax und
Semantik des
Codes inkl.
Test-Infos.
lesbar z.B. als
XML-Datei.
fertiger Unit-Test-
Code sichert den
Legacy-Code ab
Code
Änderung
Code
Änderung
Einbindung in
CI-System
ist möglich
A
Code
basierte
Absicherung
TDD/MBT
Ansatz (Validierung)
B
Test-Modell
(CTE / ÄK)
© Automated Software Testing GmbH www.devmate.software
an einem einfachen Beispiel
Praktische Test-Code Generierung
- 7 -
© Automated Software Testing GmbH www.devmate.software
Example: “Test Code Generator”
Source: https://www.automated-software-testing.com/
Unit under test
© Automated Software Testing GmbH www.devmate.software
Example: “Test Code Generator”
Source: https://www.automated-software-testing.com/
Developer defines
equivalence classes and
representatives (test data)
© Automated Software Testing GmbH www.devmate.software
Example: “Equivalence Class Prediction”
Source: https://www.devmate.software/
Equivlaence-Class & Data
Prediction Module
© Automated Software Testing GmbH www.devmate.software
Example: “Test Code Generator”
Source: https://www.automated-software-testing.com/
Tool combines equivalence
classes and representatives to
test cases.
© Automated Software Testing GmbH www.devmate.software
Example: “Test Code Generator”
Collapsed view
looks like test table
in Excel.
© Automated Software Testing GmbH www.devmate.software
Example: “Test Code Generator”
Source: https://www.automated-software-testing.com/
Developer defines “Test Oracle”
(expected Values):
- Values
- Exceptions
- Expected Side-Effects
© Automated Software Testing GmbH www.devmate.software
Example: “Test Code Generator”
Source: https://www.automated-software-testing.com/
Tool generates readable and
maintainable unit test code.
Test data set for
positive tests
Test data set for
negative tests
Parameterized test
© Automated Software Testing GmbH www.devmate.software
Vorher – Nachher - Beispiel
- 15 -
Test Code Generator
Before systematic testing
With systematic testing
4 Fehler, die mit nur
1 Standard-Testfall
unentdeckt bleiben
Nach Refactoring:
→ Ende > Start
Fehler abgefangen
→ Division durch 0
Fehler abgefangen
→ …
© Automated Software Testing GmbH www.devmate.software
KI-basierte Testcode-Generierung
- 16 -
© Automated Software Testing GmbH www.devmate.software
Artificial Intelligence Generators
▪ How it works
▪ Systeme lernen anhand vorgegebener Tests
▪ Wissen wird für Generieung der Tests verwendet
▪ Achtung: Wo bekommt man
ausreichend viele gute Unittest
für die AI?
▪ Schlechte “Lehrer” → schlechte Unit-Tests
▪ Example
▪ Java: diffblue
▪ > EUR 3000,-/Monat für bis zu 25 Entwickler
© Automated Software Testing GmbH www.devmate.software
Artificial Intelligence Generators: Example diffblue
Unit under test contains many bugs:
no input checks, division by 0, …
/**
* Calculates the average speed.
*/
public static double getAvgSpeed(LocalDateTime start, LocalDateTime end, double distance) {
Duration duration = Duration.between(start, end);
double hours = duration.getSeconds() / 60 / 60;
return distance / hours;
}
© Automated Software Testing GmbH www.devmate.software
AI Generators “whitebox-based" vs "blackbox-based"
AI erstellt nur 1 Testfall, der
überhaupt keinen Fehler findet
aber 100% des Codes abdeckt
Die erstellten Testdaten haben überhaupt keine
fachliche Relevanz, sondern verwirren den Leser eher
(Warum wurden genau dieser Wert gewählt?)
Im Vergleich dazu der mit einem Blackbox-Ansatz
generierte, sauber strukturierte und lesbare
Testcode mit sinnvollen Testdaten
© Automated Software Testing GmbH www.devmate.software
▪ Partner
▪ Johannes Kepler Universität Linz
▪ Automated Software Testing GmbH
▪ Gefördert von der FFG
▪ Ausgangssituation
▪ Viele Ankündigungen für KI im Testen
▪ Noch kaum praxistauglichen Produkte am Markt
▪ Ziel
▪ Sinnvolle Anwendungsfelder der KI im Unittest
finden und erste Prototypen umsetzen
Forschungsprojekt zu Testcode Generierung mit KI
- 20 -
© Automated Software Testing GmbH www.devmate.software
KI-Forschungsthema im Rahmen von devmate
Automatische Testfallreduktion
- 21 -
© Automated Software Testing GmbH www.devmate.software
Manueller
Aufwand
Unit-Test-Code Erstellung (halb)manuell
- 22 -
Code
Unit-Test
Code
Anforderungen
Test-Erstellung
Test-Erstellung
Validierung
Code-Erstellung
Lange
Ausführungszeit
Manueller
Aufwand
© Automated Software Testing GmbH www.devmate.software
Reduktion und Priorisierung von Testfällen
▪ Ausgangsbasis
▪ Bestehendes Set an Testfällen
▪ Diese sollen regelmäßig ausgeführt werden
▪ Alle Testfälle auszuführen kostet zu viel Zeit
▪ Beispiel: Person makeChild(Person mother, Person father)
▪ TF 1: mother = x, father = y, expexted Result = Person{father=y, mother=x}
▪ TF 2: mother = x, father = a, expected Result = Person{age=1}
▪ TF 3: mother = y, father = a, expected Result = Exception
© Automated Software Testing GmbH www.devmate.software
Reduktion und Priorisierung von Testfällen
▪ Erster Ansatz
▪ Ermittlung aller Kombinationen von Testfällen
▪ Berechnung von Ausführungszeit + Coverage pro Testfall
▪ Test-Set mit maximaler Coverage bei minimaler Ausführungszeit
Ausgeführte Testfälle Ausführungszeit Coverage
TF 1 10 s 20 %
TF 2 15 s 20 %
TF 3 5 s 20 %
TF 1 + TF 2 22 s 40 %
TF 1 + TF 3 12 s 20 %
TF 2 + TF 3 17 s 40 %
TF 1 + TF 2 + TF 3 27 s 45 %
Problem 1:
Was ist die beste
Kombination?
Problem 2:
#Kombinationen
© Automated Software Testing GmbH www.devmate.software
Reduktion und Priorisierung von Testfällen
▪ Lösung: Meta-Heuristische Sucherverfahren
(z.B. Genetischer Algorithmus)
▪ Intelligente Kombination von Möglichkeiten
▪ Einführung von Zufall zum Finden globaler Maxima
▪ Mehrere Iterationen
▪ Ausgabe bestes Ergebnis pro Iteration auf Basis vorgegebener
Optimierungskriterien
© Automated Software Testing GmbH www.devmate.software
Beispiel Reduktion/Priorisierung Test-Set
Urspr. Kombinationen
1, 0, 0, 0, 0
0, 1, 0, 0, 0
0, 0, 0, 1, 1
1, 1, 0, 0, 0
0, 1, 0, 1, 1
0, 0, 0, 1, 1
1, 1, 0, 1, 1
0, 1, 0, 1, 1
1, 0, 0, 1, 1
1. Iteration 2. Iteration
5 Testfälle. [1, 0, 0, 0, 0] => nur der erste Testfall wird ausgeführt
© Automated Software Testing GmbH www.devmate.software
Erste Ergebnisse
▪ Experiment mit DevMate-Codebasis
▪ Ziel: Reduktion #Testfälle, bei gleichbleibender Statement
Coverage
▪ Mutation Coverage als Benchmark
27
Package Code Coverage Mutation Score
P2 -5 Tests, -12 % -9 %
P3 - 32 Tests, 0 % 0 %
P4 -17 Tests, 0 % NaN
© Automated Software Testing GmbH www.devmate.software
Fazit
▪ Testfälle können reduziert werden, bei gleichbleibender Code
Coverage, aber reduzierter Mutation Coverage
▪ Ergebnisse variieren stark pro Package
▪ Abhängig von der Code-Komplexität
▪ Optimierung von Mutation Score aktuell nicht möglich
▪ Keine Test-Basierte Auswertung von Mutation Tools (open-source)
Metrik Initiales
Set
Reduziertes
Set
Unterschie
d
# Testfälle 246 178 - 28 %
Coverage 57 % 57 % 0 %
Mutation Score - 1 %
© Automated Software Testing GmbH www.devmate.software
▪ Inklusion weiterer Metriken
▪ Reproduktion der Ergebnisse für weitere Projekte
▪ Ziel: Benchmarking Datensets
▪ Vergleich Genetischer Algorithmus mit Reinforcement Learning
Forschungsausblick
- 29 -
0
10
20
30
40
50
60
Coverage Metrics Mutation Testing Test Smells
© Automated Software Testing GmbH www.devmate.software
▪ 3-Jähriges EU-Forschungsprojekt
▪ 32 Partner aus 7 Ländern
▪ Rolle von AST/Devmate
▪ Weitere Anwendungsgebiete von KI
▪ Laufzeit-Tests mit Digitalen Zwillingen
▪ Testcode-Generierung für PLC
Forschungsausblick
- 30 -
© Automated Software Testing GmbH www.devmate.software
Takeaway
▪ 20-30% des Projektaufwands für Unit Testing
▪ Reduktion dieses Aufwandes durch KI-Methoden
▪ Schlechter KI-Einsatz: Code-Generierung
▪ Traditionelle Ansätze bereits besser
▪ Guter KI-Einsatz: Priorisierung von Testfällen
▪ Reduktion der Testfälle um fast 1/3 möglich
© Automated Software Testing GmbH www.devmate.software
Fragen / Diskussion
- 32 -
© Automated Software Testing GmbH www.devmate.software
Vortragsanhang
Ergänzende Infos
- 33 -
© Automated Software Testing GmbH www.devmate.software - 34 -
© Automated Software Testing GmbH www.devmate.software
We help developers to
focus on their creativity
by automating unit tests.
- 35 -
© Automated Software Testing GmbH www.devmate.software
More Info
▪ 5 easy steps
▪ Visual Studio Store
▪ devmate Website
▪ Linkedin – devmate
▪ Linkedin – Automated Software Testing GmbH
- 36 -
© Automated Software Testing GmbH www.devmate.software
Automated Software Testing GmbH
A-4040 Linz, Gewerbepark Urfahr 6
[E] info@devmate.software
[W] www.devmate.software
- 37 -

Weitere ähnliche Inhalte

Ähnlich wie Next Level Unit Testing

Webanwendungen testen
Webanwendungen testenWebanwendungen testen
Webanwendungen testen
Boris Köster
 
UI Testautomation in der Praxis: Von Lokalisierung bis Nachhaltigkeit
UI Testautomation in der Praxis: Von Lokalisierung bis NachhaltigkeitUI Testautomation in der Praxis: Von Lokalisierung bis Nachhaltigkeit
UI Testautomation in der Praxis: Von Lokalisierung bis Nachhaltigkeit
Nico Orschel
 
TDD mit ABAP Units
TDD mit ABAP UnitsTDD mit ABAP Units
TDD mit ABAP Units
Cadaxo GmbH
 
Definition of Ready
Definition of ReadyDefinition of Ready
Definition of Ready
Markus Unterauer
 
Testing einer Angular App
Testing einer Angular AppTesting einer Angular App
Testing einer Angular App
Florian Bader
 
Testmanagement mit Visual Studio 2013
Testmanagement mit Visual Studio 2013Testmanagement mit Visual Studio 2013
Testmanagement mit Visual Studio 2013
Nico Orschel
 
DWX 2014 - Testmanagement mit Visual Studio 2013
DWX 2014 - Testmanagement mit Visual Studio 2013DWX 2014 - Testmanagement mit Visual Studio 2013
DWX 2014 - Testmanagement mit Visual Studio 2013
Nico Orschel
 
Intersys - Integration mit Spirateam (Zurich 2017)
Intersys - Integration mit Spirateam (Zurich 2017)Intersys - Integration mit Spirateam (Zurich 2017)
Intersys - Integration mit Spirateam (Zurich 2017)
Adam Sandman
 
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
Marc Müller
 
AdvancedTdd
AdvancedTddAdvancedTdd
AdvancedTdd
jlink
 
Scrum Rocks, Testing Sucks ?! RELOADED
Scrum Rocks, Testing Sucks ?! RELOADEDScrum Rocks, Testing Sucks ?! RELOADED
Scrum Rocks, Testing Sucks ?! RELOADED
SwissQ Consulting AG
 
DWX 2014 - Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
DWX 2014 -  Coded UI in der Praxis: Von Lokalisierung bis NachhaltigkeitDWX 2014 -  Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
DWX 2014 - Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
Nico Orschel
 
PHPUnit - Eine kurze Einführung
PHPUnit - Eine kurze EinführungPHPUnit - Eine kurze Einführung
PHPUnit - Eine kurze Einführung
frankstaude
 
Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017
Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017
Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017
Torsten Kleiber
 
Die Bedeutung Automatisierter Regressionstests
Die Bedeutung Automatisierter RegressionstestsDie Bedeutung Automatisierter Regressionstests
Die Bedeutung Automatisierter Regressionstests
Bild GmbH & Co. KG
 
Test-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der Zukunft
Test-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der ZukunftTest-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der Zukunft
Test-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der Zukunft
Christian Drumm
 
UnitTests? Ja, aber richtig!
UnitTests? Ja, aber richtig!UnitTests? Ja, aber richtig!
UnitTests? Ja, aber richtig!
OPITZ CONSULTING Deutschland
 
Windows as a Service - Herausforderungen ohne Windows Desktop Analytics
Windows as a Service - Herausforderungen ohne Windows Desktop AnalyticsWindows as a Service - Herausforderungen ohne Windows Desktop Analytics
Windows as a Service - Herausforderungen ohne Windows Desktop Analytics
Fabian Niesen
 
Ringvorlesung ITmitte.de : Vortrag der FIO SYSTEMS AG über Unit Tests und TDD
Ringvorlesung ITmitte.de : Vortrag der FIO SYSTEMS AG über Unit Tests und TDDRingvorlesung ITmitte.de : Vortrag der FIO SYSTEMS AG über Unit Tests und TDD
Ringvorlesung ITmitte.de : Vortrag der FIO SYSTEMS AG über Unit Tests und TDD
Community ITmitte.de
 
96% macoun 2013
96% macoun 201396% macoun 2013
96% macoun 2013
Maxim Zaks
 

Ähnlich wie Next Level Unit Testing (20)

Webanwendungen testen
Webanwendungen testenWebanwendungen testen
Webanwendungen testen
 
UI Testautomation in der Praxis: Von Lokalisierung bis Nachhaltigkeit
UI Testautomation in der Praxis: Von Lokalisierung bis NachhaltigkeitUI Testautomation in der Praxis: Von Lokalisierung bis Nachhaltigkeit
UI Testautomation in der Praxis: Von Lokalisierung bis Nachhaltigkeit
 
TDD mit ABAP Units
TDD mit ABAP UnitsTDD mit ABAP Units
TDD mit ABAP Units
 
Definition of Ready
Definition of ReadyDefinition of Ready
Definition of Ready
 
Testing einer Angular App
Testing einer Angular AppTesting einer Angular App
Testing einer Angular App
 
Testmanagement mit Visual Studio 2013
Testmanagement mit Visual Studio 2013Testmanagement mit Visual Studio 2013
Testmanagement mit Visual Studio 2013
 
DWX 2014 - Testmanagement mit Visual Studio 2013
DWX 2014 - Testmanagement mit Visual Studio 2013DWX 2014 - Testmanagement mit Visual Studio 2013
DWX 2014 - Testmanagement mit Visual Studio 2013
 
Intersys - Integration mit Spirateam (Zurich 2017)
Intersys - Integration mit Spirateam (Zurich 2017)Intersys - Integration mit Spirateam (Zurich 2017)
Intersys - Integration mit Spirateam (Zurich 2017)
 
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
 
AdvancedTdd
AdvancedTddAdvancedTdd
AdvancedTdd
 
Scrum Rocks, Testing Sucks ?! RELOADED
Scrum Rocks, Testing Sucks ?! RELOADEDScrum Rocks, Testing Sucks ?! RELOADED
Scrum Rocks, Testing Sucks ?! RELOADED
 
DWX 2014 - Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
DWX 2014 -  Coded UI in der Praxis: Von Lokalisierung bis NachhaltigkeitDWX 2014 -  Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
DWX 2014 - Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
 
PHPUnit - Eine kurze Einführung
PHPUnit - Eine kurze EinführungPHPUnit - Eine kurze Einführung
PHPUnit - Eine kurze Einführung
 
Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017
Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017
Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017
 
Die Bedeutung Automatisierter Regressionstests
Die Bedeutung Automatisierter RegressionstestsDie Bedeutung Automatisierter Regressionstests
Die Bedeutung Automatisierter Regressionstests
 
Test-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der Zukunft
Test-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der ZukunftTest-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der Zukunft
Test-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der Zukunft
 
UnitTests? Ja, aber richtig!
UnitTests? Ja, aber richtig!UnitTests? Ja, aber richtig!
UnitTests? Ja, aber richtig!
 
Windows as a Service - Herausforderungen ohne Windows Desktop Analytics
Windows as a Service - Herausforderungen ohne Windows Desktop AnalyticsWindows as a Service - Herausforderungen ohne Windows Desktop Analytics
Windows as a Service - Herausforderungen ohne Windows Desktop Analytics
 
Ringvorlesung ITmitte.de : Vortrag der FIO SYSTEMS AG über Unit Tests und TDD
Ringvorlesung ITmitte.de : Vortrag der FIO SYSTEMS AG über Unit Tests und TDDRingvorlesung ITmitte.de : Vortrag der FIO SYSTEMS AG über Unit Tests und TDD
Ringvorlesung ITmitte.de : Vortrag der FIO SYSTEMS AG über Unit Tests und TDD
 
96% macoun 2013
96% macoun 201396% macoun 2013
96% macoun 2013
 

Mehr von Daniel Lehner

Towards Quantum-based Graph Matching for IoT Systems
Towards Quantum-based Graph Matching for IoT SystemsTowards Quantum-based Graph Matching for IoT Systems
Towards Quantum-based Graph Matching for IoT Systems
Daniel Lehner
 
Digital Twins for IoT Systems: Exploiting Synergies between Industry and Acad...
Digital Twins for IoT Systems: Exploiting Synergies between Industry and Acad...Digital Twins for IoT Systems: Exploiting Synergies between Industry and Acad...
Digital Twins for IoT Systems: Exploiting Synergies between Industry and Acad...
Daniel Lehner
 
A Method for Template-based Architecture Modeling and its Application to Digi...
A Method for Template-based Architecture Modeling and its Application to Digi...A Method for Template-based Architecture Modeling and its Application to Digi...
A Method for Template-based Architecture Modeling and its Application to Digi...
Daniel Lehner
 
Digitale Zwillinge - Potenziale und Geschäftsmodelle
Digitale Zwillinge - Potenziale und GeschäftsmodelleDigitale Zwillinge - Potenziale und Geschäftsmodelle
Digitale Zwillinge - Potenziale und Geschäftsmodelle
Daniel Lehner
 
Schritt für Schritt zum digitalen Zwilling
Schritt für Schritt zum digitalen ZwillingSchritt für Schritt zum digitalen Zwilling
Schritt für Schritt zum digitalen Zwilling
Daniel Lehner
 
What's a Digital Twin - and why you need a better one?
What's a Digital Twin - and why you need a better one?What's a Digital Twin - and why you need a better one?
What's a Digital Twin - and why you need a better one?
Daniel Lehner
 
A Model-Driven Platform for Engineering Holistic Digital Twins
A Model-Driven Platform for Engineering Holistic Digital TwinsA Model-Driven Platform for Engineering Holistic Digital Twins
A Model-Driven Platform for Engineering Holistic Digital Twins
Daniel Lehner
 
Git-basiertes Qualitätsmonitoring von Systems Engineering Modellen
Git-basiertes Qualitätsmonitoring von Systems Engineering ModellenGit-basiertes Qualitätsmonitoring von Systems Engineering Modellen
Git-basiertes Qualitätsmonitoring von Systems Engineering Modellen
Daniel Lehner
 
Towards Reactive Planning With Digital Twins and Model-Driven Optimization
Towards Reactive Planning With Digital Twins and Model-Driven OptimizationTowards Reactive Planning With Digital Twins and Model-Driven Optimization
Towards Reactive Planning With Digital Twins and Model-Driven Optimization
Daniel Lehner
 
Git-based Model Management
Git-based Model ManagementGit-based Model Management
Git-based Model Management
Daniel Lehner
 
How to Engineer Digital Twins
How to Engineer Digital TwinsHow to Engineer Digital Twins
How to Engineer Digital Twins
Daniel Lehner
 
Modeling Capabilities of Digital Twin Platforms: Old Wine in New Bottles?
Modeling Capabilities of Digital Twin Platforms: Old Wine in New Bottles?Modeling Capabilities of Digital Twin Platforms: Old Wine in New Bottles?
Modeling Capabilities of Digital Twin Platforms: Old Wine in New Bottles?
Daniel Lehner
 
Sustainable Development and Management of Systems Engineering Models
Sustainable Development and Management of Systems Engineering ModelsSustainable Development and Management of Systems Engineering Models
Sustainable Development and Management of Systems Engineering Models
Daniel Lehner
 
2021_moddit_presentation_final.pdf
2021_moddit_presentation_final.pdf2021_moddit_presentation_final.pdf
2021_moddit_presentation_final.pdf
Daniel Lehner
 
Towards a Flexible Evolution of Digital Twins with Fluent APIs
Towards a Flexible Evolution of Digital Twins with Fluent APIsTowards a Flexible Evolution of Digital Twins with Fluent APIs
Towards a Flexible Evolution of Digital Twins with Fluent APIs
Daniel Lehner
 
AML4DT: A Model-Driven Framework for Developing and Maintaining Digital Twin...
AML4DT: A Model-Driven Framework for Developing  and Maintaining Digital Twin...AML4DT: A Model-Driven Framework for Developing  and Maintaining Digital Twin...
AML4DT: A Model-Driven Framework for Developing and Maintaining Digital Twin...
Daniel Lehner
 
Model-based Detection of Runtime Inconsistencies
Model-based Detection of Runtime InconsistenciesModel-based Detection of Runtime Inconsistencies
Model-based Detection of Runtime Inconsistencies
Daniel Lehner
 
A Reference Architecture for Leveraging Model Repositories for Digital Twins
A Reference Architecture for Leveraging Model Repositories for Digital TwinsA Reference Architecture for Leveraging Model Repositories for Digital Twins
A Reference Architecture for Leveraging Model Repositories for Digital Twins
Daniel Lehner
 

Mehr von Daniel Lehner (18)

Towards Quantum-based Graph Matching for IoT Systems
Towards Quantum-based Graph Matching for IoT SystemsTowards Quantum-based Graph Matching for IoT Systems
Towards Quantum-based Graph Matching for IoT Systems
 
Digital Twins for IoT Systems: Exploiting Synergies between Industry and Acad...
Digital Twins for IoT Systems: Exploiting Synergies between Industry and Acad...Digital Twins for IoT Systems: Exploiting Synergies between Industry and Acad...
Digital Twins for IoT Systems: Exploiting Synergies between Industry and Acad...
 
A Method for Template-based Architecture Modeling and its Application to Digi...
A Method for Template-based Architecture Modeling and its Application to Digi...A Method for Template-based Architecture Modeling and its Application to Digi...
A Method for Template-based Architecture Modeling and its Application to Digi...
 
Digitale Zwillinge - Potenziale und Geschäftsmodelle
Digitale Zwillinge - Potenziale und GeschäftsmodelleDigitale Zwillinge - Potenziale und Geschäftsmodelle
Digitale Zwillinge - Potenziale und Geschäftsmodelle
 
Schritt für Schritt zum digitalen Zwilling
Schritt für Schritt zum digitalen ZwillingSchritt für Schritt zum digitalen Zwilling
Schritt für Schritt zum digitalen Zwilling
 
What's a Digital Twin - and why you need a better one?
What's a Digital Twin - and why you need a better one?What's a Digital Twin - and why you need a better one?
What's a Digital Twin - and why you need a better one?
 
A Model-Driven Platform for Engineering Holistic Digital Twins
A Model-Driven Platform for Engineering Holistic Digital TwinsA Model-Driven Platform for Engineering Holistic Digital Twins
A Model-Driven Platform for Engineering Holistic Digital Twins
 
Git-basiertes Qualitätsmonitoring von Systems Engineering Modellen
Git-basiertes Qualitätsmonitoring von Systems Engineering ModellenGit-basiertes Qualitätsmonitoring von Systems Engineering Modellen
Git-basiertes Qualitätsmonitoring von Systems Engineering Modellen
 
Towards Reactive Planning With Digital Twins and Model-Driven Optimization
Towards Reactive Planning With Digital Twins and Model-Driven OptimizationTowards Reactive Planning With Digital Twins and Model-Driven Optimization
Towards Reactive Planning With Digital Twins and Model-Driven Optimization
 
Git-based Model Management
Git-based Model ManagementGit-based Model Management
Git-based Model Management
 
How to Engineer Digital Twins
How to Engineer Digital TwinsHow to Engineer Digital Twins
How to Engineer Digital Twins
 
Modeling Capabilities of Digital Twin Platforms: Old Wine in New Bottles?
Modeling Capabilities of Digital Twin Platforms: Old Wine in New Bottles?Modeling Capabilities of Digital Twin Platforms: Old Wine in New Bottles?
Modeling Capabilities of Digital Twin Platforms: Old Wine in New Bottles?
 
Sustainable Development and Management of Systems Engineering Models
Sustainable Development and Management of Systems Engineering ModelsSustainable Development and Management of Systems Engineering Models
Sustainable Development and Management of Systems Engineering Models
 
2021_moddit_presentation_final.pdf
2021_moddit_presentation_final.pdf2021_moddit_presentation_final.pdf
2021_moddit_presentation_final.pdf
 
Towards a Flexible Evolution of Digital Twins with Fluent APIs
Towards a Flexible Evolution of Digital Twins with Fluent APIsTowards a Flexible Evolution of Digital Twins with Fluent APIs
Towards a Flexible Evolution of Digital Twins with Fluent APIs
 
AML4DT: A Model-Driven Framework for Developing and Maintaining Digital Twin...
AML4DT: A Model-Driven Framework for Developing  and Maintaining Digital Twin...AML4DT: A Model-Driven Framework for Developing  and Maintaining Digital Twin...
AML4DT: A Model-Driven Framework for Developing and Maintaining Digital Twin...
 
Model-based Detection of Runtime Inconsistencies
Model-based Detection of Runtime InconsistenciesModel-based Detection of Runtime Inconsistencies
Model-based Detection of Runtime Inconsistencies
 
A Reference Architecture for Leveraging Model Repositories for Digital Twins
A Reference Architecture for Leveraging Model Repositories for Digital TwinsA Reference Architecture for Leveraging Model Repositories for Digital Twins
A Reference Architecture for Leveraging Model Repositories for Digital Twins
 

Next Level Unit Testing

  • 1. © Automated Software Testing GmbH www.devmate.software Entwicklungsqualität steigern! Johannes Bergsmann & Daniel Lehner CTO Researcher - 1 -
  • 2. © Automated Software Testing GmbH www.devmate.software Inhalt ▪ Unittest Praxis vs. Theorie ▪ Blackbox basierte Testcode Generierung ▪ KI Beispiel mit Whitebox Generierung ▪ Aktuelle KI Forschung zur Testfallreduktion ▪ Forschungsausblick ▪ Fragen/Diskussion - 2 -
  • 3. © Automated Software Testing GmbH www.devmate.software Praxis vs. Theorie im Unit-Testen - 3 -
  • 4. © Automated Software Testing GmbH www.devmate.software Unit Test Erstellung ▪ Welche Unit-Tests werden typischerweise erstellt? ▪ Unit-Test, der einmal links geht und ▪ Unit-Test, der einmal rechts geht → 100% Code-Abdeckung ist mit 2 Tests erreicht und im CI-System ist alles „grün“ ▪ Welche Tests sollten erstellt werden, um dies funktional voll zu testen? ▪ Jede (Einzel-)Bedingung muss für sich getestet werden (4 Normal-Testfälle) ▪ Grenzwerte (oben/unten) der beiden Bedingungen (weitere 4 Testfälle) ▪ Fehlertests außerhalb der Grenzen oben und unten sowie innerhalb der Grenzen mit Fehlerwerten (weitere 6 Testfälle) → mind. 14 Unit-Tests erforderlich für gute funktionale Testabdeckung! - 4 - Unit Test Design Techniques A > 10 & B < 5 T1 T2 T3 T4 A > 10 1 1 0 0 B < 5 1 0 1 0
  • 5. © Automated Software Testing GmbH www.devmate.software durch den devmate Testcode Generator Toolunterstützte Unit-Tests Erstellung - 5 -
  • 6. © Automated Software Testing GmbH www.devmate.software Unit-Test Code Unit-Test Code Test-Code-Generator Ablaufübersicht ▪ Low-Code Plattform für Unit-Test Erstellung ▪ Bessere fachliche Sicht auf die Tests für Entwickler (Legacy) Code Entwickler Parser Generator Zwischen- Modell Jeder Code, der getestet und für gut befunden wurde Syntax und Semantik des Codes inkl. Test-Infos. lesbar z.B. als XML-Datei. fertiger Unit-Test- Code sichert den Legacy-Code ab Code Änderung Code Änderung Einbindung in CI-System ist möglich A Code basierte Absicherung TDD/MBT Ansatz (Validierung) B Test-Modell (CTE / ÄK)
  • 7. © Automated Software Testing GmbH www.devmate.software an einem einfachen Beispiel Praktische Test-Code Generierung - 7 -
  • 8. © Automated Software Testing GmbH www.devmate.software Example: “Test Code Generator” Source: https://www.automated-software-testing.com/ Unit under test
  • 9. © Automated Software Testing GmbH www.devmate.software Example: “Test Code Generator” Source: https://www.automated-software-testing.com/ Developer defines equivalence classes and representatives (test data)
  • 10. © Automated Software Testing GmbH www.devmate.software Example: “Equivalence Class Prediction” Source: https://www.devmate.software/ Equivlaence-Class & Data Prediction Module
  • 11. © Automated Software Testing GmbH www.devmate.software Example: “Test Code Generator” Source: https://www.automated-software-testing.com/ Tool combines equivalence classes and representatives to test cases.
  • 12. © Automated Software Testing GmbH www.devmate.software Example: “Test Code Generator” Collapsed view looks like test table in Excel.
  • 13. © Automated Software Testing GmbH www.devmate.software Example: “Test Code Generator” Source: https://www.automated-software-testing.com/ Developer defines “Test Oracle” (expected Values): - Values - Exceptions - Expected Side-Effects
  • 14. © Automated Software Testing GmbH www.devmate.software Example: “Test Code Generator” Source: https://www.automated-software-testing.com/ Tool generates readable and maintainable unit test code. Test data set for positive tests Test data set for negative tests Parameterized test
  • 15. © Automated Software Testing GmbH www.devmate.software Vorher – Nachher - Beispiel - 15 - Test Code Generator Before systematic testing With systematic testing 4 Fehler, die mit nur 1 Standard-Testfall unentdeckt bleiben Nach Refactoring: → Ende > Start Fehler abgefangen → Division durch 0 Fehler abgefangen → …
  • 16. © Automated Software Testing GmbH www.devmate.software KI-basierte Testcode-Generierung - 16 -
  • 17. © Automated Software Testing GmbH www.devmate.software Artificial Intelligence Generators ▪ How it works ▪ Systeme lernen anhand vorgegebener Tests ▪ Wissen wird für Generieung der Tests verwendet ▪ Achtung: Wo bekommt man ausreichend viele gute Unittest für die AI? ▪ Schlechte “Lehrer” → schlechte Unit-Tests ▪ Example ▪ Java: diffblue ▪ > EUR 3000,-/Monat für bis zu 25 Entwickler
  • 18. © Automated Software Testing GmbH www.devmate.software Artificial Intelligence Generators: Example diffblue Unit under test contains many bugs: no input checks, division by 0, … /** * Calculates the average speed. */ public static double getAvgSpeed(LocalDateTime start, LocalDateTime end, double distance) { Duration duration = Duration.between(start, end); double hours = duration.getSeconds() / 60 / 60; return distance / hours; }
  • 19. © Automated Software Testing GmbH www.devmate.software AI Generators “whitebox-based" vs "blackbox-based" AI erstellt nur 1 Testfall, der überhaupt keinen Fehler findet aber 100% des Codes abdeckt Die erstellten Testdaten haben überhaupt keine fachliche Relevanz, sondern verwirren den Leser eher (Warum wurden genau dieser Wert gewählt?) Im Vergleich dazu der mit einem Blackbox-Ansatz generierte, sauber strukturierte und lesbare Testcode mit sinnvollen Testdaten
  • 20. © Automated Software Testing GmbH www.devmate.software ▪ Partner ▪ Johannes Kepler Universität Linz ▪ Automated Software Testing GmbH ▪ Gefördert von der FFG ▪ Ausgangssituation ▪ Viele Ankündigungen für KI im Testen ▪ Noch kaum praxistauglichen Produkte am Markt ▪ Ziel ▪ Sinnvolle Anwendungsfelder der KI im Unittest finden und erste Prototypen umsetzen Forschungsprojekt zu Testcode Generierung mit KI - 20 -
  • 21. © Automated Software Testing GmbH www.devmate.software KI-Forschungsthema im Rahmen von devmate Automatische Testfallreduktion - 21 -
  • 22. © Automated Software Testing GmbH www.devmate.software Manueller Aufwand Unit-Test-Code Erstellung (halb)manuell - 22 - Code Unit-Test Code Anforderungen Test-Erstellung Test-Erstellung Validierung Code-Erstellung Lange Ausführungszeit Manueller Aufwand
  • 23. © Automated Software Testing GmbH www.devmate.software Reduktion und Priorisierung von Testfällen ▪ Ausgangsbasis ▪ Bestehendes Set an Testfällen ▪ Diese sollen regelmäßig ausgeführt werden ▪ Alle Testfälle auszuführen kostet zu viel Zeit ▪ Beispiel: Person makeChild(Person mother, Person father) ▪ TF 1: mother = x, father = y, expexted Result = Person{father=y, mother=x} ▪ TF 2: mother = x, father = a, expected Result = Person{age=1} ▪ TF 3: mother = y, father = a, expected Result = Exception
  • 24. © Automated Software Testing GmbH www.devmate.software Reduktion und Priorisierung von Testfällen ▪ Erster Ansatz ▪ Ermittlung aller Kombinationen von Testfällen ▪ Berechnung von Ausführungszeit + Coverage pro Testfall ▪ Test-Set mit maximaler Coverage bei minimaler Ausführungszeit Ausgeführte Testfälle Ausführungszeit Coverage TF 1 10 s 20 % TF 2 15 s 20 % TF 3 5 s 20 % TF 1 + TF 2 22 s 40 % TF 1 + TF 3 12 s 20 % TF 2 + TF 3 17 s 40 % TF 1 + TF 2 + TF 3 27 s 45 % Problem 1: Was ist die beste Kombination? Problem 2: #Kombinationen
  • 25. © Automated Software Testing GmbH www.devmate.software Reduktion und Priorisierung von Testfällen ▪ Lösung: Meta-Heuristische Sucherverfahren (z.B. Genetischer Algorithmus) ▪ Intelligente Kombination von Möglichkeiten ▪ Einführung von Zufall zum Finden globaler Maxima ▪ Mehrere Iterationen ▪ Ausgabe bestes Ergebnis pro Iteration auf Basis vorgegebener Optimierungskriterien
  • 26. © Automated Software Testing GmbH www.devmate.software Beispiel Reduktion/Priorisierung Test-Set Urspr. Kombinationen 1, 0, 0, 0, 0 0, 1, 0, 0, 0 0, 0, 0, 1, 1 1, 1, 0, 0, 0 0, 1, 0, 1, 1 0, 0, 0, 1, 1 1, 1, 0, 1, 1 0, 1, 0, 1, 1 1, 0, 0, 1, 1 1. Iteration 2. Iteration 5 Testfälle. [1, 0, 0, 0, 0] => nur der erste Testfall wird ausgeführt
  • 27. © Automated Software Testing GmbH www.devmate.software Erste Ergebnisse ▪ Experiment mit DevMate-Codebasis ▪ Ziel: Reduktion #Testfälle, bei gleichbleibender Statement Coverage ▪ Mutation Coverage als Benchmark 27 Package Code Coverage Mutation Score P2 -5 Tests, -12 % -9 % P3 - 32 Tests, 0 % 0 % P4 -17 Tests, 0 % NaN
  • 28. © Automated Software Testing GmbH www.devmate.software Fazit ▪ Testfälle können reduziert werden, bei gleichbleibender Code Coverage, aber reduzierter Mutation Coverage ▪ Ergebnisse variieren stark pro Package ▪ Abhängig von der Code-Komplexität ▪ Optimierung von Mutation Score aktuell nicht möglich ▪ Keine Test-Basierte Auswertung von Mutation Tools (open-source) Metrik Initiales Set Reduziertes Set Unterschie d # Testfälle 246 178 - 28 % Coverage 57 % 57 % 0 % Mutation Score - 1 %
  • 29. © Automated Software Testing GmbH www.devmate.software ▪ Inklusion weiterer Metriken ▪ Reproduktion der Ergebnisse für weitere Projekte ▪ Ziel: Benchmarking Datensets ▪ Vergleich Genetischer Algorithmus mit Reinforcement Learning Forschungsausblick - 29 - 0 10 20 30 40 50 60 Coverage Metrics Mutation Testing Test Smells
  • 30. © Automated Software Testing GmbH www.devmate.software ▪ 3-Jähriges EU-Forschungsprojekt ▪ 32 Partner aus 7 Ländern ▪ Rolle von AST/Devmate ▪ Weitere Anwendungsgebiete von KI ▪ Laufzeit-Tests mit Digitalen Zwillingen ▪ Testcode-Generierung für PLC Forschungsausblick - 30 -
  • 31. © Automated Software Testing GmbH www.devmate.software Takeaway ▪ 20-30% des Projektaufwands für Unit Testing ▪ Reduktion dieses Aufwandes durch KI-Methoden ▪ Schlechter KI-Einsatz: Code-Generierung ▪ Traditionelle Ansätze bereits besser ▪ Guter KI-Einsatz: Priorisierung von Testfällen ▪ Reduktion der Testfälle um fast 1/3 möglich
  • 32. © Automated Software Testing GmbH www.devmate.software Fragen / Diskussion - 32 -
  • 33. © Automated Software Testing GmbH www.devmate.software Vortragsanhang Ergänzende Infos - 33 -
  • 34. © Automated Software Testing GmbH www.devmate.software - 34 -
  • 35. © Automated Software Testing GmbH www.devmate.software We help developers to focus on their creativity by automating unit tests. - 35 -
  • 36. © Automated Software Testing GmbH www.devmate.software More Info ▪ 5 easy steps ▪ Visual Studio Store ▪ devmate Website ▪ Linkedin – devmate ▪ Linkedin – Automated Software Testing GmbH - 36 -
  • 37. © Automated Software Testing GmbH www.devmate.software Automated Software Testing GmbH A-4040 Linz, Gewerbepark Urfahr 6 [E] info@devmate.software [W] www.devmate.software - 37 -