The terms "stress testing" and "load testing" are often used interchangeably by software test engineers but they are really quite different. Even the generally reliable wikipedia slightly botches the explanation of these two terms. Stress testing is the process of subjecting your program/system under test (SUT) to reduced resources and then examining the SUT’s behavior by running standard functional tests. The idea of this is to expose problems that do not appear under normal conditions. For example, a multi-threaded program may work fine under normal conditions but under conditions of reduced CPU availability, timing issues will be different and the SUT will crash. The most common types of system resources reduced in stress testing are CPU, internal memory, and external disk space. When performing stress testing, it is common to call the tools which reduce these three resources EatCPU, EatMem, and EatDisk respectively.
Load testing is the process of subjecting your SUT to heavy loads, typically by simulating multiple users, where "users" can mean human users or virtual/programmatic users. The most common example of load testing involves subjecting a Web-based or network-based application to simultaneous hits by thousands of users. This is generally accomplished by a program which simulates the users. There are two main purposes of load testing: to determine performance characteristics of the SUT, and to determine if the SUT "breaks" gracefully or not. In the case of a Web site, you would use load testing to determine how many users your system can handle and still have adequate performance, and to determine what happens with an extreme load — will the Web site generate a "too busy" message for users, or will the Web server crash in flames?
You can read about a memory stressor (EatMem) in the May 2006 issue of MSDN Magazine at http://msdn.microsoft.com/msdnmag/issues/06/05/TestRun/default.aspx. If you enjoyed this blog entry, you might enjoy working at Microsoft. My parent company, Volt Information Sciences, is always looking for software engineers. Check the job listings at http://jobs.volt.com/.