August 20, 2019
Stress Testing Tutorial: Understanding the Basics
This article covers what is stress testing, the purpose of stress testing, its benefits and you will know how stress testing is done.
Any failure in software due to any external factor or its inability to handle multiple requests creates a negative user experience. Stress testing mitigates these types of risks that may cause software failure in business-critical situations.
What is Stress Testing in software testing?
Stress testing is a non-functional form of testing which validates system against heavy network traffic, underclock (reducing a computer’s power consumption), overclocking (boosting a computer’s performance), and maximum request for resource utilization.
Stress testing is also called ‘endurance testing’. This method of testing stresses the AUT (Application under testing) resources to check its reliability and stability. It allows the testers to check the endurance power or limit the system can withstand before breaking down.
This testing checks compliance with the Service Level Agreement (SLA) to find technical errors or glitches under stress that can cause any deviations from SLA.
Testers often find this testing helpful in detecting some critical errors which are not always possible to find with other types of testing. It provides a way to effectively test the capacity of the system.
It also effectively checks the system’s response and error management under stress and extreme conditions.
It helps in finding the following errors in application software:
- Timing bugs and synchronization issues
- Interlock problems (mutually dependent functions)
- Request priority issues
- Loss of resource issues
- Memory leaks
- Data corruption and loss
Implementation of stress testing with the situation
A software application created for e-commerce application is stress-tested in the following scenario:
Stress testing checks the application response of the user with increased web traffic. The website is tested to work with more than expected users. Testers create virtual users to execute activities such as adding products, viewing products, payment. The number of virtual users is increased until the entire application breaks down. It helps in identifying performance issues, recovery, and mechanism.
When do we use stress testing?
Stress testing is a subdivision of performance testing. Stress form of testing checks system on recoverability aspect. In this form of testing, the software is tested to ensure its recoverability from any kind of failure is easy.
- It also helps to check the system’s performance and factors.
- Stress testing verifies the system’s delivery and error message during failure.
- It is also done to check was the data saved before any failure.
How to perform Stress testing?
Stress testing has the following steps:
- Prepare the test environment with the right set of hardware, network configuration, tools, software to perform the test.
- Understanding and categorization of metrics which will be used to analyze application under stress. It also defines the success criteria for stress testing (The maximum load for an application to pass or fail)
- Planning and designing stress test plan, identifying test case scenarios.
- Prepare and collect test environment, tools, and resources to strategize and make other components available for test.
- Implementing designs and develops a stress test as per industry best practices.
- Executing test cases, validating test data, test results.
- It includes sharing the results when the values of the results are within the accepted limits, and no threshold has been violated. The desired information has been collected for a particular scenario and in a testing environment.
What are the various types of stress testing?
The client-server model is a distributed model where the workload is divided between resource or service providers – servers and requesters for service-client.
In a distributed client-server system, stress testing takes place by distributing stress test to clients and tracking their status. In stress testing, the client sends a request to the server. Server and adds the name of the client and sends it across.
The client matches the incoming signal with the heartbeat or the one with the server. If there is no service signal from client to server, then it is checked for debugging.
1- Application stress testing
This method focuses on finding issues related to network, performance bottleneck, and data locking issues in the application.
2- Transactional stress testing
This method focuses on testing the smoothness of transactions between two or more applications. It improves business transactions.
3- Exploratory Stress testing
This method tests the application across multiple systems running at the same server. In this method, a tester checks the system using different parameters, which is unlikely to happen in a real scenario. This method tests the system response when a large number of users are logged in the system. Exploratory testing also finds the possibilities of system or software failure.
This method also checks the activities where the website is not able to access the database. Sometimes, the database is also stressed by adding more than it can store.
4- Systematic Stress Testing
This method test many systems that are on the server. It enables the testing team to find and report defects where data of one application blocks the flow of application software.
Stress testing helps in delivering robust and reliable software by mitigating the risk of software failure. This testing method helps to verify that the system appears under extreme conditions.