Stress testing

Software stress testing is the practice of testing the software application under exceptional conditions, conditions beyond what are expected normally. Often this involves similating large amounts of traffic to the software application.

Stress testing involves looking at what happens when the software is operating under stress. In addtion to just similating lots of users on the system (or lots of traffic to the database etc.) it can look at what happens if the web server has the CPU taxed heavily (perhaps by other software application on the same server), what happens if the database server goes offline and is quickly rebooted, etc..

Stress testing includes noting if the software is able to continue to do what is required and also how it copes if it cannot complete actions. Do users get adequate notice of what has happened (do they get notice something failed or are left thinking things worked when they didn't)? Do logs accurately identify what happened? Do security measures get compromised in any of the stressful conditions?

Related terms: Smoke testing - User acceptance testing

Stress testing for conditions where certain parts (for example breaking an api call made by the software - so that it doesn't get a response when it expects one) of the system are removed can be called "negative testing." Note that "negative testing" also referers to test cases in which a specific "failure condition" is expected (for example, enter a character into a field that requires a number and verify that the error message displayed is correct). So just note that there are different senarios both refered to with the same term - "negative testing."