Update: I have started offering a new load testing service for Magento. Check it out!
Load Testing the Magento checkout is, in theory, difficult. Well, not so much difficult as time consuming. It is my personal opinion that most Magento load testing is done either poorly or incompletely. Load testing read-only pages usually means hitting the same page over and over again. This is counter productive because it allows the system to cache re-used data and skew load testing results to the positive. I have yet to see a load test that yields performance results that matches production.
Testing the checkout is often even worse. It is also the point in the load test that is most likely to change system behavior due to changing inventory, API calls, add-to-cart operations, etc. It’s also hard to build a JMeter test for. Most of the time orgs don’t have a JMeter expert on staff and so rely on the developers to build the load test. Developers spend most of their time writing code, not load tests, and so the tests tend to not include some of the harder tests, such as checkout. I don’t blame anyone for that, a devs core skill is not load testing.
To help with that I’ve written a basic JMeter checkout scenario for JMeter. It uses the JMeter Plugins Extras Set. The test uses the Guest Checkout and the product added to the cart is from the Magento sample data, so you will need to change that. In addition you will need to change the HTTP Default host name, as shown below.
You can download the JMeter script here.
3 Thoughts to “Load Testing the Magento Checkout with JMeter (and enjoying it)”
I got the following error when opening the jmx in Jmeter “Empty TestPlan – see log file”
Can you lay more stress on the fact that the plugins extra set have to be installed otherwise the jmx will not open, please add a few line that the JMeterPlugins-Extras.jar from the downloaded plugin .zip will have to be copied to the apache-jmeter-2.xx/lib/ext folder
Can you please also share which version of magento sample data are you using? Also I see your script has a user parameter for user authentication.. does the sample data also have random users already created or how does the user parameter work?
download Link is broken