Komfortable, systematische Modellierung und
Automatisierung von GUI-Tests Diplomverteidigung - Oliver Stadie
PRÄSENTATIONS-TITEL • DATUM VERTRAULICH 1
29.09.2015
2
GLIEDERUNG
Einleitung
Grundlagen
Entwickelte Methode + Umsetzung
Auswertung, Fazit und Ausblick
3
Einleitung
Motivation + Zielstellung
4
• ein generischer Weg Software zu testen sind GUI-Tests
• Ziel: Entwicklung einer GUI-Test-Methode
• kombinieren existierender Methoden:
• Capture/Replay
• Widget-Trees
• Zustandsdiagramme
• Klassifikationsbaummethode
• Machbarkeit: Konzept und Implementation
• Vor- und Nachteile der Kombination
Einleitung
5
Grundlagen
Capture/Replay + Widget-Trees
6
Grundlagen
Capture/Replay
• Folge von Aktionen wird aufgenommen und wieder abgespielt
• Vorteile:
• einfache Bedienbarkeit
• weite Verbreitung
• Nachteil: hoher Wartungsaufwand
Widget-Trees (nach [Baue11])
• beschreibt die Widget-Hierarchie zu einem Zeitpunkt
• Vorteil: detaillierte Modellierung von GUI-Zuständen
• Nachteil: Beschränkung auf einen Zustand
Klassifikationsbaummethode + Zustandsdiagramm
7
Grundlagen
Klassifikationsbaummethode
• Vorteile:
• systematische Herleitung von Testfällen
• etabliert in der Praxis
• geeignet für funktionales Black-Box-Testen
• Nachteil: kann für komplexe Systeme zu groß werden
Zustandsdiagramm
• Vorteile:
• gute Modellierung von Systemverhalten (Sequenzen)
• leicht zu erlernen
• leicht zu warten
• Nachteil: schwer (voll-)automatisch konstruierbar
Zustandsdiagramme - Hierarchie
8
Grundlagen
• hilft der Übersichtlichkeit
• beschreibt XOR-Relation („1-aus-n“)
• Zustand A ⇔ Zustand A1 XOR Zustand A2
Zustandsdiagramme - Orthogonalität
9
Grundlagen
• UND-Relation
• 𝑍𝑢𝑠𝑡𝑎𝑛𝑑 𝐴 ⇔ 𝐵𝑒𝑟𝑒𝑖𝑐ℎ 𝑀 𝑈𝑁𝐷 𝐵𝑒𝑟𝑒𝑖𝑐ℎ 𝑀
⇔ (𝑀1 𝑋𝑂𝑅 𝑀2) 𝑈𝑁𝐷 (𝑁1 𝑋𝑂𝑅 𝑁1)
• reduziert Komplexität
• nur N+M Zustände erforderlich, anstatt N*M
10
Entwickelte Methode + Umsetzung
Überblick
11
Entwickelte Methode + Umsetzung
Phase 1: Capture
12
Entwickelte Methode + Umsetzung
Phase 1:
Capture Peripherie
SUT
GUI-Modell
Capture-
Sequenzen
Phase 1: Capture - Artefakte
13
Entwickelte Methode + Umsetzung
GUI-Modell
Capture-Sequenzen
0
2
4
16
64
2
4
x² x²
x³
0 2 4 16
2 x² x²
0 4 64
4 x³
Phase 2: Modelle abstrahieren
14
Entwickelte Methode + Umsetzung
Phase 2:
Modelle
abstrahieren
Abstrahiertes
GUI-Modell
GUI-Modell
Capture-
Sequenzen
Abstrahiertes GUI-Modell - vereinfacht
15
Entwickelte Methode + Umsetzung
[Krus11, KrWe12]
Phase 3: Testsequenzen generieren
16
Entwickelte Methode + Umsetzung
Phase 3:
Testsequenzen
generieren Testsequenzen
Abstrahiertes
GUI-Modell
Phase 4: Tests ausführen
17
Entwickelte Methode + Umsetzung
Phase 4: Tests
ausführen Testsequenzen
Peripherie
SUT
Phase 2: Details
18
Entwickelte Methode + Umsetzung
1. Hierarchie erzeugen
2. Orthogonalität erzeugen
3. Sequenzen einbeziehen
4. Klassifikationsbaum erzeugen
Phase 2: Hierarchie erzeugen
19
Entwickelte Methode + Umsetzung
Phase 2: Hierarchie erzeugen
20
Entwickelte Methode + Umsetzung
Phase 2: Hierarchie erzeugen
21
Entwickelte Methode + Umsetzung
Window
Label …
Name
“Ergebnis”
Wert
“0”
Phase 2: Hierarchie erzeugen
22
Entwickelte Methode + Umsetzung
Window
Label …
Name Wert
“0” “Ergebnis”
Phase 2: Hierarchie erzeugen
23
Entwickelte Methode + Umsetzung
Window
Name
“Rechner”
Phase 2: Orthogonalität erzeugen
24
Entwickelte Methode + Umsetzung
Programmierer-Modus Programmierer-Modus
&
Menü
Standard-Modus
Phase 2: Orthogonalität erzeugen
25
Entwickelte Methode + Umsetzung
Window
Programmierer-
Menü-Eintrag Label
…
Window
Programmierer-
Menü-Eintrag
Label
…
A
A A
Phase 2: Orthogonalität erzeugen + Transitionen
26
Entwickelte Methode + Umsetzung
27
Auswertung, Fazit und Ausblick
Auswertung & Fazit
28
Auswertung, Fazit und Ausblick
• vier Methoden erfolgreich kombiniert zu GUI-Test-Verfahren
• Prototyp evaluiert an einem Windows-Taschenrechner Tutorial
• erste Hinweise über die Praxistauglichkeit der Methode
• Machbarkeit ist gegeben
• produktiver Einsatz erfordert jedoch noch viel Arbeit
• bisher: Einschränkung auf Links-Klick und wenige Widget-Typen
• relevante Resultate
• keine Erkennung interner Zustandswechsel
• einige sichtbare Element fehlen im Widget-Tree
Ausblick
29
Auswertung, Fazit und Ausblick
Vertiefend
• fehlende Widget-Tree-Elemente untersuchen
• Prototyp vervollständigen
• Modellierungsmöglichkeiten für Tester verbessern
• Evaluation auf weiteren SUTs
Weiterführend
• Regressions-Tests und Testorakel.
• Variablen, Wächter
• Historie
• Nguyen et al. [NgMT12] zur Parametrisierung.
Quellen
30
Quellen
• [Baue11] BAUERSFELD, SEBASTIAN: A Metaheuristic Approach to Automatic Test Case Generation for GUI-Based Applications, Humboldt-Universität zu Berlin, 2011
• [Krus11] KRUSE, PETER M: Test Sequence Generation from Classification Trees using Multi-agent Systems. In: EUMAS 2011. Maastricht, NL, 2011
• [KrWe12] KRUSE, PETER M. ; WEGENER, JOACHIM: Test Sequence Generation from Classification Trees. In: 2012 IEEE Fifth International Conference on Software Testing, Verification and Validation. Montreal, QC : IEEE, 2012 — ISBN 978-0-7695-4670-4, S. 539–548
• [NgMT12] NGUYEN, CU D ; MARCHETTO, ALESSANDRO ; TONELLA, PAOLO: Combining Model-Based and Combinatorial Testing for Effective Test Case Generation. In: Proceedings of the 2012 International Symposium on Software Testing and Analysis, ISSTA 2012. New York, NY, USA, 2012 — ISBN 9781450314541, S. 100–110
PRÄSENTATIONS-TITEL • DATUM VERTRAULICH 31
ENGINEERING SOLUTIONS AND PRODUCTS FOR AUTOMOTIVE
ELECTRONICS & SOFTWARE & MECHANICS