- Trending Categories
- Data Structure
- Operating System
- C Programming
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Explain about Stability Testing in Software Testing
Stability testing is a sub-category of software testing to evaluate the quality and behaviour in various environmental parameters of the software product under testing. This testing determines the capability of the product to continue functioning over time without failing or crashing.
Stability testing checks the efficiency of the product to perform beyond its operational limits, known as threshold or breakpoint. It primarily focuses on error handling, software product robustness, reliability and scalability under heavy load. This testing assesses problems related to stability of the product. During stability testing, the product is stressed to the maximum possible limit. Stability testing is a type of non-functional testing. This testing is a part of performance testing, and is often referred to as extreme load testing or endurance testing.
For example, you are buying a new product, let’s say a smart phone. You expect the smart phone to perform for a long time, without any issue of failure such as battery heating, lagging, internet disruption on part of the smart phone, and so on. The same is what the users of a website or an application expect; the website or the app performs for a long period of time with stability and reliability.
Now consider an e-commerce website. Suppose a huge number of users than normally are trying to purchase products from the website. In such scenarios, there is a higher chance of degradation in the performance of the website with increasing users. Users may witness slower response time, memory leakage, etc.
Such issues pose threats to developers as well as stakeholders. Thus, it becomes the responsibility of the testing team to identify even a minor issue in the product and report it to the development team before it is released.
Objectives of Stability Testing
To provide confidence to the product in terms of stability.
To make sure that the product can efficiently handle large programs.
To check the product’ stability under stress.
To identify bottlenecks in the product.
To determine the response time of the product.
To evaluate the database connectivity.
Stability testing determines the limitations of the product under testing; thus, it is key to development.
Process of Stability Testing
Requirement analysis − In this stage, the testing team decides and records the tests to be conducted on the product. The kind of tests needed to be done depends on client’s requirements and the type of product.
Planning test − In this stage, the scope of the test is decided upon. The testing team determines whether automation is needed or not. The process of stability testing is tedious and the tests are repeated multiple times. In this stage, the budget of the entire project is also decided, along with time limit. The budget and the time limit must match the test plan.
Developing test cases − Test environment is key to any type of software testing. An appropriate test environment is required which exactly replicates the production environment. The original environment must not be affected by to avoid any data loss.
Executing tests − In this stage, the test cases are executed, and the results thus obtained are verified and recorded. This stage is time-consuming. In general, in this stage, testers face issues such as memory loss, data connectivity issues, poor response time, and so on.
Test closure − In this stage, the testing team meet and decide the exit criteria of the project. This criterion depends on various factors, such as number of defects identified in testing, time spent in testing, etc.
What problems a software product may face if it has not undergone Stability Testing
In case of a product under test, where a number of users are engaged with it and the product has to function for a long time, a number of issues are likely to arise, such as −
The system may slow down.
The system may witness functionality issues.
The system exhibits unusual behavior.
The system fails or crashes.
In stability testing, the product is exercised with heavy virtual load, and its performance is measure using some parameters to determine whether the product can withstand an expected load.
Test reports for Stability Testing
During stability testing, various statistics are collected and measured. These data are analyzed to create a report and in order to identify the performance bottlenecks. Some examples of the statistics gathered under stability testing are −
Response time of transactions − The average time required to complete transaction during test. This statistic evaluates the performance of the server, and determines whether it is within the permissible minimum and maximum transaction performance time periods specified for the product.
Hits per unit time − This is the number of hits users make on the server. This statistic helps determine the load generated by users.
Throughput − The amount of throughput on the server is measured in bytes. Throughput is the number of requests processed per unit time; the amount data served by the server to users per unit time. This statistic helps determine the load users generate.
Transaction per second − This is the number of transactions completed; successful and failed; during test. This helps determine the actual transaction load on the product.
CPU − This is the CPU usage during test.
Memory − This is the memory usage during test.
Disk − This is the usage of disk spaces during test.
Tools for Stability Testing
System Stability Tester − This tool is used to determine CPU and RAM stressing, burning and benchmarking. This tool is a multithreaded processor, and can be used with multiple platforms.
HeavyLoad − This open-source tool is used to determine the stability of primary parts of the system, such as memory, processor, hard drive, etc. It analyses system’s performance with decreasing disk space. This tool can execute tests independently as well as altogether. It can perform complex calculations to generate load on the processor. It replicates hard drive disk access. It is compatible with multiple platforms, such as Windows XP, Windows 8 32-bit and 64-bit, etc.
FurMark − This is an open-source tool and is one of the most commonly used tools for stability testing. It is easy to use, lightweight, and includes rigorous graphic card. The algorithms that this tool uses can be optimized to heat GPU, to test its stability, resistance under extreme load. It supports multiple OS such as Windows XP, and all other versions. It comes in multiple languages, such as English, Spanish, and German.
IntelBurn Test − This open-source tool is a CPU stress benchmark and application stability testing tool. It helps determine the maximum limit of CPU. It supports modern Windows-NT-based OS, and all other versions. This tool provides real-time output. It has an appealing appearance, and simplifies the Linpack procedure and shortens the selection process of the test size to use.
Other tools used in stability testing are WebLOAD, LoadRunner, Jmeter, NeoLoad, CloudTest, Loadstorm, LoadUI, WAPT, Loadimpact, Loadster, Httperf, OpenSTA, Performance Tester, Testing Anywhere, etc.
Advantages of Stability Testing
Stability testing improves end-user experience and makes the product more stable.
It enables the monitoring of product ‘s efficiency.
It analyzes the product’s stability and durability under extreme loads.
It determines the data limit; the product can handle virtually.
It establishes confidence in the product’s performance.
It ensures continuous work irrespective of the number of users.
Disadvantages of Stability Testing
In case stability testing is not performed, the system may fail because of the additional load subjected to CPU or processor, eventually causing data loss.
The system may crash without undergoing stability testing and may slow down under massive amount of data.
In absence of stability testing, system’s performance and eventually business is severely affected.
It works abnormally with changing environments.
Examples of Stability Testing
One popular form of stability testing is a CPU. This testing determines the stability of the processor and monitors its performance with increasing workload.
e-commerce website − Stability testing determines the behavior of the website when − massive amount of data is subjected at peak time, number of hits at a particular time, page loading issue, abnormal behavior, and response time of the system.
Test cases for CPU or processor performance − To determine the maximum limit, to identify its drawbacks and reasons behind them, to determine and improve the number of transactions or requests processed, to determine and improve the response time, and to check the behavior under extreme load.
Stability testing is performed to test the stability of the software product under testing in a specified environment. Stability testing is a non-functional testing and performed as a part of performance testing. This testing checks the stability of various components such as processor, CPU, and memory. This testing is only concerned with the characteristics of the product, and not its behavior.
Most of the products have an improper design and do not release memory after usage. Thus, it causes memory loss. Stability testing helps overcome such issues. Stability testing can be executed by means of automation as well as manually. The starting step of this testing is regression testing or smoke testing. Once this is completed, functional or nonfunctional testing is started.
- Stability Testing in Software Testing
- Testing Documentation in Software Testing
- Levels of Testing in Software Testing
- What is Endurance Testing in Software Testing?
- What is Domain Testing in Software Testing?
- What is Concurrency Testing in Software Testing?
- What is Thread Testing in Software Testing?
- What is Stress Testing in Software Testing?
- What is Volume Testing in Software Testing?
- What is Interoperability Testing in Software Testing?
- What is Workflow Testing in Software Testing?
- Difference between Software Testing and Embedded Testing
- What is the Endurance Testing in Software Testing?
- Embedded Testing (Types of Embedded Testing, Differences between Embedded Testing and Software Testing
- Test Coverage (Software Testing)