AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

94
#atlascamp @atlassian

Transcript of AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

Page 1: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

#atlascamp@atlassian

Page 2: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

Automated Browser Performance Testing

Chris Mountford Senior Software Developer, JIRA

Atlassian@chromosundrift

Show Me the Numbers

2

Page 3: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

Chris Mountford

3

20053.4.118516660

Page 4: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

Chris Mountford

4

Page 5: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

Chris Mountford

4

Page 6: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

Chris Mountford

4

Inline Edit

Page 7: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

Chris Mountford

4

Inline Edit

Page 8: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

Chris Mountford

4

Inline Edit

Search

Page 9: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

Chris Mountford

4

Inline Edit

Search

Page 10: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

Chris Mountford

4

Inline Edit

Search

Detail View

Page 11: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

Chris Mountford

4

Inline Edit

Search

Detail View

Page 12: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

Browser Performance Testing

Welcome!

Page 13: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

”“

Browser Performance Testing

Measuring the perceived performance of specific interactions for a single user

6

Page 14: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

”“

Browser Performance Testing

Measuring the perceived performance of specific interactions for a single user

7

perceived

Page 15: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

• Intro• JavaScript Renaissance

Engineering• Performance Factors• JIRA Perf Tests

• Optimisation Techniques• Perception• Gotchas• Take Aways

Outline

8

Page 16: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

• Intro• JavaScript Renaissance

Engineering• Performance Factors• JIRA Perf Tests

• Optimisation Techniques• Perception• Gotchas• Take Aways

Outline

8

Page 17: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

JavaScript Timeline

A history lesson

Page 18: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

10

Classical JavaScript

1995

Page 19: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

10

Browser Wars

Page 20: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

10

Browser Wars Dark Ages

Page 21: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

10

Dark Ages Firebug

Page 22: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

10

Firebug

V8

Page 23: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

10

Firebug

V8 Node.js

Page 24: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

10

Node.js

Hipsters

Page 25: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

11

Page 26: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

12

Page 27: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

13

Page 28: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

13

“Why do we split everything into so many files?”

Page 29: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

13

“Why do we split everything into so many files?”

“Performance.”

Page 30: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

14

Page 31: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

14

“Why do we merge all the files into large batches?”

Page 32: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

14

“Why do we merge all the files into large batches?”

“Performance.”

Page 33: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

15

Page 34: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

15

“Why...”

Page 35: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

15

“Why...”

“Performance!”

Page 36: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

15

“Why...”

“Performance!”

Page 37: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

Show me the numbers!

– Not Jacky Chan

“ ”

16

Hey it’s Jacky

Page 38: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

If we have data, let’s look at data. If all we have are opinions, let’s go with mine.

– Jim Barksdale

“”

17

Netscape CEO

Page 39: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

Factors That Influence Browser Performance

sad panda

Page 40: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

• Everything is the same but worse• network / radio power mode steps, sleep, etc.

• cpu / battery impact

• memory

• standards compliance

• tooling

Mobile Web

19

Page 41: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

20

NetworkTime

Page 42: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

21

ParseTime

Page 43: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

• JS Engines• native bind(), map() etc

• DOM Manipulation• events

• JQuery• Sizzle selectors

• micro-optimisation ☠

• Memory leaks

JavaScript Execution

22

Page 44: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

23

Blocking

Page 45: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

23

Blocking

<script src=”wtf.js”>

Page 46: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

Top Tools

24

Chrome DevToolsFirebug Lite dynaTrace

Page 47: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

Reflow

Page 48: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

26

Page 49: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

27inspired by @stoyanstefanov

Page 50: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

27

Will It Reflow?inspired by @stoyanstefanov

Page 51: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

27

Will It Reflow?inspired by @stoyanstefanov

Page 52: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

27

Will It Reflow?

Yes!

inspired by @stoyanstefanov

Page 53: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

• CSS Transforms• Hardware acceleration?

• Data weight• Concurrent request count• Inline Base64 Encoded resources

But wait, there’s more!

28

Page 54: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

• CSS Transforms• Hardware acceleration?

• Data weight• Concurrent request count• Inline Base64 Encoded resources

But wait, there’s more!

28

Page 55: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

Designing the JIRA Browser Performance

Test SuiteSweet!

Page 56: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

JIRA Browser Perf Tests

30

Page 57: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

