EmpiricalStudiesofJavaScript based)Web)Applica8on...

65
Empirical Studies of JavaScript based Web Applica8on Reliability Karthik Pa@abiraman 1 Frolin Ocariza 1 Kar.k Bajaj 1 Ali Mesbah 1 Benjamin Zorn 2 1 University of Bri.sh Columbia (UBC), 2 MicrosoE Research (MSR)

Transcript of EmpiricalStudiesofJavaScript based)Web)Applica8on...

Page 1: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

Empirical  Studies  of  JavaScript-­‐based  Web  Applica8on  

Reliability  

Karthik  Pa@abiraman1  

Frolin  Ocariza1  

Kar.k  Bajaj1  Ali  Mesbah1  

Benjamin  Zorn2      

1  University  of  Bri.sh  Columbia  (UBC),  2MicrosoE  Research  (MSR)  

Page 2: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

My  Research  

•  Building  reliable  and  secure  soDware  applica8ons  

•  Compiler  &  run8me  techniques  for  error  resilience  –  Par..oning  data  for  differen.al  resilience  [ASPLOS’11]  –  Error  detec.on  in  different  programs  [DSN’12][DSN’13]  –  Fault  Injec.on  techniques  and  tools  [DSN’14][ISPASS’14]  

•  This  tutorial  –  Reliability  of  modern  web  applica.ons  (Part  1)  –  Tools  for  building  robust  web  applica.ons  (Part  2)  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 3: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

Web  2.0  Applica.ons  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 4: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

Web  2.0  Applica.on:  Amazon.com  

Amazon’s  own  ad  

Menu  bar  

Search  Func8on  

Third  party  gadget    ad  Web  2.0  applica8ons  allow  rich  UI  func8onality  within  a  single  web  page  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 5: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

Modern  Web  Applica.ons:  JavaScript  

•  JavaScript:  Implementa.on  of  ECMAScript  standard  –  Client-­‐Side  JavaScript:  used  to  develop  web  apps  

•  Executes  in  client’s  browser  –  send  AJAX  messages  •  Responsible  for  web  applica.on’s  core  func.onality  •  Not  easy  to  write  code  in  –  has  many  “evil”  features  

