with inferred macro events effective generation of gui tests monkey see, monkey...

35
1 Monkey See, Monkey Do: Effective Generation of GUI Tests with Inferred Macro Events Markus Ermuth Michael Pradel TU Darmstadt

Upload: others

Post on 10-Oct-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

1

Monkey See, Monkey Do:Effective Generation of GUI Testswith Inferred Macro Events

Markus ErmuthMichael Pradel

TU Darmstadt

Page 2: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

2

Motivation

How to test complex GUIs?

Manual Analysis-based Random

Page 3: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

2

Motivation

How to test complex GUIs?

� Realistic event sequences� Huge effort

Manual Analysis-based Random

Page 4: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

2

Motivation

How to test complex GUIs?

� Automatic� Scalability issues

Analysis-basedManual Random

Page 5: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

2

Motivation

How to test complex GUIs?

� Automatic and scalable� Used in practice

Manual Analysis-based Random

Page 6: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

2

Motivation

How to test complex GUIs?

� Automatic and scalable� Used in practice

Manual Analysis-based Random

Page 7: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

3

Problem

Header:� Mouseover

Items:� Mouseover� Mouseout� Click

Page 8: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

3

Problem

� Effective testing requirescomplex, realisticsequences of events

� Probability to hit them bychance: Extremely small

Page 9: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

3

Problem

� Effective testing requirescomplex, realisticsequences of events

� Probability to hit them bychance: Extremely small

Observation:UI-level events 6= Logical events

Page 10: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

4

This Talk

Monkey see, monkey do

� Learn usage patterns from users

� Imitate them during test generation

Page 11: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

5

Events vs. Macro Events

Event (implementation level)� Type, target

Macro event (logical)� Finite state machine� Transitions = abstracted events

over,header

over,item

over,item

out,item

click,item

out,item

click,item3

Page 12: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

6

Overview

GUI application

Traces

Macros

Tests

Record user actions

Infer macro events

Test generation

Page 13: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

6

Overview

GUI application

Traces

Macros

Tests

Record user actions

Infer macro events

Test generation

Fully automatic

Page 14: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

7

Recording User Actions

Trace: Sequence of events

...over, headerover, item1click, item1out, item1...

...over, headerover, item1out, item1over, item2click, item2out, item2...

etc.

Page 15: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

8

Inference of Macro Events

TraceMacroevents

Frequentsubsequ.mining

ClusteringFiniteautomatainference

Page 16: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

8

Inference of Macro Events

TraceMacroevents

Goal: Identify recurring patterns andremove noise

Adapted CloSpan algorithm [Yan et al., 2003]

� Bounded length of subsequences� Structural relations between events

Frequentsubsequ.mining

ClusteringFiniteautomatainference

Page 17: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

8

Inference of Macro Events

TraceMacroevents

...over, headerover, item1click, item1out, item1...

...over, headerover, item1out, item1over, item2click, item2out, item2...

Frequentsubsequ.mining

ClusteringFiniteautomatainference

Page 18: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

8

Inference of Macro Events

TraceMacroevents

...over, headerover, itemclick, itemout, item...

...over, headerover, itemout, itemover, itemclick, itemout, item...

Frequentsubsequ.mining

ClusteringFiniteautomatainference

Page 19: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

8

Inference of Macro Events

TraceMacroevents

...over, headerover, itemclick, itemout, item...

...over, headerover, itemout, itemover, itemclick, itemout, item...

Frequentsubsequ.mining

ClusteringFiniteautomatainference

Page 20: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

8

Inference of Macro Events

TraceMacroevents

Goal: Group related subsequences

Prefix clustering:� Same initial event ; same cluster

Frequentsubsequ.mining

ClusteringFiniteautomatainference

Page 21: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

8

Inference of Macro Events

TraceMacroevents

over, headerover, itemclick, itemout, item

over, headerover, itemout, itemover, itemclick, itemout, item

Frequentsubsequ.mining

ClusteringFiniteautomatainference

Page 22: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

8

Inference of Macro Events

TraceMacroevents

over, headerover, itemclick, itemout, item

over, headerover, itemout, itemover, itemclick, itemout, item

Frequentsubsequ.mining

ClusteringFiniteautomatainference

Page 23: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

8

Inference of Macro Events

TraceMacroevents

Goal: Summarize sequences into macros

Adapted k-tails algorithm [Biermann, Feldman, 1972]

� Optimized state merging� Structural relations between events

Frequentsubsequ.mining

ClusteringFiniteautomatainference

Page 24: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

8

Inference of Macro Events

TraceMacroevents

over,header

over,item

over,item

out,item

click,item

out,item

Frequentsubsequ.mining

ClusteringFiniteautomatainference

Page 25: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

9

Test Generation

� Interleave random testing withmacro replay

� Pick and replay macros based onavailable events

� Replay active macro until reaching afinal state

Page 26: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

10

More Details in the Paper

Page 27: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

11

Implementation

Client-side web applications

Builds on WebAppWalker� Framework for UI-level testing� Firefox add-on� Strategies for selecting events

https://github.com/michaelpradel/WebAppWalker/

Page 28: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

12

Evaluation

Effectiveness and efficiency?

Setup:� 4 real-world applications� 16 usage traces� Comparison with random

testing

Page 29: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

13

Visited Pages

How many pages do thegenerated tests reach?

Significantimprovementsfor 3/4applications

0

5

10

15

20

25

0 100 200 300 400 500

#vi

site

dpa

ges

# triggered events (Drupal)

macrorandom

Page 30: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

14

Branch Coverage

How many branches do thegenerated tests cover?

Significantimprovementsfor 3/4applications

3000

3500

4000

4500

5000

5500

6000

0 100 200 300 400 500

#co

vere

dbr

anch

es

# triggered events (Zurmo)

macrorandom

Page 31: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

15

Covered Usage Scenarios

How many usage scenarios do thegenerated tests cover?

0

2

4

6

8

10

add content

previewcontent

comment article

edit content

delete content

simple search

advanced search

user search#te

sts

cove

ring

usag

esc

enar

io

macrorandom

Page 32: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

16

Performance

� Inferring macro events

� 13 seconds – 85 minutes

� One-time effort

� Test generation

� 0.7 – 1.3 seconds per event

� Only 8% slower than random testing

Page 33: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

17

Future Work

� Cross-application macro learning

� Lightweight, in-production gatheringof traces

� Scalability of inference algorithms

Page 34: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

18

Conclusion

� Macro events:Abstract UI events into logical events

� Infer and apply macros:More effective GUI testing

� Human knowledge improvesautomated testing

Page 35: with Inferred Macro Events Effective Generation of GUI Tests Monkey See, Monkey …mp.binaervarianz.de/issta2016-macros_slides.pdf · 2016. 9. 2. · 4 This Talk Monkey see, monkey

18

Conclusion

� Macro events:Abstract UI events into logical events

� Infer and apply macros:More effective GUI testing

� Human knowledge improvesautomated testing

Thanks!