Defining Different Types of Performance Tests
Throughout this chapter, we use a few terms that are related to optimizing WebLogic applications. These terms are often mistakenly used interchangeably, but in fact they refer to distinct tasks. To eliminate any ambiguity, we define these terms here:
Performance testing is the act of measuring how long specific functionality within an application takes to execute. The information gathered from this test indicates which parts of an application are slower and faster than others.
Load testing is the act of monitoring application behavior as a large number of simulated users are simultaneously accessing an application. The information gathered from this test shows how the application performs under user load. This includes actual performance times and potential software bugs.
Stress testing involves simulating user load and denying the application resources that it is dependent on, including network bandwidth, RAM, and database connections. This test shows how the developers have handled low-resource conditions or whether they have handled them at all. Applications that do not have access to required resources should behave in a graceful, predictable manner and should not lose and/or damage critical information.
Together, these three types of tests produce information that unit testing was not designed for. These are flaws in application design and implementation that produce errors and/or performance issues when executing in a simulated live environment. Sometimes, it is not defects that affect performance; it is just that we have not taken advantage of the various performance tunings available to us.