Saturday, July 5, 2008

Load testing and Stress Testing

Load testing and Stress Testing

Load testing

Load testing is a much used industry term for the effort of performance testing. Here load means the number of users or the traffic for the system. Load testing is defined as the testing to determine whether the system is capable of handling anticipated number of users or not.

In Load Testing, the virtual users are simulated to exhibit the real user behavior as much as possible. Even the user think time such as how users will take time to think before inputting data will also be emulated. It is carried out to justify whether the system is performing well for the specified limit of load.

For example, Let us say an online-shopping application is anticipating 1000 concurrent user hits at peak period. In addition, the peak period is expected to stay for 12 hrs. Then the system is load tested with 1000 virtual users for 12 hrs. These kinds of tests are carried out in levels: first 1 user, 50 users, and 100 users, 250 users, 500 users and so on till the anticipated limit are reached. The testing effort is closed exactly for 1000 concurrent users.

The objective of load testing is to check whether the system can perform well for specified load. The system may be capable of accommodating more than 1000 concurrent users. But, validating that is not under the scope of load testing. No attempt is made to determine how many more concurrent users the system is capable of servicing. Table 1 illustrates the example specified.

Stress testing

Stress testing is another industry term of performance testing. Though load testing & Stress testing are used synonymously for performance–related efforts, their goal is different.

Unlike load testing where testing is conducted for specified number of users, stress testing is conducted for the number of concurrent users beyond the specified limit. The objective is to identify the maximum number of users the system can handle before breaking down or degrading drastically. Since the aim is to put more stress on system, think time of the user is ignored and the system is exposed to excess load. The goals of load and stress testing are listed in Table 2. Refer to table 3 for the inference drawn through the Performance Testing Efforts.

Let us take the same example of online shopping application to illustrate the objective of stress testing. It determines the maximum number of concurrent users an online system can service which can be beyond 1000 users (specified limit). However, there is a possibility that the maximum load that can be handled by the system may found to be same as the anticipated limit. The Table<##>illustrates the example specified.

Stress testing also determines the behavior of the system as user base increases. It checks whether the system is going to degrade gracefully or crash at a shot when the load goes beyond the specified limit.

Table 1: Load and stress testing of illustrative example

Types of Testing

Number of Concurrent users

Duration

Load Testing

1 User à 50 Users à100 Users à250 Users à500 Users…………. à1000Users

12 Hours

Stress Testing

1 User à 50 Users à100 Users à250 Users à500 Users…………. à1000Users àBeyond 1000 Users……….. àMaximum Users

12 Hours

Table 2: Goals of load and stress testing

Types of testing

Goals

Load testing

  • Testing for anticipated user base
  • Validates whether system is capable of handling load under specified limit

Stress testing

  • Testing beyond the anticipated user base
  • Identifies the maximum load a system can handle
  • Checks whether the system degrades gracefully or crashes at a shot

Table 3: Inference drawn by load and stress testing

Type of Testing

Inference

Load Testing

Whether system Available?

If yes, is the available system is stable?

Stress Testing

Whether system is Available?

If yes, is the available system is stable?

If Yes, is it moving towards Unstable state?

When the system is going to break down or degrade drastically?

No comments: