towards improving the reliability of javascript-based web ...karthikp/msr-talk-javascript.pdf ·...

52
Towards Improving the Reliability of JavaScript-based Web 2.0 Applications Karthik Pattabiraman 1 Frolin Ocariza Jr. 1 Benjamin Zorn 2 1 University of British Columbia (UBC), 2 Microsoft Research (MSR)

Upload: others

Post on 23-Jun-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Towards Improving the Reliability of JavaScript-based Web 2.0

Applications

Karthik Pattabiraman1

Frolin Ocariza Jr.1

Benjamin Zorn2

1 University of British Columbia (UBC), 2Microsoft Research (MSR)

Page 2: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Web 2.0 Application: Amazon.com

2

Amazon’s own ad

Menu bar

Shopping cart

Third party gadget ad Web 2.0 applications allow rich UI functionality within a single web page

Page 3: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Web 2.0 Application: JavaScript

3

Significant amount of JavaScript code executing in the browser

Page 4: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Web 2.0 Application: Amazon.com

4

Web Apps experience errors, yet they continue to execute !

Page 5: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Web 2.0 Applications: Problems

5

JS had to “look like Java” only less so, be Java’s dumb kid brother or boy-hostage sidekick. Plus, I had to be done in ten days or something worse than JS would have happened – Brendan Eich (Inventor of JavaScript)

Loose semantics Multiple Parties JavaScript

Page 6: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

0.1

1

10

100

1000

10000

100000

Eval Calls (from Richards et al. [PLDI-2010])

JavaScript: “Good” or “Evil” ?

6

Versus

Real web applications do not stick to the “good” parts

Eva l s

Page 7: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Studies of JavaScript Web Applications

7

Performance and parallelism: JSMeter [Ratanaworabhan-2010], [Richards-2009], [Fortuna-2011]

Reliability

? Security and Privacy: [Yue-2009], Gatekeeper[Guarnieri-2009], [Jang-2010]

perf

orm

ance

secu

rity

relia

bilit

y

Goal: Study the reliability of web applications in the “wild”

Page 8: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Why Reliability Matters ?

8

  Snapshot of iFeng.com: Leading media website in China

an error occurred when processing this directive

Page 9: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Web Apps’ Reliability: Challenges

9

  Lack of specifications   Distinguish correct and incorrect executions   No specification of correct behavior

  Lack of tool support   Automatically find application errors

JSER

Page 10: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Overview: Evaluating JavaScript Reliability

JSER: Error messages DoDOM: DOM Invariants

10

  Studied error messages printed to the JS console

  Extracted invariant DOMs over multiple executions

JSER

DoDOM

Page 11: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

This Talk

11

  Motivation and Approach

  Two approaches for evaluating JS Reliability   Error messages – JSER [Under submission]   DOM Invariants – DoDOM [ISSRE 2010]

  Future Directions and Conclusions

Page 12: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

JSER: JavaScript Error Messages

12

  Any exception thrown by JS code is logged to JS console

Multiple exceptions

Page 13: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

JSER: Why Error Messages ?

13

  No false positives unlike static analysis

  Challenging to analyze JavaScript statically

  Capture interactions with the DOM

Vs. JSER

Page 14: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

JSER: Tools

14

  Chose 50 web applications from the Alexa top 100

  Created test suites for normal interactions in Selenium

  Capture JavaScript Errors printed to Firebug console

Page 15: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

JSER: Research Questions

15

Do errors occur in web apps and if so, what categories do they fall in ?

How do errors vary by speed of testing ? Are they all deterministic ?

How do errors correlate with static and dynamic characteristics of the app?

Page 16: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Errors and their classification: Method

16

1.  Description of error message

2.  Line of code corresponding to error

3.  Domain number and line number

Two errors are different if any attribute is different

Page 17: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Errors and their classification: Results

17

  Average of 4 distinct error messages for each app   Standard dev: 3   Max: 16 (Cnet)   Min: 0 (Google)

0 2 4 6 8

10 12 14 16 18

Total Distinct Errors

Page 18: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Errors and their classification: Results

18

  94 % of errors fall into four predominant categories

54%

9%

27%

4% 6%

Distribution of Error Messages

# of Permission Denied Errors

# of Null Exception Errors

# of Undefined Symbol Errors

# of Syntax Errors

# of Miscellaneous Errors

Page 19: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Errors and their classification: Permission Denied Example

19

advertisement

• Error Message: Permission denied for http://view.atdmt.com to call method Location.toString on http://www.imdb.com

• Explanation: Triggered by appearance of advertisement. Leads to SOP violation.

Bottom Line: JS errors may appear as a result of code written by others

Taken from imdb.com

54%

9%

27%

4% 6%

Page 20: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Errors and their classification: Undefined Symbol Example

Taken from cnn.com

• Error Message: cnn_onMemFBInit() is undefined

if (CNN_ISMemInit && CNN_IsFBInit) cnn_onMemFBInit();

