How should you manage running the tests?
The performance test should be the first planned test in your development process. You can define several simultaneous users, known to be supported by the infrastructure, as well as the criteria associated with regular use of the system. Data collected from this test can then be used as a reference point for other tests, including load and stress tests (as it determines the number of benchmarks such as average connection speed, average latency and average download time).
Once you have established some fundamental performance values, it’s time to load test. The number of users can be gradually increased to reach the critical threshold – the point where errors and system malfunctions start to appear. Load testing should be performed over a set period. This test is intended to verify the stability of an app when load levels approach the critical point.
After the breaking point has been determined through load testing, continue to increase the load on your systems to perform stress testing. A gradual increase in load levels helps detect components which aren’t working correctly. This highlights the types of problems that occur, as well as identifies the parts of the system that require strengthening.
Load and resistance: additional tests
Load tests can be scheduled to perform any number of upstream requests within a system to test its functionality when dealing with concurrent requests. This ensures the system can handle predicted traffic volumes. The objective is to prove that the system can manage anticipated volumes, with perhaps only a slight performance degradation. Testers must, therefore, determine upfront the acceptable levels of performance degradation across different functionalities. These values will serve as a baseline for assessing the success of the tested application (or not).
Resistance tests are designed to increase the number of concurrent requests on an app beyond the defined breakpoint (up to complete system failure). Simply, it’s deliberately overloading the resources to reach a state of inability, watching how the system manages this eventuality and how it recovers.
Although they are different tests with different objectives, load tests and stress tests are closely linked. A stress test can be thought of as an extension to the load test as it aims to push the system beyond the limits defined during load testing. The first failures highlighted during a stress test will be identical to those of the load test.