In this article we will see how can we do client side performance testing using Jmeter Plugins.
I will be using jmeter webdriver plugins. Before starting this topic, please have some basic information on client side performance testing from my previous post. So, lets get started:
- Install Jmeter and Plug ins from below links following this post.
- Plugins (you may choose only web driver, but I prefer all of them)
- Download Selenium Server from here. (you need java to run that)
- Download Firefox 26 from Archive. Why 26? because jmeter webdriver plugins supports firefox 26. Here is link where you see supports the details.
Note: This can be tricky if you have an updated Firefox version. In that case you can do like me.
- Disable firefox update checking
- Install in new folder in separate directory name.
- When you run this one for the first time, just cancel the initial update process. As you have disabled firefox update (in your updated firefox), make sure you see the update settings disabled in this firefox 26 too.
Note: This part is little tricky, I have provided separate post to resolve it.
For Jmeter Remote Execution or local, it is better to to have only one firefox (version 26) with no auto update settings which will minimize complexity for test execution.
- Keep firefox 26, selenium server in path variable. To check, type firefox from command line and run. You should see, firefox 26 launched in desktop.
- Setting Jmeter: Usually, we do not need any extra things for webdriver sampler. But, as we need debugging, we might use this following property in user.properties file.
It enables sub sampling which is good for debugging.
And after you write the steps as webdriver script, use listeners to get time. Like as other samplers, you use listeners to debug sensibly.
Just follow this link which mentions the configurable browser names that are supported by webdriver sampler. You can see this from jmeter too:
Webdriver sampler calculates time from this line of code:
to this line of code:
So, for debugging, we need sub samples which will be shown as child of main sample. For this purpose, we need to activate
sampleresult_class (set to true). After activation we can do sub sampling like
WDS.sampleResult.sampleStart() //Brows to a URL //Add user name and password WDS.sampleResult.subSampleStart('Log In request') //Click Log in WDS.sampleResult.subSampleEnd(true) //Check title //do some another process WDS.sampleResult.sampleEnd()
In view result tree listener, you can see the main sample that contains the sub sample name “’Log In request’”. And a main sample can have multiple sub sample. That means, we can calculate each time separately from result tree.
Note that sub samples will not be shown separately in tabular format listeners or graphs.
And, if we need to measure particular transaction, we can split single test among multiple webdriver samples. For example, a sampler for log in, a sampler for doing some work in home page, a sampler for messaging, etc.. In this way, we can see results in reports. Usually each business transaction is measured in separate sample where as detail steps are sub sampled.
Writing the first script:
To write a webdriver sampler script, you need to add the webdriver sampler (sampler –>webdriver sampler) with any browser (driver) configuration. See image from the browser support section to get the driver configuration elements.
I will provide a separate post on how to write a webdriver test script with an example. You can see some nice guidelines at the wedriver sampler wiki.
As we know from my previous post on client side performance test, this test should run from a single user or thread. As the jmeter sampler populates the browser with webdriver, this has a particular hardware requirement. That is, it will occupy a single thread of a processor. That means, if you want to run the webdriver sampler, you need at least 2 core CPU. Why 2 core? The other one is for Jmeter. So, if you have 8 core CPUs, you can run only 7 threads for webdriver samplers. So, for testing we have to add a separate thread group or a test block for webdriver sampler.
We will run for measuring client execution time on:
- When there is not much user load
- When average load on server
- When High load(considered as peak load)
Sometimes, it is also good to test the following too:
- Beyond capacity, where error can be occurred or may just after error condition.
- As continuous performance testing. Usually, people run selected regression test with jmeter daily or weekly.
Again, the formula is simple, 1 thread of CPU for single client performance testing.
And, you run the test simply as Jmeter test, that’s all.
|Reference:||How to perform client side web performance testing in JMeter? from our JCG partner Shantonu Sarker at the A Test Developer’s blog blog.|