The goal of performance testing is not to find bugs, but to eliminate bottlenecks and establish a baseline for future regression testing. For a Web application, testers will use tools that simulate concurrent users/HTTP connections and measure response times.
Stress Testing, Load Testing and Performance Testing are very close to each, they almost use the same methods but they vary in their approach.
In the white-box approach, testers, developers, system administrators and DBAs work together in order to instrument the application code and the database queries (via specialized profilers for example), and the hardware/operating system of the server(s) running the application and the database (via monitoring tools such as vmstat, iostat, top or Windows PerfMon). All these activities belong to performance testing.
The black box approach is to run client load tools against the application in order to measure its responsiveness. Such tools range from lightweight, command-line driven tools such as httperf, openload, siege, Apache Flood, to more heavy duty tools such as OpenSTA, The Grinder, JMeter. This type of testing doesn't look at the internal behavior of the application, nor does it monitor the hardware/OS resources on the server(s) hosting the application. This belongs to load testing.
It’s the process of determining the ability to maintain a certain level of effectiveness under unfavorable conditions. The process can involve quantitative tests done in a lab, such as measuring the frequency of errors or system crashes.
We tend to measure the stability of the system, robustness, availability, and error handling under a heavy load.
Stress testing tries to break the system under test by overwhelming its resources or by taking resources away from it (in which case it is sometimes called negative testing). The main purpose behind this madness is to make sure that the system fails and recovers gracefully. This quality is known as recoverability.
It’ the process of subjecting a system to a work level approaching the limits of its specifications. Load testing can be done under controlled lab conditions to compare the capabilities of different systems or to accurately measure the capabilities of a single system. Load testing can also be done in the field to obtain a qualitative idea of how well a system functions in the "real world."
In the testing literature, the term "load testing" is usually defined as the process of exercising the system under test by feeding it the largest tasks it can operate with. Load testing is sometimes called volume testing, or longevity/endurance testing.Load testing can provide the user with a general idea of how many applications or processes can be run simultaneously while maintaining the rated level of performance.