• Explanation: Both CNN_IsMemInit and CNN_IsFBInit set to true

• Bottom Line: JS code is difficult to maintain

// this probably isn’t needed anymore

20

54%

9%

27%

4% 6%

Page 21: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Errors and their classification: Null Exception Example

Taken from amazon.com

• Error Message: document.getElementById(“inappDiv”) is null document.getElementById(“inappDiv”).style.display = ‘none’;

• Explanation: inappDiv was only defined for users who are logged in

• Bottom Line: JS code may depend on the DOM

Causes error on click

21

54%

9%

27%

4% 6%

Page 22: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Errors and their classification: Syntax Error Example

Taken from about.com

• Error Message: unterminated string literal zGPU = ‘http://movies.about.com/od/onlinemovies Movies_Available_on_the_Internet.html’”

• Bottom Line: JS code is sometimes not well-tested

54%

9%

27%

4% 6%

Page 23: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Errors and their classification: Insights

23

  Errors can occur due to third-party code   Permission denied errors

  Errors can occur due to the DOM   Null exception errors

  JavaScript code can be difficult to maintain   Undefined symbol errors

  JavaScript code is sometimes not well-tested   Syntax errors

Page 24: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Research Questions

24

Do errors occur in web apps and if so, what categories do they fall in ?

How do errors vary by speed of testing ? Are they all deterministic ?

How do errors correlate with static and dynamic characteristics of the app?

Page 25: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Effect of Testing Speed: Method

25

  Varied testing speed for replaying events in Selenium   Performed three executions in each testing speed

0 ms 1000 ms

Fast Medium Slow

500 ms

Page 26: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Effect of Testing Speed: Example

26

Error Message (shortened) F 1

F 2

F 3

M 1

M 2

M 3

S 1

S 2

S 3

Permission Denied for view.atdmt.com to call <fname> on

marquee.blogs.cnn.com

4 4 4 1 3 3 2 2 3

Permission Denied for view.atdmt.com to call <fname> on

www.cnn.com

20 17 20 22 22 16 25 20 16

Permission Denied for ad.doubleclick.net to call <fname>

on www.cnn.com

8 16 13 3 6 4 7 12 11

targetWindow.cnnad showAd is not a function

0 2 5 0 0 0 0 0 0

window.parent.CSIManager is un- defined

0 0 0 0 0 0 1 1 0

Page 27: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Effect of Testing Speed: Frequencies

27

  All three testing modes expose similar error frequencies   Slow mode exposes the most number of errors !

Total distinct errors

Fast Mode Medium Mode Slow Mode

Page 28: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Effect of Testing Speed: Example

28

Error Message (shortened) F 1

F 2

F 3

M 1

M 2

M 3

S 1

S 2

S 3

Permission Denied for view.atdmt.com to call <fname> on

marquee.blogs.cnn.com

4 4 4 1 3 3 2 2 3

Permission Denied for view.atdmt.com to call <fname> on

www.cnn.com

20 17 20 22 22 16 25 20 16

Permission Denied for ad.doubleclick.net to call <fname>

on www.cnn.com

8 16 13 3 6 4 7 12 11

targetWindow.cnnad showAd is not a function

0 2 5 0 0 0 0 0 0

window.parent.CSIManager is un- defined

0 0 0 0 0 0 1 1 0

Page 29: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Effect of Testing Speed: Non-Determinism

29

  More than 70% of distinct errors are non-deterministic

Total non-deterministic errors

Page 30: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Effect of Testing Speed: Insights

30

  Different modes expose different no. of errors

  Different reasons for errors   Fast/Medium Modes: Due to rapid page transitions   Slow Mode: Due to errors in advertisements

  More than 70% of errors are non-deterministic

Page 31: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Research Questions

31

Do errors occur in web apps and if so, what categories do they fall in ?

How do errors vary by speed of testing ? Are they all deterministic ?

How do errors correlate with static and dynamic characteristics of the app?

Page 32: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Static/Dynamic Correlations

Static Characteristics Dynamic Characteristics

32

  Number of called functions

  Number of eval calls

  Properties deleted

  Object inheritance overridings

•  Alexa Rank

•  Bytes of JavaScript code

•  Number of domains

•  Domains containing JS

From Richards et al. [PLDI – 2010] Measured using Phoenix & Firebug plugins

Page 33: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Static/Dynamic Correlations: Summary

Static Characteristics Dynamic Characteristics

33

  Number of called functions

  Number of eval calls

  Properties deleted

  Object inheritance overridings

•  Alexa Rank

•  Bytes of JavaScript code

•  Number of domains

•  Domains containing JS

From Richards et al. [PLDI – 2010] Measured using Phoenix & Firebug plugins

Page 34: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Research Questions: Answers

34

Do errors occur in web apps and what categories do they fall in ?

How do errors vary by speed of testing ? Are they all deterministic ?

How do errors correlate with static and dynamic characteristics of the app?

Average of four errors in each app. Errors fall into four well-defined categories

