Stress Testing

Stress Testing

What is Stress testing

Stress Testing is a Software Testing technique that determines the robustness of software by testing beyond the limits of regular operation. Stress testing is essential for critical software but is used for all types of software.

Characteristics of Stress Testing

Stress testing analyzes the behavior of the system after a failure.

Stress testing makes sure that the system recovers after failure.

It checks whether the system works under abnormal conditions.

It ensures the display of appropriate error messages when the system is under stress.

It verifies that unexpected failures do not cause security issues.

It confirms whether the system has saved the data before crashing or not.

Purpose of Stress Testing

Analyze the application’s behavior after failure:  The purpose of stress testing is to analyze the behavior after failure, and the software should display the appropriate error messages under extreme conditions.

System recovers after failure: Stress testing aims to make sure that there are plans for recovering the system to the working state so that the system recovers after failure.

Uncover Hardware issues: Stress testing helps uncover hardware and data corruption issues.

Uncover Security Weakness: Stress testing helps uncover the security vulnerabilities that may enter the system during the constant peak load and compromise the system.

Ensures data integrity: Stress testing helps determine the application’s data integrity throughout the extreme load, which means that the data should be dependable even after a failure.

Stress Testing Process

The stress testing process is divided into five steps:

Stress Testing Process

Planning the stress test: This step involves gathering the system data, analyzing the system, and defining the stress test goals.

Create Automation Scripts: This step involves creating the stress testing automation scripts and generating the test data for the stress test scenarios.

Script Execution: This step involves running the stress test automation scripts and storing the stress test results.

Result Analysis: This phase involves analyzing stress test results and identifying the bottlenecks.

Tweaking and Optimization: This step involves fine-tuning the system and optimizing the code to meet the desired benchmarks.

Types of Stress Testing

Server-client Stress Testing: Server-client stress testing, also known as distributed stress testing, is carried out across all clients from the server.

Product Stress Testing: Product stress testing concentrates on discovering defects related to data locking and blocking, network issues, and performance congestion in a software product.

Transactional Stress Testing: Transaction stress testing is performed on one or more transactions between two or more applications. It is carried out for fine-tuning and optimizing the system.

Systematic Stress Testing: Systematic stress testing is integrated testing used to perform tests across multiple systems running on the same server. It is used to discover defects where one application data blocks another application.

Analytical Stress Testing: Analytical or exploratory stress testing tests the system with abnormal parameters or conditions that are unlikely to happen in a real scenario. It is carried out to find defects in unusual scenarios like a large number of users logged simultaneously or a database going offline when accessed from a website.

Application Stress Testing: Application stress testing, or product stress testing, focuses on identifying the performance bottleneck and network issues in a software product.

 

Examples:

  1. Stress Test of the CPU will be done by running software application with 100% load for some days which will ensure that the software runs properly under normal usage conditions.
  2. Suppose you have some software which has minimum memory requirement of 512 MB RAM then the software application is tested on a machine which has 512 MB memory with extensive loads to find out the system/software behavior.