JIRA Browser Perf Tests

30

Page Objects

Page 58: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

JIRA Browser Perf Tests

30

Page Objects

Soke Framework

Page 59: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

JIRA Browser Perf Tests

30

Page Objects

Soke Framework Bamboo

Page 60: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

JIRA Browser Perf Tests

30

Page Objects

Soke Framework Bamboo

Plugin

Page 61: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

JIRA Browser Perf Tests

30

Page Objects

Soke Framework Bamboo

DB

Plugin

Page 62: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

JIRA Browser Perf Tests

30

Page Objects

Soke Framework Bamboo

Hacking

DB

Plugin

Page 63: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

JIRA Browser Perf Tests

30

Page Objects

Soke Framework Bamboo

Hacking

Koto Charts

DB

Plugin

Page 64: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

JIRA Browser Perf Tests

30

Page Objects

Soke Framework Bamboo

Hacking

Koto Charts

Psycho Events

DB

Plugin

Page 65: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

JIRA Browser Perf Tests

30

Page Objects

Soke Framework Bamboo

Hacking

Koto Charts

Psycho Events

OnDemandAnalytics

DB

Plugin

Page 66: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

JIRA Browser Perf Tests

30

Page Objects

Soke Framework Bamboo

Hacking

Koto Charts

Psycho Events

Baselines

OnDemandAnalytics

DB

Plugin

Page 67: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

JIRA Browser Perf Tests

30

Page Objects

Soke Framework Bamboo

Hacking

Koto Charts

Psycho Events

Baselines

OnDemandAnalytics

Vigilance

DB

Plugin

Page 68: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

• Define Timed Sections• Number of Repetitions• Personas

Soke Interactions

31

Page 69: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

• Define Timed Sections• Number of Repetitions• Personas

Soke Interactions

31

Big ups to Atlassian PerfEng Team

Page 70: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

Soke Interactions in Scala

32

Page 71: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

33

Page 72: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

33

Page 73: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

34

Page 74: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

• Batching• Atlassian Plugins, No Worries

• Predictive Fetching• Guided by Analytics

• Caching• Watch for memory leaks

Optimisation Techniques

35

Page 75: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

I don’t know... it just feels slow.

– a JIRA Product Manager

“ ”

Show me the numbers!

36

Page 76: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

Perception is Reality

No, it only seems that way

Page 77: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

38

Page 78: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

• Ready for Action• When does the User believe the app is waiting for her?

• Manual “psycho” event placement• and maintenance!

• Yardstick tuning against a real system• Optimisation Example: Execution Reordering

Psycho Latency

39

Page 79: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

Gotchas

I’m gonna

Page 80: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

click( )

Page 81: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

Selenium / Webdriver

42

Page 82: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

• Chromedriver implemented by Chromium team

Selenium / Webdriver

42

Page 83: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

• Chromedriver implemented by Chromium team• mouse click on geometric centre of target

Selenium / Webdriver

42

Page 84: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

• Chromedriver implemented by Chromium team• mouse click on geometric centre of target

• W3C Webdriver wire protocol draft

Selenium / Webdriver

42

Page 85: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

• Chromedriver implemented by Chromium team• mouse click on geometric centre of target

• W3C Webdriver wire protocol draft • OK Browsers, follow the standard!

Selenium / Webdriver

42

Page 86: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

• Chromedriver implemented by Chromium team• mouse click on geometric centre of target

• W3C Webdriver wire protocol draft • OK Browsers, follow the standard!

Selenium / Webdriver

42

Page 87: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

Selenium / Webdriver

43

Page 88: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

• Windows and IE process control

Selenium / Webdriver

43

Page 89: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

• Windows and IE process control• Browser auto-upgrades

Selenium / Webdriver

43

Page 90: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

• Windows and IE process control• Browser auto-upgrades• Changing what you measure

Selenium / Webdriver

43

Page 91: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

• Windows and IE process control• Browser auto-upgrades• Changing what you measure

• Prefetch cache benefit in JIRA 6.0

Selenium / Webdriver

43

Page 92: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

• Lots of factors• Measure perceived reality• Be holistic, quantitative, beware micro-optimisation trap• Monitor and Maintain your performance suite• Use Chrome DevTools etc.

Take Aways

44

Page 93: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

Thank you!

Page 94: AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing

For resources:#atlascamp

@chromosundrift