Performance Testing Your Website Under Pressure
As 5 billion people worldwide go into self isolation, more and more of our daily interactions are occurring online. Retailers around the globe are moving from bricks and mortar to online only, schools and educational institutions are scrambling to set up online alternatives, and even our family time is being moved to Zoom and Webex, along with our work meetings (with kids and pets in the background.)
Unlike more established online traffic rushes like Black Friday or Valentine’s Day, online websites simply haven’t had the months beforehand to get their sites ready for all that online traffic. Despite the lack of notice, performance testing is crucial if you want to keep your business running in these uncertain times.
To many of you who are looking for answers on how to performance test your site to properly prepare for the coming weeks, here are 8 tips that we have learned from working with our customers on load testing in the last 10 years.
Top Tips for Successful Performance Testing
1. Run Load Tests From the Production Environment
This is the only way to ensure your testing is accurate and that each point is tested properly. We recommend you choose a time you know traffic is low, and simulate loads from multiple geo-locations and environments.
2. Scale your tests from small to big to huge
If you're in a rush to test a large number of users, you might miss the load level you're currently facing problems in, because you’d passed through so many load levels at once. Start your ramps gradually, and then build up your tests more and more. At each test, stop to monitor the results and make sure you’re satisfied with them, before moving on to the next level. In BlazeMeter, we start out with debug testing, which is run as a functional test, just to ensure the test accomplishes what you want it to accomplish. Then, we perform calibration testing. This testing is run to make sure the testing platform that is running the test is not actually becoming the bottleneck. Now, we can move on to the main attraction: performance testing. Start the test at 10% of your target load, and ramp up slowly to your target load. Make sure the ramp is gradual, so you can monitor the symptoms.
You can also run a spike test, for testing how your system reacts to a sudden jump in the number of users and also how it recovers. We also recommend taking your system to its maximum limit, even if that’s beyond your target number of users, so you become familiar with how your system reacts.
Here’s what a bottleneck can look like. The number of hits/s drops while the response time goes up abruptly:
3. Plan the Tests
Now you can plan how to execute your business goals. Together with your team, determine which tests you need. Here are the types of tests you can run:
Load Tests - load tests are for understanding system behavior under an expected load.
Stress Tests - stress tests can be used to help you understand the system’s capacity limits.
Soak Tests - soak tests are used for examining the system’s abilities to hold a continuous expected load.
Spike Tests - spike tests help you to test the system’s abilities to hold a heavy load that was abruptly and quickly generated.
Isolation Tests - an isolation test is a repeated test for examining if a known and detected system error or issue previously detected by the same test, was fixed.
Take your business goals as well as your knowledge of where your product performs better and not-so-well, and fit the right tests to them. As you are running these tests, keep these 2 goals in mind:
- Find the Critical Resource Investigate your system to find out what your weak points are and why. Set up alert monitoring dashboards for these critical issues.
- Divide Your System and Stress Each Section Individually. Not all parts of your system will receive equal loads and traffic patterns. Identify different capacities and weak spots, and take proactive measures.
4. Monitor the Back End Results of the Load Test
Load testing lets you view and analyze performance KPIs like Response Time and Latency, and correlations between them. But it’s also important to go over backend KPIs like the Cache Hits and DB Queries, see the error log for exceptions, and also go over standard hardware characteristics like CPU/Memory/Network usage and auto-scale status.
Various solutions enhance the ability to analyze test results. DX APM, New Relic, App Dynamics and other solutions provides app performance monitoring and end user monitoring and Amazon Cloud Watch monitors AWS cloud resources.
5. Incorporate End User Performance Tracking Into Your Backend Testing
Automatically or manually analyze what your users are experiencing with BlazeMeter’s unique feature - End User Experience Monitoring. The new Functional Testing abilities executes a Selenium test in the background while your load test is running, via Taurus. The Selenium test generates a Waterfall Report that shows what a user would see in their web browser at different points during the load test. This can be especially helpful when trying to debug why a certain page failed to load properly from a user point of view at a certain point in the load test, for example.
6. Set Up Back-Up Servers and Locations
Crashes can happen, even to Beyonce (ok, not to Beyonce). By setting up back-up servers and locations, you can make sure you are ready to continue providing service in a very short time.
7. Check Your Third Party Integrations
When you make changes on your app or site, you don’t just affect your own product. You might also influence third-party scripts on your app or site, or you might crash 3rd-party devices and servers if you don’t prepare them properly. For example, different CDNs require different approaches, and the AWS load balancer (ELB) requires a warm-up before load balancing.
Even though this is part of what you are testing, we recommend you contact your partners beforehand and conduct all the preparations necessary. This ensures that the load test will take into account their preparations and full capabilities (instead of partial capabilities, as might happen if they don’t get a chance to prepare). It also saves you time and effort, since you won’t need to deal with basic 3rd-party issues that could have easily been fixed.
8. Implement API Monitoring
After you are done with testing, you’d still want to know how your website is behaving out “in the wild”. You can use BlazeMeter 360 Degree Monitoring functionalities to monitor your critical APIs in your production environment to ensure your website or application is functioning as desired. It will serve as a warning system to ensure you know when your system is not behaving as expected.
Want to scale up your testing? Sign up for free online accreditation with BlazeMeter University here.
Ready to get started on performance testing your site? You can try out BlazeMeter’s Continuous Testing Platform for free, and start testing your site in the next few minutes. Sign up for an account here, or put your URL into the box below to start testing.