Software Testing: Load Testing

In the blog post Software Testing: Types of Tests we defined a spectrum of various types of tests. However, outside of that spectrum exist also other types of tests. One such type of tests is load tests. In this blog post we discuss what load testing
is, when to do it and what metrics to get out from it.

Load testing is by definition testing how our product works under load. We can test scenarios such as rate limiting during high usage, stability or recovery during overload or just correct behavior during concurrent usage. Common for all types of load testing is that we need to have multiple users or requests running simultaneously or in quick succession. As such, load testing is most commonly used for products with multiple simultaneous users such as servers or network equipment. However, it is also applicable in scenarios where a single user can
make requests in quick succession such as with an operating system or a desktop program.

Scenarios to test with load testing (non-exhaustive list):

  • Rate-limiting and throttling

  • Stability and recovery during overload

  • Concurrent usage

Typically, load testing is done to the product as a whole. Load testing can reveal bugs and crashes such as memory leaks, memory corruption, problems with concurrency and surprises in resource starvation. In general, load testing is complementing other types of tests and helping find bugs that happen during unexpected usage scenarios.

Load testing can reveal (non-exhaustive list):

  • Memory leaks

  • Memory corruption

  • Race conditions

  • Resource starvation

The major downside with load testing is that the tests are typically not well reproducible. You might have a crash during one run, but not get it during the following runs. Load testing is time-dependent and controlling timing precisely is hard. Also, using extensive logging or tracing might not be feasible during load testing, and as such debugging errors found in load testing can be costly compared to debugging errors found in other types of tests.

Summary

In this blog post we discussed load testing. Load testing is complementing other types of tests and can help find bugs that are unexpected in nature. However, debugging bugs found in load testing can be costly compared to the alternatives.

This article is part of Omoroi’s blog series on Software Testing. You can reach us at blog@omoroi.fi or discuss in this LinkedIn thread.

Previous
Previous

Software Testing: Characteristics Testing

Next
Next

Software Testing: Regression Testing