Load testing vs. stress testing

LP - Functionize performance testing

What is load testing?

Put simply, load testing is about seeing how your web applications or products respond when they are subjected to normal load. It seeks to answer some important questions: How does your backend react as the load increases? Does your API remain responsive? Does your database slow down? Do your load balancers do a good job? Can your servers handle the network load?

LP - Functionize performance testing

What is stress testing?

Stress testing is similar to load testing, but it is designed to push your web application beyond its expected operating conditions. During load testing, you might explore how your site reacts to 100 new sessions arriving each second. But what happens if 1,000 sessions arrive? Unless you have infinite resources, every application will fail eventually. This is about ensuring your site fails gracefully and establishing the load that triggers that failure.

LP - Functionize performance testing

What is the correct load to test?

Before starting the process of load testing you need to decide on the expected load your web applications will receive. For existing applications, you probably already know this. For a new application you need to make an educated guess. Look at similar sites and applications. Is it likely your load will follow a diurnal pattern, with peaks at predictable times of day? Will your traffic be coming from one country or many? Will user sessions be short or long?

How do traditional tools work?

Most stress and load testing tools are fairly dumb. They work by triggering multiple API calls and looking at how the response times vary. This is unrealistic for several reasons:

LP - Functionize performance testing
No variation in load

This style of testing produces very predictable stable loading. Generally, you can only specify the rate at which new requests are launched, and requests are of limited complexity. This sort of load is very unrealistic and won’t stress all parts of your backend equally.

LP - Functionize performance testing
Limited statistics

After the test you see things like: total sessions; minimum, mean, median, and maximum response times; number of HTTP error codes (e.g. 500, 503, etc.). From these you will be able to determine roughly how your site performs. However, to see any more detail you will need to use additional tools such as 0x.

LP - Functionize performance testing
Doesn’t test load balancers

Load balancers rely on factors like origin IP address and TCP port in order to distribute the load from sessions. If all your load is originating from a single server, the load balancer won’t do its job properly.

LP - Functionize performance testing
Creating test requires writing code

Tools, such as Artillery or LoadRunner, allow you to specify different types and proportions of session to create during your test. You are also able to modify the HTTP headers. But tests like these are written in Python, JavaScript or Java.

Sign Up Today

The Functionize platform is powered by our Adaptive Event Analysis™ technology which incorporates self-learning algorithms and machine learning in a cloud-based solution.

For more information, read our blog, follow us @functionize or email us to learn how you can get started today with Functionize Autonomous Testing.

LP - Functionize performance testing