It’s good to see so good reaction to our Software QA Terminology series. In continuation to it, here is one more article in this series about Soak Testing. It is a type of performance testing which verifies a system’s stability and performance characteristics over an extended period of time. Let’s explore it further.
As per WikiPedia: Soak testing involves testing a system with a significant load extended over a significant period of time, to discover how the system behaves under sustained use. This can be considered as a type of stress testing.
There are many scenarios in which system has to undergo a huge load over a longer duration. One such example is an eCommerce site announcing a hefty discount over their product offerings. They may expect increase in number of visitors for 2-3 days. The purpose of soak testing is to simulate such situations. This helps in verifying if system can withstand excessive load for long duration.
On performing soak testing, below issues may be noticed in application.
- Decrease in the value of average response time.
- Performance issues for some users.
- Memory leakage issues.
- Unexpected behavior from system for some or all users.
- System crash due to huge load for longer duration.
- Higher database resource utilization.
Below are some best practices which should be followed to carry out soak testing efficiently.
- Server resource consumption(Eg. CPU usage, memory usage etc.) should be monitored.
- Database resource consumption should be monitored.
- Soak test should run with realistic user concurrency.
As seen from the above article, soak testing provides a measure of systems stability over an extended period of time. A classic example of a system that requires extensive soak testing is an air traffic control system. A soak test for such a system may have a multi-week or even multi-month duration.