This year’s Big Game will take place on Feb. 4th, 2018, fueling many enthusiastic football fans to participate in different ways. They will watch the game on live media streaming websites, order in food from food delivery apps, and visit the websites they see commercials for. The meaning of all of this is very high levels of traffic to many websites and apps.
To ensure your website or app doesn’t crash under the heavy load of users, you can run performance tests on your website. Load tests will help you identify your bottlenecks and bugs, giving you the chance to fix them before real users visit your website instead of virtual ones. By load testing, you can avoid loss of sales and brand damage that come with malfunctioning websites.
Here are 5 tips for running performance testing scripts on your website:
1. Choose the right load testing tool
We highly recommend using open source load testing tools, as they are constantly evolving according to developers’ needs. In addition, they tend to include or integrate the latest technologies and they have wide open source support.
Here are some guidelines that can help you choose between the open source tools:
- Do you like working with a GUI? Choose Apache JMeter™. If you prefer Python’s flexibility, go with Locust or Grinder.
- Is advanced visual reporting important to you? Choose Gatling.
- Need host monitoring? Go with Tsung or JMeter.
You can read a full comparison here. If you prefer, you can run all these tools through open source Taurus, and you only need to know easy to use yaml. You can also get scalability and advanced reporting for these tools through BlazeMeter.
2. Use BI and other statistics to determine the number of users to test
On big events like Black Friday, companies are often surprised by the large number of users that visit their website, even though a surge was expected. To make sure you’re prepared, it’s important to run performance tests for more than your usual traffic rate. But what is the right number?
Instead of guessing, use hard data to determine the right number. Look at past visitors’ numbers from server logs, APMs and Google Analytics. Check your regular rate, growing trends and traffic surrounding big events in the past. In addition, look at past stress points to see which numbers got you there.
After running tests for those numbers, take into consideration any special promotions or product hypes that might get the numbers higher than expected. Finally, if your website can handle your expected numbers, we recommend bringing it to its breaking point. This ensures you know what you can handle if something unexpected occurs and you get more app visitors than expected. It’s also recommended to prepare back ups for such situations.
Read 8 tips to decide the number of concurrent users for your test for more information.
3. Prepare your load generators and test infrastructure beforehand
You’ve created your complex load test script, ran it in JMeter for a low number of users to see that it works, removed listeners and you’re ready to run it in non-GUI mode for thousands of users. Suddenly, the test crashes. When trying to find the problem, you discover that the load generator reached a critical level of CPU or Memory consumption that overwhelmed the engine and caused the test to stop prematurely.
To save time, avoid frustration and actually be able to run your performance test, make sure your load testing infrastructure can handle running your load test script with the amount of threads that you configured it to run. Prepare your load generators, machines and servers beforehand. Coordinate with DevOps or any 3rd party vendors if necessary, make sure technical support and backups are available and check in advance the capacity the infrastructure can handle.
4. Monitor both your website and your server KPIs
When running your load test, you will look at different website and app KPIs like response time, latency and error rate. You can look at the results after the test completes running, or in real-time with tools like Taurus. But what about server metrics like memory and CPU? Server KPIs are important because they are often the cause of app bottlenecks.
By installing an APM on your application server like New Relic or CloudWatch you can monitor server health KPIs. You can either run the tests separately from your load tests and analyze each report, or you can use BlazeMeter to correlate all of these tests and see advanced analyses, like which exact page caused the CPU to go up.
For a more simplistic open source solution, use JMeter’s Perfmon plugin or SSHMon Listener. You will need to configure your server slightly (read this blog post and this one as well for more information on how to do it). Then, get correlated metrics analyses directly in JMeter.
5. Define test failure criteria in advance
When getting your performance test results you get a lot of graphs and tables with numbers and lines, determining how your website or app performed. You can stare at the data and have it stare at you, or you can dive into it and determine how you did.
To be able to reach conclusions, you need to decide in advance what consists of success and what doesn’t. This can only done by you and your business unit. You need to ask yourselves what is the user experience you want to provide. For example, how fast should users be able to navigate through your website? How quick should all of your app’s features load and is it ok for some to load more slowly? What’s the maximum error rate that you allow? And so on. Once you know that, you can chart what the throughput, error rate, avg. response time, etc. should be.
Now, you can look at your test and see if your app is up to standard or not. Read more about how to make your performance engineering more efficient to get more results analysis best practices.
That’s it! Get your website or app ready for the big game by load testing now. To try out BlazeMeter, which enhances JMeter abilities, request a demo, or, put your URL in the box below and your test will start in minutes.
You can also learn JMeter from our free JMeter academy.
You might also find these useful:
Interested in writing for our Blog? Send us a pitch!