5   Copyright:  Karthik  Pa[abiraman,  2014  

Page 6: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

JavaScript:  History  

JavaScript  (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)  Copyright:  Karthik  Pa[abiraman,  2014  

Brief  History  of  JavaScript  (Source:  TomBarker.com)                

Page 7: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

JavaScript:  Prevalence  •  97  of  the  Alexa  top  100  websites  use  JavaScript  •  Thousands  of  lines  of  code,  oEen  >  10,000  

0  

10000  

20000  

30000  

40000  

50000  

60000  

70000  

80000  

90000  

Google  

YouTub

e  Yaho

o  Ba

idu  

QQ  

MSN

 Am

azon

 Sina  

WordP

ress  

Ebay  

Linked

In  

Bing  

MicrosoE  

Yand

ex  

163  

mail.ru  

PayPal  

FC2  

Flickr  

IMDb

 Ap

ple  

Livedo

or  

BBC  

Sohu

 go.com

 Soso  

Youku  

AOL  

CNN  

Med

iaFire  

ESPN

 MySpace  

MegaU

pload  

Mozilla  

4shared  

Adob

e  Ab

out  

LiveJournal  

Tumblr  

GoDa

ddy  

CNET  

YieldM

anager  

Sogou  

Zedo

 Ife

ng  

Pirate  Bay  

ImageShack  

Weather  

NY  Times  

Nep

lix  

Lines  of  code  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 8: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

0.1  

1  

10  

100  

1000  

10000  

100000  

Eval  Calls  (Source:  Richards  et  al.  [PLDI-­‐2010])  

JavaScript:  “Good”  or  “Evil”  ?  

Vs  

Real  web  applica8ons  do  not  s8ck  to  the  “good”  parts  

Eva  l  s  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 9: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

Studies  of  JavaScript  Web  Applica.ons  Performance  and  parallelism:  JSMeter  [Ratanaworabhan-­‐2010],  [Richards-­‐2009],  [Fortuna-­‐2011]  

Reliability  

?      

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

performance  

security  

reliability  

Goal:  Study  and  improve  the  reliability  of  JavaScript  web  applica8ons  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 10: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

Does  Reliability  Ma[er  ?  •  Snapshot  of  iFeng.com:  Leading  media  website  in  China  

an  error  occurred  when  processing  this  direc8ve  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 11: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

This  Talk  •  Mo.va.on  and  Approach  

•  Three  approaches  for  measuring  JS  Reliability  –  Error  Messages  [ISSRE  2011]  –  With  F.  Ocariza  and  B.G.  Zorn  

–  Bug  Reports  [ESEM  2013]  –  With  F.  Ocariza,  K.  Bajaj,  A.  Mesbah  

–  Stack  Overflow  Reports  [MSR  2014]  –  With  F.  Ocariza,  A.  Mesbah  

•  Conclusion  and  Next  Steps  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 12: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

JSER:  JavaScript  Error  Messages  

•  All  excep.ons  thrown  are  logged  to  JS  console  

Mul8ple  excep8ons  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 13: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

JSER:  Error  Messages  Vs.  Sta.c  Analysis  

•  No  false  posi.ves  unlike  sta.c  analysis  

•  Capture  interac.ons  with  third-­‐party  code  (adver.sements)  

•  Capture  interac.ons  with  the  DOM  

 

Vs.  JSER  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 14: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

JSER:  Tools  

•  Chose  50  web  applica.ons  from  Alexa  top  100  •  Created  Selenium  tests  for  normal  interac.ons    

•  Capture  JavaScript  Errors  printed  to  Firebug  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 15: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

JSER:  Research  Ques.ons  

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

How  do  errors  vary  by  speed  of  tes.ng  ?  Are  they  all  determinis.c  ?  

How  do  errors  correlate  with  sta.c  and  dynamic  characteris.cs  of  the  app?  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 16: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

JSER:  Method  

1.  Descrip.on  of  error  message  

2.  Line  of  code  corresponding  to  error  

3.  Domain  number  and  line  number  

Two  errors  are  different  if  any  a@ribute  is  different    

Copyright:  Karthik  Pa[abiraman,  2014  

Page 17: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

JSER:  Error  Frequencies  Results  

•  Average  of  4  dis8nct  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  Dis8nct  Errors  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 18: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

JSER:  Error  Classifica.on  Results  •  94  %  of  errors  fall  into  four  predominant  categories  

54%  

9%  

27%  

4%  6%  

Distribu8on  of  Error  Messages  

#  of  Permission  Denied  Errors  

#  of  Null  Excep.on  Errors  

#  of  Undefined  Symbol  Errors  

#  of  Syntax  Errors  

#  of  Miscellaneous  Errors  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 19: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

JSER:  Research  Ques.ons  

Errors  occur  in  web  applica.ons  (4  per  applica.on  on  average)  and  fall  into  four  categories  

How  do  errors  vary  by  speed  of  tes8ng  ?  Are  they  all  determinis8c  ?  

How  do  errors  correlate  with  sta.c  and  dynamic  characteris.cs  of  the  app?  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 20: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

JSER:  Effect  of  Tes.ng  Speed  

•  Varied  tes.ng  speed  for  replaying  events  in  Selenium  

•  Performed  three  execu.ons  in  each  tes.ng  speed    

0  ms   1000  ms  

Fast   Medium   Slow  

500  ms  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 21: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

JSER:  Tes.ng  Speed  Results  (CNN)  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

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

Copyright:  Karthik  Pa[abiraman,  2014  

Page 22: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

JSER:  Effect  of  Tes.ng  Speed  •  All  three  tes.ng  modes  expose  different  errors  

Total  dis8nct  errors  

Fast  Mode   Medium  Mode   Slow  Mode  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 23: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

JSER:  Non-­‐Determinism  

•  More  than  70%  of  errors:    non-­‐determinis.c  

Total  non-­‐determinis.c  errors  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 24: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

JSER:  Research  Ques.ons  

Errors  occur  in  web  applica.ons  (4  per  applica.on  on  average)  and  fall  into  four  categories  

Error  occurrences  vary  with  speed  of  tes.ng.  About  70%  of  errors  are  non-­‐determinis.c.    

How  do  errors  correlate  with  sta8c  and  dynamic  characteris8cs  of  the  app?  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 25: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

JSER:  Sta.c/Dynamic  Characteris.cs  

Sta8c  Characteris8cs  

•  Number  of  called  func.ons  

•  Number  of  eval  calls  

•  Proper.es  deleted  

•  Object  inheritance  overridings    

Dynamic  Characteris8cs  

•  Alexa  Rank  

•  Bytes  of  JavaScript  code  

•  Number  of  domains  

•  Domains  containing  JS    

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

Copyright:  Karthik  Pa[abiraman,  2014  

Page 26: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

JSER:  Correla.ons  Summary  

Sta8c  Characteris8cs  

•  Number  of  called  func.ons  

•  Number  of  eval  calls  

•  Proper.es  deleted  

•  Object  inheritance  overridings    

Dynamic  Characteris8cs  

•  Alexa  Rank  

•  Bytes  of  JavaScript  code  

•  Number  of  domains  

•  Domains  containing  JS      

Copyright:  Karthik  Pa[abiraman,  2014  

Page 27: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

JSER:  Research  Ques.ons  

Errors  occur  in  web  applica.ons  (4  per  applica.on  on  average)  and  fall  into  four  categories  

Error  occurrences  vary  with  speed  of  tes.ng.  About  70%  of  errors  are  non-­‐determinis.c.    

Errors  correlate  with  Alexa  rank,  no  of  domains  but  not  with  loc  or  eval  calls  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 28: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

JSER:  Implica.ons  of  the  Results  •  Programmers  –  Need  to  make  code  robust  against  other  code/scripts  – Make  sure  interac.ons  with  DOM  are  checked  

 •  Testers  –  Perform  integra.on  tes.ng  to  see  effects  of  ads  –  Need  to  test  at  mul.ple  tes.ng  speeds,  mul.ple  .mes  

 •  Sta8c  analysis  tool  developers  –  Target  most  common  classes  of  errors    –  Need  to  model  the  DOM  in  the  analysis  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 29: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

This  Talk  •  Mo.va.on  and  Approach  

•  Three  approaches  for  measuring  JS  Reliability  –  Error  Messages  [ISSRE  2011]  –  With  F.  Ocariza  and  B.G.  Zorn  

–  Bug  Reports  [ESEM  2013]  –  With  F.  Ocariza,  K.  Bajaj,  A.  Mesbah  

–  Stack  Overflow  Reports  [MSR  2014]  –  With  F.  Ocariza,  A.  Mesbah  

 •  Conclusion  and  Next  Steps  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 30: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

Bug  Report  Study:  Goals  •  What  errors/mistakes  cause  JavaScript  faults?  

•  What  impact  do  JavaScript  faults  have?  

Bug  Report  Study  of  twelve  popular,  Open  Source  JavaScript  Applica.ons  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 31: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

Bug  Report  Study:  Objects  Eight  JavaScript  Web  Applica8ons  

Four  JavaScript  Libraries  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 32: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

Bug  Report  Study  :  Method  

•  Collect  bug  reports  from  bug  repositories  – Focus  on  bugs  that  are  marked  fixed  to  avoid  spurious  bugs  

– Organized  into  a  uniform  format  (XML  file)  

Search  for  all  bug  reports  that  have  the  

word  “JavaScript”  

Filter  out  reports  that  are  not  

marked  “fixed”  OR  the  fault  does  not  involve  JS  

Pick  the  first  30  reports  and  analyze  them  manually  to  determine  

cause/impact  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 33: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

Bug  Report  Study:  Ques.ons  

•  RQ1:  What  types  of  JavaScript  faults  occur  in  web  apps?  

 •  RQ2:  What  is  the  impact  of  JavaScript  faults  ?  

•  RQ3:  How  long  does  it  take  to  fix  a  JavaScript  fault?  

•  RQ4:  Are  JavaScript  faults  browser-­‐specific  ?  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 34: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

Bug  Report  Study:  Categories  

Incorrect  Method  Parameter  Fault:  Unexpected  or  invalid  value  passed  to  JS  method  or  assigned  to  JS  property    DOM-­‐Related  Fault:  The  method  is  a  DOM  API  method      -­‐  Account  for  around  two-­‐thirds  of  JavaScript  Faults  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 35: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

Bug  Report  Study:  DOM  

35  

html  

body   head  

script  div   p  

Text:  “Hello  world”  

table  

tr   p  

Want  to  retrieve  this  element  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 36: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

Bug  Report  Study:  DOM-­‐Related  Faults  

36  

div  

id:  elem  

JavaScript  code:  

DOM:  

var x = document.getElementById(“elem”); var x = document.getElementById(“elme”);

Inexistent  ID  Will  return  null  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 37: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

DOM-­‐Related  Fault:  Example  

var elem, retrievedStr = [Retrieved via XHR]; var dotsInStr = retrievedStr.split(".").length; if (dotsInStr == 0) { var prefix = "id_"; elem = $("#" + prefix + retrievedStr);

} else { elem = $(retrievedStr);

} elem[0].focus()

Copyright:  Karthik  Pa[abiraman,  2014  

Page 38: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

DOM-­‐Related  Fault:  Example  

var elem, retrievedStr = [Retrieved via XHR]; var dotsInStr = retrievedStr.split(".").length; if (dotsInStr == 0) { var prefix = "id_"; elem = $("#" + prefix + retrievedStr);

} else { elem = $(retrievedStr);

} elem[0].focus() Retrieved  string  

via  XHR  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 39: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

DOM-­‐Related  Fault:  Example  

var elem, retrievedStr = [Retrieved via XHR]; var dotsInStr = retrievedStr.split(".").length; if (dotsInStr == 0) { var prefix = "id_"; elem = $("#" + prefix + retrievedStr);

} else { elem = $(retrievedStr);

} elem[0].focus()

Find  the  number  of  dots  in  the  string  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 40: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

DOM-­‐Related  Fault:  Example  

var elem, retrievedStr = [Retrieved via XHR]; var dotsInStr = retrievedStr.split(".").length; if (dotsInStr == 0) { var prefix = "id_"; elem = $("#" + prefix + retrievedStr);

} else { elem = $(retrievedStr);

} elem[0].focus()

If  there  are  no  dots,  prepend  “id_”  to  the  string  and  access  it  via  $().  Otherwise,  leave  it  as  is,  and  access  it  via  $().  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 41: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

DOM-­‐Related  Fault:  Example  

var elem, retrievedStr = [Retrieved via XHR]; var dotsInStr = retrievedStr.split(".").length; if (dotsInStr == 0) { var prefix = "id_"; elem = $("#" + prefix + retrievedStr);

} else { elem = $(retrievedStr);

} elem[0].focus()

Retrieved  string  of  “editor”  would  go  here  even  though  it  has  no  dots,  which  would  erroneously  cause  $()  to  use  selector    “editor”,  which  doesn’t  match  any  elements.  

UNDEFINED  EXCEPTION!   Copyright:  Karthik  Pa[abiraman,  2014  

Page 42: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

DOM-­‐Related  Fault:  Example  

var elem, retrievedStr = [Retrieved via XHR]; var dotsInStr = retrievedStr.split(".").length; if (dotsInStr == 0) { var prefix = "id_"; elem = $("#" + prefix + retrievedStr);

} else { elem = $(retrievedStr);

} elem[0].focus()

BUG:  The  assigned  value  should  be  retrievedStr.split(“.”).length  –  1,  as  length()  

always  returns  at  least  1.      Copyright:  Karthik  Pa[abiraman,  2014  

Page 43: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

Bug  Report  Study:  Impact  •  Impact  Types  –  Based  on  Bugzilla  [ICSE’11]  

•  Type  1  (lowest  impact),  Type  5  (highest  impact)  

0  

20  

40  

60  

80  

100  

120  

140  

Type  1   Type  2   Type  3   Type  4   Type  5  

Num

ber  o

f  Bug  Rep

orts  

Impact  Type  

All  Faults   DOM-­‐Related  Faults  Only  

80%  of  highest  impact  faults  are  DOM-­‐related  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 44: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

Bug  Report  Study:  Fix  Times  •  Triage  Time:  Time  it  took  to  assign  or  comment  on  the  bug  •  Fix  Time:  Time  it  took  to  fix  the  bug  since  it  was  triaged  

0  

10  

20  

30  

40  

50  

60  

70  

80  

90  

100  

Triage  Time   Fix  Time  

Average  #  of  Days  

All  Faults  

DOM-­‐Related  Only  

Non-­‐DOM-­‐Related  Only  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 45: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

Bug  Report  Study:  Browser  Specificity  

17%   1%  1%  1%  

76%  

2%   IE  

Firefox  

Chrome  

Safari  

Opera  

Not  browser-­‐specific  

Most  JavaScript  faults  are  not  browser-­‐specific  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 46: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

Bug  Report  Study:  Summary    

•  Bug  report  study  of  12  applica8ons:  JS  faults  –  Over  300  bug  reports  analyzed;  only  fixed  bugs  considered  

•  DOM-­‐related  faults  dominate  JavaScript  faults  –  Responsible  for  nearly  two-­‐thirds  of  all  JavaScript  faults  –  Responsible  for  80%  of  highest  impact  faults  –  Take  50%  longer  .me  to  fix  for  developers  – Majority  are  not  specific  to  web  browser  plaporm    

•  Need  robust  solu8ons  for  DOM-­‐related  faults  –  Fixing,  Understanding  and  wri.ng  correct  code  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 47: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

This  Talk  •  Mo.va.on  and  Approach  

•  Three  approaches  for  measuring  JS  Reliability  –  Error  Messages  [ISSRE  2011]  –  With  F.  Ocariza  and  B.G.  Zorn  

–  Bug  Reports  [ESEM  2013]  –  With  F.  Ocariza,  K.  Bajaj,  A.  Mesbah  

–  Stack  Overflow  Reports  [MSR  2014]  –  With  F.  Ocariza,  A.  Mesbah  

 •  Conclusions  and  Next  Steps  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 48: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

StackOverflow:  Background  •  Stack  Overflow  

–  QA  website  for  programmers  –  Started  in  2008  –  4,125,638  ques.ons  asked  from  Jan’09  to  Dec’12  –  500,000+  ques.ons  related  to  web  development  

•  Ques.ons  directly  asked/answered  by  developers  –  Followed  by  discussion  in  comments  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 49: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

StackOverflow:  Example  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 50: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

StackOverflow:  NLP  Analysis  •  Filter  web-­‐related  ques.ons  based  on  tags  provided  •  Analyzing  the  text  provided  in  the  ques.ons  and  answers  

(Latent  Drichlet  Alloca.on)  

Copyright:  Karthik  Pa[abiraman,  2014  

Data  Collec.on  

Data  Cleaning  

Data  Processing  

Page 51: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

StackOverflow  Datasets  

Copyright:  Karthik  Pa[abiraman,  2014  

������������

���������

��

�� ��

����������

��������

�������� �

������ �

��������

������

�������� �

������ �

��

Page 52: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

RQ1:  Categoriza.on  of  topics  of  discussion  

������������� �

�������

������

������ ���

����������

�������

������

��������

���

���������

�� ������� ���

�!�

"

#$��%�����

���

&������

'��

������� ����

(�'����

��������

��$������

�������

��������

��

��

Copyright:  Karthik  Pa[abiraman,  2014  

Page 53: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

RQ2:  Temporal  trends  over  .me  ������������

�������������

� ��� ����

���

����������

����� ���

����������

����� ���

����������

����� ���

����������

����� ���

���

�����

����

�����

�����

Copyright:  Karthik  Pa[abiraman,  2014  

Page 54: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

RQ3:  Prevalence  of  web  in  mobile  development  

������������

���������

��

�� ��

����������

��������

�������� �

������ �

��������

������

�������� �

������ �

���

���

Copyright:  Karthik  Pa[abiraman,  2014  

Page 55: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

RQ4:  Technical  challenges  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 56: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

StackOverflow:  Summary  of  Findings  

•  Finding  1:  Though  cross-­‐browser  issues  dominated  in  the  past,  they  have  declined  sharply  since  2012.    

•  Finding  2:  DOM  and  Canvas  interac.ons  consistently  dominate  

•  Finding  3:  Mobile  web  applica.on  development  is  on  the  rise,  compared  to  tradi.onal  web  appln.  development  

•  Finding  4:  Even  expert  programmers  are  confused  by  APIs  and  documenta.on  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 57: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

StackOverflow:  Implica.ons  •  Finding  1,  2  (Categoriza8on  and  temporal  trends)  

–  Researchers  can  shiE  their  focus  away  from  cross  browser  issues  to  DOM  and  Canvas  related  ones.  

•  Finding  4  (Prevalence  of  mobile  applica8ons)    –  Need  be[er  tools  for  mobile  web  development    

•  Finding  5  (Technical  Challenges)    –  Can  guide  standardiza0on  communi0es  to  focus  on  areas  that  need  improvement.      

Copyright:  Karthik  Pa[abiraman,  2014  

Page 58: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

This  Talk  •  Mo.va.on  and  Approach  

•  Three  approaches  for  measuring  JS  Reliability  –  Error  Messages  [ISSRE  2011]  –  With  F.  Ocariza  and  B.G.  Zorn  

–  Bug  Reports  [ESEM  2013]  –  With  F.  Ocariza,  K.  Bajaj,  A.  Mesbah  

–  Stack  Overflow  Reports  [MSR  2014]  –  With  K.  Bajaj  and  A.  Mesbah  

 •  Conclusion  and  Next  Steps  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 59: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

Conclusions  

•  Web  2.0  applica8ons’  reliability  is  challenging  

•  Measure  the  reliability  of  web  applica8ons  –  [ISSRE’11]:  Based  on  error  messages  in  real  web  apps  –  [ESEM’13]:  Based  on  bug  reports  in  web  apps  –  [MSR’14]:  Based  on  StackOverflow  ques.ons  

•  Need  to  improve  web  applica8ons’  reliability  –  Use  of  empirical  data  to  drive  improvements  

   

Copyright:  Karthik  Pa[abiraman,  2014  

Page 60: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

Next  Steps  (Part  2  of  tutorial)  •  AutoFlox  (with  Frolin  Ocariza):  ICST  2012    

   -­‐  Fault  localiza.on      

•  Vejovis  (with  Frolin  Ocariza):  ICSE  2014  –  Fault  Repair  

 •  Clema.s  (with  Saba  Alimadi,  Sheldon  Sequira):  ICSE  2014  

–  Program  Understanding    •  Domple.on  (with  Kar.k  Bajaj):  ASE’14  

–  Code  comple.on  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 61: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

1 var toggle = 1;2 var x = “hlelo_”;3 var y = “world”;4 var elem = document.getElementById(x + y);5 var dis = “”;6 if (toggle == 1) {7 dis = “block”;8 }9 else {10 dis = “inline”;11 }12 elem.style.display = dis;

AutoFlox  [Ocariza  –  ICST  2012]  •  AutoFLox:  Automa.c  fault  localiza.on  tool  for  JS  –  Find  origin  of  the  null  value  –  i.e.,  find  the  direct  DOM  access  

Direct  DOM  Access  (This  is  where  the  NULL  value  came  from)  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 62: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

1 var toggle = 1;2 var x = “hlelo_”;3 var y = “world”;4 var elem = document.getElementById(x + y);5 var dis = “”;6 if (toggle == 1) {7 dis = “block”;8 }9 else {10 dis = “inline”;11 }12 elem.style.display = dis;

Vejovis  [Ocariza  –  ICSE’14]  •  Vejovis:  automa.c  repair  of  DOM-­‐related  errors  –  Starts  at  direct  DOM  access  found  by  AutoFlox  –  Provide  fix  sugges.ons  based  on  common  fix  pa[erns  

Parameter  

Find  “poten.al  replacements”  in  DOM  

id  

id_m   id_r  

id_r_s   id_r_t  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 63: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

Clema.s  [Alimadadi  –  ICSE’14]  •  Challenge:    Web  applica.ons  are  complex,  and  consist  of  DOM  interac.ons,  AJAX  messages  and  .meouts  

•  Difficult  to  trace  the  links  between  events  and  JS  code  •  Clema.s  allows  users  to  visualize  causal  dependencies  between  events  and  code,  and  the  DOM  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 64: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

Domple.on  [Bajaj  -­‐  ASE’14]  

•  Provide  code-­‐comple.on  sugges.ons  for  programmers  for  DOM-­‐JavaScript  interac.on  – Based  on  analysis  of  JavaScript  code  and  DOM  

Copyright:  Karthik  Pa[abiraman,  2014  

Page 65: EmpiricalStudiesofJavaScript based)Web)Applica8on ...blogs.ubc.ca/karthik/files/2014/11/Empirical-study-reliability.pdf · EmpiricalStudiesofJavaScript based)Web)Applica8on) Reliability)

Frolin  Ocariza   Saba  Alimadadi  Kar.k  Bajaj   Sheldon  Sequira  

Karthik  Pa[abiraman   Ali  Mesbah