Browser-based Load Testing
By Jérôme Loisel - CTO, on .

Categories: Tags: design webdriver performance

Browser-based Load Testing

We are proud to announce that we now support running real browser load testing alongside with regular HTTP load testing. We have integrated the JMeter Selenium WebDriver to our platform. It’s now possible to run JMeter load tests as well as Selenium webdriver tests simultaneously. Collect both network metrics like response time and end-use experience metrics like browser load time.

Octoperf removes the pain of load testing your app with Selenium with our Saas integration. We setup and launch properly configured machines for you, with pre-configured latest Firefox web browser.

How it works

The following diagram sums up how Selenium drives any existing web-browser.

Selenium Architecture Selenium Architecture diagram showing how Selenium works

Selenium can drive several different web browsers (Chrome, Firefox, Safari and more). It launches the web-browser and executes a given selenium script inside, via a browser plugin. This allows Selenium to simulate user interactions like mouse clicks.

We know how difficult it can be to setup a whole load testing infrastructure which mixes both browser-based and HTTP load testing. This is why we integrated Selenium into our Saas load testing tool for hassle-free end-user experience testing.

Create WebDriver Virtual User

Now, you can create a Selenium Web Driver virtual user. By selecting this option, it creates a browser-based virtual user which runs Selenium commands inside a real web-browser (Firefox).

WebDriver virtual user Create a new Selenium Web Driver Virtual User

Edit WebDriver Virtual User

The web driver script can be edited directly into the browser, like regular virtual users with HTTP requests.

WebDriver virtual user Virtual user executing a web-browser to load our homepage

The virtual user above contains the following script:

WDS.sampleResult.sampleStart()
WDS.browser.get('https://octoperf.com')
WDS.sampleResult.sampleEnd()

The first line indicates to start measuring the elapsed time. WDS is an object instance accessible inside the script which represents the WebDriverSampler. The second line tells the web-browser to open the given location, our website. The last line stops the elapsed time measurement.

Multiple web-browser actions can be run within a single virtual user to simulate realistic workflows.

Validate Virtual User

Virtual user validation works with browser-based virtual users too. It shows the last sent request and response.

Validate WebDriver virtual user Validate Selenium WebDriver Virtual user

Virtual user validation is great to find out issues before launching a massive amount of users.

Mixed Workload scenario

Whenever you need to load test your application or collect end-user experience, we’ve got you covered.

Scenario with both selenium and JMeter test Mixed workload: run JMeter and Selenium load tests simultaneously

Within the same scenario, mix standard HTTP virtual users with Selenium browser-based virtual users. It’s as simple as dropping another user profile inside your scenario. For performance reason, the maximum load which can be generated by browser-based user profiles is capped.

Bench Report

View test result metrics as if it were a regular load test with HTTP requests. We have fully integrated WebDriver metrics into our analysis reporting system.

Bench Report Browser-based load testing report

The measured elapsed time includes browser rendering time. It’s basically taking into account everything between the WDS.sampleResult.sampleStart() and WDS.sampleResult.sampleEnd() calls.

Conclusion

By supporting both HTTP and browser-based load testing, we fully cover the metrics needed to get an overall picture of your users browsing experience. As usual, we do our best to make load testing easy and fun. We believe that even people without much experience in load testing should be able to run tests at scale within hours.

Client-side metrics are an important aspect of the end-user experience. With browser-side metrics, you know how much time your website takes to render on client side. It can be pretty different from the network time, especially with modern web applications powered by Javascript like AngularJS or Google GWT.