These terms are often used interchangeably.
If nothing else, load, stress and performance testing are interrelated and all equally important to the success of your business. Often you will see load testing and stress testing falling under the umbrella term performance testing, which encompasses testing the performance level of the various aspects of any system.
Load Testing Basics
Load testing specifically provides us insight into the behavior of our systems, comparing the current state of usage to what would happen if we hit specific loads of users, simultaneously made calls or processed transactions.
Load testing is important to your business model because it allows you to monitor your system’s response times for each of the transactions during a set time period.
It provides your business development and project management teams with crucial data on usage, while raising developer and QA attention to any potential problems with the software.
It helps you find things that are wrong now before your users do, usually at inconvenient times when you’re busiest, both in terms of traffic and staff demand.
It also allows you to find bottlenecks before they occur and choke your business.
As we’ll talk about later in this guide to load testing, it doesn’t just involve your breaking point, but rather it gives you insightful load test reports and metrics, including predicted and actual traffic patterns, CPU and memory, and other ways to not only monitor one-time situations but usage overtime.
More specifically, load testing usually includes your end user’s response time, so you can see how the user experience could potentially change if behavior and usage does.
Finally, load testing allows you to predict how a planned release will work (or not) before an update goes live.
Don’t get us wrong — depending on how you feel about fortune telling — we wouldn’t call load testing a crystal ball, but rather something with a high probability of success, simulating how your tool will behave out in the wild.
One way of describing stress testing is "extreme load testing". Stress testing is a kind of performance testing that happens when you push your app, API or software to the upper limits of its capacity.
It works to reveal how your system will hold up under a sudden surge of demand when your current number of users goes beyond the maximum levels you can support. Or, if you don’t know what that maximum level is, stress testing is a good way of establishing where it falls.
Kinds of Performance Testing
Spike testing: What happens when you hit that max stress level quite suddenly?
Configuration testing: This type of testing helps you find any changes to the pieces of your system that affect behavior or performance.
Endurance testing: This monitors continuous load, red-flagging any slow leaks that may be slowing you down or wasting resources.
Isolation testing: Isolation testing is used to try to zero in on a specific problem in hopes of finding its cause and fixing it.
Comparative testing: As its name suggests, it involves comparing the performance of two or more systems, both to find anomalies and sometimes to make a competitive decision. It also facilitates shared learning and cross-company intelligence.
Custom testing: Certain industries and certain kinds of customers require certain kinds of testing that need to be ongoing for the success of the brand.
In the world of continuous deployment and integration or CICD, API testing that you are continually integrating is another important aspect of overall performance testing.
After all, if your app works, but it can’t successfully pull or push data, it’s not really useful is it? And when you have a set of business processes and actions linked together by APIs, it’s essential that you make sure that not only your API is functional, but that nothing in that workflow tumbles.
This is also sometimes called interoperability testing because it sees how code works across a variety of platforms, focusing first on the mission-critical aspects of those workflows.
We found the topic of “moving from functional testing to load testing” to be somewhat of a silly question. When we asked quality analysts and testers, they more and more seem to look at load testing as one aspect of functional testing, which is in line with what we believe, that load testing is part of performance testing which is part of overall functional testing.
Can something really be functioning if it only functions at a lower level?
Sure a house can handle sunshine and rain, but the foundation is only really tested in a hurricane — and we’d certainly expect it to (hopefully) keep standing through that hell or high water too.
So why should your software, website, or app be any different?
Functional testing focuses on how code stands up to business requirements, mainly focusing on risk criteria. It also typically is done in a prioritized fashion where testers are organizing from most to least important functions. And, of course, almost always, load testing should be one of your top priorities — unless you aren’t worried about having a lot of customers actively engaged with your product.
If performance testing is an umbrella, functional testing is more of a tent, which is why some tech journalists have tried to argue that it “is not easily turned into a repeatable process.” However, with the evolution of cloud computing combined with automation testing, this has dramatically changed.
So much of functional testing — and, in particular, load testing — can be automated in a way that allows you to continuously ask those questions that are essential to your business’ success.
Specifically, with API testing, the cloud has allowed for an in-depth process of business-oriented functional testing.