+ All Categories
Home > Documents > Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P...

Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P...

Date post: 03-Jul-2020
Category:
Upload: others
View: 10 times
Download: 0 times
Share this document with a friend
31
Understanding JavaScript Event-Based Interactions Saba Alimadadi Sheldon Sequeira Ali Mesbah Karthik Pattabiraman
Transcript
Page 1: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

Understanding JavaScript Event-Based Interactions

Saba Alimadadi Sheldon Sequeira

Ali Mesbah Karthik Pattabiraman

Page 2: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

Motivation •  JavaScript

– Event driven, dynamic, asynchronous

•  Difficult to understand the dynamic behavior and the control flow – Lower level events – Their interactions

1

Page 3: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

Challenge 1: Event Propagation html

head body

P div a div

h1 table

caption tr

label input table textarea button

p

User Click

p

button

body

div

table Handler Triggered

Handler Triggered

Handler Triggered

Handler Triggered

Handler Triggered

td td

2

Page 4: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

Challenge 2: Asynchronous Events

User logs in

Timeout for page expiry Server request for login Server response for login

3

Page 5: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

Challenge 2: Asynchronous Events Timeout for page expiry Server request for login Server response for login View

gallery Server request Server request Server response Server response

3

Page 6: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

Challenge 2: Asynchronous Events Timeout for page expiry Server request for login Server response for login

Server request Server request Server response Server response

View slideshow

Timeout for next image

3

Page 7: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

Challenge 2: Asynchronous Events Timeout for page expiry Server request for login Server response for login

Server request Server request Server response Server response

Timeout for next image

Server request image Server response Timeout callback

3

Timeout callback page expiry

Page 8: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

Challenge 3: DOM State function submissionHandler(e) {

$('#regMsg').html("Submitted!");

var email = $('#email').val(); if (isEmailValid(email)) {

informServer(email); $('#submitBtn').attr("disabled", true);

} } . . . function informServer(email) {

$.get('/register/', { email }

, function(data) {

$(’#srvrMsg').append(data);

}); }

html

head Body

P div a srvrMsg

regMsg div

caption form

label input submitBtn

p

4

Page 9: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

Summary of Challenges

•  Event propagation

•  Asynchronous events

•  Implications of events

5

Page 10: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

Approach

JavaScript

Transformation

Trace

Collection

Model

Visualization

Behavioral

Model Creation

6

Page 11: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

JavaScript Transformation

•  Interposing on DOM events •  Capturing timeouts and XHRs •  Recording function traces •  Extracting DOM mutations

7

JavaScript

Transformation

Trace

Collection

Model

Creation

Model

Visualization

Page 12: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

Trace Collection

8

JavaScript

Transformation

Trace

Collection

Model

Creation

Model

Visualization

•  Interposing on DOM events •  Capturing timeouts and XHRs •  Recording function traces •  Extracting DOM mutations => Detailed Trace

DOM events functions timeouts XHRs DOM mutations

Page 13: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

Behavioral Model Creation

9

JavaScript

Transformation

Trace

Collection

Model

Creation

Model

Visualization

•  Customized graph

•  Nodes: episodes •  Links: temporal and causal

Page 14: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

Model: Episodes

Timeout ID: 1XHR ID: 1

DOM Event(Click)Target: SubmitBtn

Source

Result

Trace

body

fieldset

text input

button div

informServer Anonymous

e email

isEmailValid

SubmissionHandler

email

XHR Event(Response)XHR ID: 1

Source Trace

body

fieldset

text input

button div

data

Anonymous Timing Event(TO Callback)TO ID: 1

Source Trace

body

fieldset

text input

button div

clearMsg

Result Result

–  A period of JavaScript execution –  Start and end points

10

Page 15: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

Model: Links

Timeout ID: 1XHR ID: 1

DOM Event(Click)Target: SubmitBtn

Source

Result

Trace

body

fieldset

text input

button div

informServer Anonymous

e email

isEmailValid

SubmissionHandler

email

XHR Event(Response)XHR ID: 1

Source Trace

body

fieldset

text input

button div

data

Anonymous Timing Event(TO Callback)TO ID: 1

Source Trace

body

fieldset

text input

button div

clearMsg

Result Result

emporal ausal

11

Page 16: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

Model: Story

Timeout ID: 1XHR ID: 1

DOM Event(Click)Target: SubmitBtn

Source

Result

Trace

body

fieldset

text input

button div

informServer Anonymous

e email

isEmailValid

SubmissionHandler

email

XHR Event(Response)XHR ID: 1

Source Trace

body

fieldset

text input

button div

data

Anonymous Timing Event(TO Callback)TO ID: 1

Source Trace

body

fieldset

text input

button div

clearMsg

Result Result

12

Page 17: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

Visualization: Overview

13

JavaScript

Transformation

Trace

Collection

Model

Creation

Model

Visualization

Page 18: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

Visualization: Zoom Level 1

14

Page 19: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

Visualization: Zoom Level 1

Visualization: Zoom Level 2 19 ICSE2014

Page 20: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

Implementation •  Clematis https://github.com/saltlab/clematis •  Languages: Java, JavaScript •  Transform JavaScript & inject toolbar via proxy •  Provide a RESTful API for retrieving data •  Render a web-based visualization

16

Page 21: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

Usage Scenario

17

Page 22: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

Usage Scenario

17

Page 23: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

Usage Scenario

17

Page 24: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

Usage Scenario

17

Page 25: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

Evaluation RQ1) Does using Clematis decrease the task completion

