Stress testing deals with the quality of the application in the
environment. The idea is to create an environment more
demanding of the application than the application would experience under normal
work loads. This is the hardest and most complex category of testing to
accomplish and it requires a joint effort from all teams.
A test environment is established with many testing stations. At each
station, a script is exercising the system. These scripts are usually based on
the regression suite. More and more stations are added, all simultaneous
hammering on the system, until the system breaks. 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.