Understanding JavaScript -Based Interactions

Saba Alimadadi Sheldon Sequeira Ali Mesbah Karthik Pattabiraman Motivation

• JavaScript – Event driven, dynamic, asynchronous

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

1 Challenge 1: Event Propagation

Handler head body Triggered

P P div a div

Handler p p Triggered h1 table p Handler Triggered caption tr

Handler User td Triggered Click

label input table textarea button Handler 2 Triggered Challenge 2: Asynchronous Events

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

User logs in

3 Challenge 2: Asynchronous Events

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

3 Challenge 2: Asynchronous Events

Timeout for page expiry Server request for login Server response for login View Server request slideshow Server request Server response Server response Timeout for next image

3 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

Timeout callback page expiry

3 Challenge 3: DOM State function submissionHandler(e) { $('#regMsg').html("Submitted!"); var email = $('#email').val(); html if (isEmailValid(email)) { informServer(email); head Body $('#submitBtn').attr("disabled", true); } } P div a srvrMsg . . . function informServer(email) { p p $.get('/register/', { email } regMsg div , function(data) { $(’#srvrMsg').append(data); caption }); } label input submitBtn

4 Summary of Challenges

• Event propagation

• Asynchronous events

• Implications of events

5 Approach

JavaScript Trace Transformation Collection

Model Behavioral Visualization Model Creation

6 JavaScript Transformation

• Interposing on DOM events JavaScript Transformation • Capturing timeouts and XHRs

Trace • Recording function traces Collection • Extracting DOM mutations

Model Creation

Model Visualization

7 Trace Collection

• Interposing on DOM events JavaScript Transformation • Capturing timeouts and XHRs

Trace • Recording function traces Collection • Extracting DOM mutations

Model DOM events Creation => Detailed Trace functions Model timeouts Visualization XHRs DOM mutations

8 Behavioral Model Creation

• Customized graph JavaScript Transformation

Trace • Nodes: episodes Collection • Links: temporal and causal

Model Creation

Model Visualization

9 Model: Episodes

Source Trace Source Trace Source Trace

Submission isEmail inform DOM Event Anonymous XHR Event Anonymous Timing Event Handler Valid Server clearMsg (Click) (Response) e (TO Callback) Target: SubmitBtn email XHR ID: 1 data TO ID: 1

Result Result Result email body body body

fieldset fieldset fieldset

text input text input text input

button div button div button div

XHR ID: 1 Timeout ID: 1

– A period of JavaScript execution – Start and end points

10 Model: Links

Source Trace Source Trace Source Trace

Submission isEmail inform DOM Event Anonymous XHR Event Anonymous Timing Event Handler Valid Server clearMsg (Click) (Response) e (TO Callback) Target: SubmitBtn email XHR ID: 1 data TO ID: 1

Result Result Result email body body body

fieldset fieldset fieldset

text input text input text input

button div button div button div

XHR ID: 1 Timeout ID: 1

emporal ausal

11 Model: Story

Source Trace Source Trace Source Trace

Submission isEmail inform DOM Event Anonymous XHR Event Anonymous Timing Event Handler Valid Server clearMsg (Click) (Response) e (TO Callback) Target: SubmitBtn email XHR ID: 1 data TO ID: 1

Result Result Result email body body body

fieldset fieldset fieldset

text input text input text input

button div button div button div

XHR ID: 1 Timeout ID: 1

12 Visualization: Overview

JavaScript Transformation

Trace Collection

Model Creation

Model Visualization

13 Visualization: Zoom Level 1

14 Visualization: Zoom Level 1

Visualization: Zoom Level 2 19 ICSE2014 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 Usage Scenario

17 Usage Scenario

17 Usage Scenario

17 Usage Scenario

17 Evaluation

RQ1) Does using Clematis decrease the task completion duration for 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 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 Results: Duration Average Time (mm:ss) Per Task

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%é)

Average Time (mm:ss) in Total

Task Clematis Other

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

20 Results: Accuracy Average Accuracy (%) Per Task

Task Clematis Other

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

Average Accuracy (%) in Total

Task Clematis Other

All 90 >> 35 (61%é)

21 Results

Duration Accuracy

Task Improvement Task Improvement

T1 (39%é) T1 (67%é)

T2 (48%é) T2 (41%é)

T3 (68%é) T3 (20%é)

T4 (32%é) T4 (68%é)

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 Consistent Performance

DurationDuration (mm:ss) (mm:ss) AccuracyAccuracy (%) (%)

50:00 ● ● ● 100

● 41:40 80

33:20 ● 60

25:00 ● ● ● 40 16:40 ●

● 20 8:20

0 ● 0:00 T1 − Ctrl T2 − Ctrl T3 − Ctrl T4 − Ctrl T7 − Ctrl T8 − Ctrl T9 − Ctrl T1 − Exp T2 − Exp T3 − Exp T4 − Exp T7 − Exp T8 − Exp T9 − Exp T10 − Ctrl T10 − Exp − Ctrl Total − Ctrl Total − Exp Total − Exp Total

23 31 ICSE2014