In Stress Testing, the application under test is tested against very heavy load, which checks for the behavior of the applications beyond load testing. The idea is to create an environment more demanding of the application than the application would experience under normal work loads. Any software is tested with increasing load and can be tested until the system breaks, and stress testing is testing of system behavior and functionalities after the highest load a system can work with. The system is repaired and the stress test is repeated until a level of stress is reached that is higher than expected to be present at a customer site. Race conditions and memory leaks are often found under stress testing.
A race condition is a conflict between at least two tests. Each test works correctly when done in isolation. When the two tests are run in parallel, one or both of the tests fail. This is usually due to an incorrectly managed lock. A memory leak happens when a test leaves allocated memory behind and does not correctly return the memory to the memory allocation scheme. The test seems to run correctly, but after being exercised several times, available memory is reduced until the system fails