Your SlideShare is downloading. ×
0
One more approach to client side performance testing
One more approach to client side performance testing
One more approach to client side performance testing
One more approach to client side performance testing
One more approach to client side performance testing
One more approach to client side performance testing
One more approach to client side performance testing
One more approach to client side performance testing
One more approach to client side performance testing
One more approach to client side performance testing
One more approach to client side performance testing
One more approach to client side performance testing
One more approach to client side performance testing
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

One more approach to client side performance testing

1,514

Published on

In-house presentation at EPAM Systems

In-house presentation at EPAM Systems

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,514
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
27
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. One More Approach toClient-Side Performance Testing
    2011 © Pavel Paulau
  • 2. What is Client-Side Testing?
    2
    Client-side testing is fully automated process which uses real browsers to evaluate end-user experience in terms of both static
    • page size
    • 3. number of requests
    • 4. optimization rank
    and dynamic metrics
    • load time
    • 5. rendering time
    • 6. parsing time
  • Infrastructure
    3
    Performance
    Repository
    BrowserMob
    Proxy
    AUT
    Test Script
  • 7. Selenium 2.0
    4
    New browsers
  • BrowserMob Proxy
    5
    Open source cross-platform proxy with
    • HTTP Archive (HAR) support
    • 12. Native Java API
    • 13. REST API for calling from other languages
    Source code available here:
    https://github.com/lightbody/browsermob-proxy
  • 14. BrowserMob Proxy
    6
    Advantages
    • Works with any browser that allows setting a proxy
    • 15. Testing benefits beyond performance monitoring
    • 16. Blacklisting/whitelisting URLs
    • 17. URL rewrites
    • 18. Header changes
    • 19. Set the user agent manually to test different browser behavior
    • 20. Auto authentication
    • 21. Wait until all content is downloaded
    • 22. HTTP idle for X seconds
    • 23. Simulate limited bandwidth
  • Methodology – HTTP Archive
    7
    "log":{
    "version":"1.1",
    "creator":{
    "name":"Firebug",
    "version":"1.6.2“
    },
    "browser":{
    "name":"Firefox",
    "version":"3.6.18“
    },
    "pages":[{
    "startedDateTime":"2011-07-13T13:51:21.443+03:00",
    "id":"page_54140",
    "title":"Google",
    "pageTimings":{
    "onContentLoad":173,
    "onLoad":1960
    }
    }],
    http://www.softwareishard.com/blog/har-12-spec/
  • 24. Methodology – Common Case
    8
    Network
    UI Thread
    Time
    tN_START
    tUI_END
    tN_END
    Load time calculated as
    tTOTAL = tN_END – tN_START
    And that’s quite accurate metric
  • 25. Methodology – Delayed Requests
    9
    Network
    UI Thread
    Time
    tN_START
    tUI_START
    Adjust start time using Selenium timestamps
    "pages":[{
    "startedDateTime":"2011-07-13T13:51:21.443+03:00",
    "id":"page_54140",
    "title":"Google",
    "pageTimings":{
    "onContentLoad":173,
    "onLoad":1960
    }
    }],
  • 26. Methodology – Intensive Rendering
    10
    Network
    UI Thread
    Time
    tN_END
    tUI_END
    Measure time with Selenium using assertions and waits
    "pages":[{
    "startedDateTime":"2011-07-13T13:51:21.443+03:00",
    "id":"page_54140",
    "title":"Google",
    "pageTimings":{
    "onContentLoad":173,
    "onLoad":1960,
    “_myTime":3410
    }
    }],
  • 27. Methodology – Intensive Rendering
    11
    Network
    UI Thread
    Time
    tUI_END
    tN_END
    JavaScript injection – minimal XHR request to localhost (‘ping’).
    Just to make Network Event the last event on the timeline.
  • 28. Methodology – Singe URL Pages
    12
    Aggregation is based on custom labels (page IDs) instead of URLs
    "pages":[{
    "startedDateTime":"2011-07-13T13:51:21.443+03:00",
    "id":"page_54140",
    "title":"Google",
    "pageTimings":{
    "onContentLoad":173,
    "onLoad":1960
    }
    }],

    "entries":[{
    "pageref":"page_54140",
    "startedDateTime":"2011-07-13T13:51:21.443+03:00",
    "time":109,
    "request":{

  • 29. HAR Storage
    13
    HAR Storage is self-made performance repository
    • Built on pylons, mysql and mongodb
    • 30. Embedded HAR Viewer
    • 31. Integration with har_to_pagespeed (Page Speed SDK)
    • 32. REST API support for any language
    • 33. 100% reflection of new methodology
    Online demo available here:
    http://harstorage.com/

×