Selenium Flood Tests
Selenium helps you test web applications by simulating how a real user would interact with your application using real browsers. The WebDriver API has language bindings and implementations to help drive different browsers.
Combine Selenium with WebDriver on Flood IO and you get distributed load testing across the globe.
Chrome and Firefox
Since these containers run full browsers, CPU overheads are naturally higher so we limit the amount of browsers to 5 per grid node.
The benefit of running full browser automation for load testing comes from driving the browser itself. Being able to run existing browser based automation suites as a control sample in conjunction with more traditional load testing tools and techniques is valuable for the increased fidelity of the simulation. However there's nothing stopping you from running larger grids with multiple nodes to increase the level of concurrency if you want to run Selenium only load tests.
We currently support native Java bindings for WebDriver so you can re-use existing tests already written in Java. Depending on demand, we may support additional bindings / test runners in other languages in future. At present we'll stick with Plain Old Java Objects. Let us know..
For your tests to work on Flood IO you'll need to import our
FloodAgent. This is a custom plugin that lets us pull together reporting information for your flood tests. The critical functions your script needs to call are
.finished() for test boundaries. Inside that you can make calls to
.passed_transaction(WebDriver driver, String label, Integer responseCode) or
.failed_transaction(WebDriver driver, String label, Integer responseCode).
When your test is running we'll pass in the relevant
WEBDRIVER_PORT environment variables for your test to connect to.
Have a look at the following example test plan.
How it works
We use Docker containers that run standalone Selenium Node images provided by the Selenium project for Chrome and Firefox. Inside those our Java plugin makes calls to the same internal reporting API using Elastic that all of our load test runners use. The plugin itself is using the
Beyond that, results are formatted in the same fashion as all of our load test reports. Here's an example. Importantly we're not relying on any proxies in between your browser and the target site so as to minimise impact on your test results as much as possible.
We're always interested in your feedback and requests for different ways to generate load.