Errors vary by speed of testing. Majority of errors are non-deterministic

Correlated with no of domains, no of domains with JS, Alexa rank

Page 35: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Implications of the Results

35

  Programmers   Need to make code robust against other code/scripts   Make sure interactions with DOM are checked

  Testers   Perform integration testing to see effects of ads   Need to test at multiple testing speeds, multiple times

  Static analysis tool developers   Target most common classes of errors   Need to model the DOM in the analysis

Page 36: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

This Talk

36

  Motivation and Approach

  Two approaches for evaluating JS Reliability   Error messages – JSER [Under submission]   DOM invariants – DoDOM [ISSRE 2010]

  Future Directions and Conclusions

Page 37: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Motivation

37

  Error Messages are limited in representativeness   Not all errors result in error messages

  Goal: Detect errors that do not result in messages   Do not require programmer intervention

  Challenges   Non-determinism in application

Page 38: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Example: HTML

38

<html> <head> <title> …. </title> <script> …. </script>

<script> … </script> </head> <body>

<div> <A> …. </A> <text> … </text> <hl> … </hl> </div> <div>

<div>…. </div> <ul> <li>…</li> <li>…</li><li> … </li> </ul> <p> … </p> </div>

<div> … </div> </body> </html>

Page 39: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Example: DOM

39

document

div div div

<A> text h1

div ul p

head

title script script script

li li li <A> text h1

Buggy

Correct

Page 40: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Example: Invariant DOM

40

document

div div div

<A> text h1

div ul p

head

title script script script

li li li <A> text h1

Detected

Allowed

Invariant portion of DOM

Page 41: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

DoDOM: Contributions   DOM invariants can be learned dynamically

  Automated tool called DoDOM

  Invariants exist in many Web 2.0 applications   Stabilize within a few executions

  Invariants are useful for error detection   Both for event errors and domain failures

41

Page 42: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

DoDOM: Approach

42

Record a trace of interactions with the web app

Replay the recorded trace on the web app

Capture the series of DOM-trees after each replay

Extract invariant DOM-trees from the executions

Page 43: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

DoDOM: Invariant Extraction

43

Execution 1 Execution 2 Execution 3 Execution 4

Invariant DOM

Page 44: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

DoDOM: Error Detection

44

Mul$ple    replays  

Original DOM

Invariant DOM

Error occurs

Faulty DOM

Compare invariant and faulty DOMs

Difference = Detection

Page 45: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

DoDOM: Invariant DOM Sequences

45

Event Sequence

Invariant DOM trees

Event Sequence: Sequence of events recorded in a trace

DOM Tree Sequence: Sequence of DOM trees after each event

Event 1 Event 2 Event N …

Page 46: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Experimental Setup

46

  Focused mainly on results from Slashdot web app   User interaction by reading and expanding comments   Gathered a trace of 13 events with DoDOM

  Did a replay of the trace 58 times (with DoDOM)

Page 47: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Results: Invariant DOM

47

5050

5100

5150

5200

5250

5300

5350

0 1 2 3 4 5 6 7 8 9 10 11 12 13

Num

ber

of D

OM

Nod

es

Event Number

Number of Nodes in the DOM Tree

Training set = 2 Training set = 4 Training set = 6 Training set = 8 Training set = 10

Convergence of DOM-trees with a training set size of 6 (10%)

Page 48: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Results: Fault Injection Experiments

Event Errors Domain Failures

48

  Dropped events from the trace one at a time

  100% detection for events that impact the DOM

  Blocked domains one at a time using NoScript

  Only one of five domains impacted the DOM

E1 E2 E3 En

Trace

E1 E2 E3 En

Fault-injected Trace

Page 49: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

DoDOM: Summary

49

  DOM invariants can be learned dynamically   Automated tool called DoDOM

  DOM Invariants exist in many Web applications   Stabilize within a few executions

  DOM Invariants are useful for error detection   Both for simple event errors and domain failures

Page 50: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

This Talk

50

  Motivation and Approach

  Two approaches for evaluating JS Reliability   Error messages - JSER[Under submission]   DOM invariants – DoDOM [ISSRE 2010]

  Future Directions and Conclusions

Page 51: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Future Directions

51

  Static analysis to augment dynamic analysis   Seed with errors found by dynamic analysis   Prioritize errors based on past experience

  Analyze the impact of an error message   Does it impact application’s functionality ?   Does it affect other users of the application ?

  Fault Injection   Inject realistic faults in the application   Study its robustness under faults

Page 52: Towards Improving the Reliability of JavaScript-based Web ...karthikp/MSR-talk-JavaScript.pdf · Web Apps’ Reliability: Challenges 9 Lack of specifications Distinguish correct and

Conclusions

52

  Web 2.0 applications’ reliability is challenging

  Measured the reliability of web apps in the “wild” as a first step to improving their reliability   JSER: Based on error messages   DoDOM: Based on DOM invariants

http://www. ……