Stress Testing is performed to identify
the issues of the application that can arise only in cases of extreme software
and hardware conditions. These conditions may be heavy loads, extreme
concurrency or limited resources. Stress Testing identifies the breaking point
of the application and related system discrepancies that may occur just before
that. Such inconsistencies may be:
- Loss or corruption of data.
- Unnecessary high resource utilization
.- Failure of application components to
respond.
- Surfacing of new and un-handled
exceptions.
Stress
on an application can be due to one or more of the following reasons:
- Excessive user or data
- Denial of service
- Sudden spike in user transactions
- Unexpected outages
Steps for Stress Testing -
Step
1: Identify the test objectives
- The different ways that the system can
possibly fail.
- Parameters to consider for building
defenses against possible failures.
- Identify the behavior of the system
under challenging situations.
- Ensure the stability of the system
under stressful conditions.
Step
2: Identify the main scenarios
- Select scenarios critical to the overall
application performance.
- Try operations that affect performance.
- Define scenarios based on potential
bottlenecks through load testing and stress test in these areas.
Step
3: Identify the workload
- Incrementally increase the load and
record the application performance under such conditions. Here, the key is to
test the system with various workloads until a significant failure can be
created.
The following activities help to
identify the correct workload for stress testing:
- Observe the distribution of work
- Estimate the peak user load
- Simulate the anti-profile workload
Step
4: Identify the metrics
Metrics help to identify the potential
problem areas in a system or application.The different types of metric
categories are:
- Processor Utilization
- Memory Consumption
- Process recycles
- Available memory
- Utilized memory
- Disk utilization
- Network utilization
- Transaction Rate
- Successful transactions
- Failed transactions
- Successful orders
- Failed orders
- Rate of contention
- Deadlocks
- Thread allocation
- Transaction time
Step
5: Creation of Test Cases
In addition to workload profiles and key
scenarios, additional parameters such as performance objectives, workload
characteristics, test environment, test data and identified metrics are
required to design a test case. The expected results should be mentioned for
each test in such a way that the test can be marked as a pass or fail after its
execution.
Step
6: Load Simulation
- Validate the test environment as
expected.
- Ensure the correct configuration of
the test and the test environment for metrics collection.
- Quickly execute a smoke test to ensure
that the test script and the performance counters are correctly working.
- Reset and start the system.
Step
7: Result Analysis
Analyze and compare the results as per
the accepted level for each metric. In case of any issues:
- Review the design.
- Review the code.
- Run the stress tests in environments
where debugging is possible.
Conclusion
In practice, stress testing in generally
applied in application testing, transaction testing and system testing.
Exploratory stress testing is applied by subjecting the system to conditions
that are very unlikely to occur. A stress test is sometimes confused with loadtest, which is a milder form of testing. Stress testing very brutally
emphasizes on the robustness, reliability, stability and scalability of a web
application.