duration for web application comprehension?

RQ2) Does using Clematis increase the task completion accuracy for web application comprehension?

RQ3) Are there any certain categories of tasks for which Clematis improves the performance most?

RQ4) Is the overall performance of Clematis acceptable?

18

Page 26: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

Industrial Controlled Experiments •  Participants

–  20 software developers (from a large SW company) –  Experimental group: Clematis –  Control group: Chrome, Firefox & Firebug

•  Procedure –  5 minute tutorial on Clematis –  Tasks: control flow, feature location, DOM

mutations, … •  Data collection

–  Task completion duration & accuracy

19

Page 27: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

Results: Duration Average Time (mm:ss) Per Task

Average Time (mm:ss) in Total

Task Clematis Other

T1 7:00 << 11:27 (39%é) T2 3:51 << 7:27 (48%é) T3 2:02 << 6:18 (68%é) T4 2:44 < 4:00 (32%é)

Task Clematis Other

All 15:37 << 29:12 (47%é)

20

Page 28: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

Results: Accuracy Average Accuracy (%) Per Task

Average Accuracy (%) in Total

Task Clematis Other

T1 84 >> 28 (67%é) T2 97 >> 57 (41%é) T3 100 > 80 (20%é) T4 95 >> 30 (68%é)

Task Clematis Other

All 90 >> 35 (61%é)

21

Page 29: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

Results

Task Improvement

T1 (39%é) T2 (48%é) T3 (68%é) T4 (32%é)

Duration

Task Improvement

T1 (67%é) T2 (41%é) T3 (20%é) T4 (68%é)

Accuracy

Task Description T1 Following control flow in presence of asynchronous events T2 Finding DOM mutations caused by a DOM event T3 Locating the implementation of a malfunctioning feature T4 Detecting control flow in presence of event propagation

22

Page 30: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

Consistent Performance

●●

● ●

T1−C

trl

T1−Exp

T2−C

trl

T2−Exp

T3−C

trl

T3−Exp

T4−C

trl

T4−Exp

Total−Ctrl

Total−Exp

020

4060

80100

Accuracy (%)

T7−C

trl

T7−Exp

T8−C

trl

T8−Exp

T9−C

trl

T9−Exp

T10−Ctrl

T10−Exp

Total−Ctrl

Total−Exp

Duration (mm:ss)

0:00

8:20

16:40

25:00

33:20

41:40

50:00

Duration (mm:ss) Accuracy (%)

23

Page 31: Understanding JavaScript Event-Based Interactions...Challenge 1: Event Propagation html head body P div a div h1 table caption tr label input table textarea button p! User Click p

ICSE2014 31


Recommended