What Is Scalability Testing? How Do You Test Application Scalability?
Table of content:
- Objective of Scalability Testing
- Scalability Testing Attributes
- Types of Scalability Testing
- Test Strategy
- Advantages of Scalability Testing
- Disadvantages of Scalability Testing
Scalability testing, a type of performance testing, is a non-functional testing method of testing the performance of a particular application, software, system or process such that its ability to scale up or scale down the number of user request load or other such performance attributes can be checked and measured. This enables the system to make changes at hardware, software or database level in order to achieve desired function and output even when changes are made to the size or volume of the system and manage the scheduled increase in user traffic, data volume, transaction counts frequency, etc.
Different applications shows scalability testing based on differing criteria. For example, for a web server, criteria consists of number of requests processed and the response time and for a web page, criteria consists of number of users, network usage, CPU usage, etc.
Objective of Scalability Testing
The objectives of Scalability Testing include the following:
- Determination of scalability of the application with respect to the increasing workload and ability of software to scale up based on workload and data traffic.
- Determination of client-side degradation and end-user experience under maximum load.
- Determination of how well an application runs when there is an increase in user demand.
- Determination of robustness and degradation of the server.
- Determination of the user limit for the software product.
- Identification of the threshold point where the application stops adapting or responding to the changes made in the application and the reasons behind this.
- Optimization of development, operational costs, cost of maintenance as well as infrastructure costs.
Scalability Testing Attributes
Attributes for Scalability Testing includes the following:
- Throughput — Throughput refers to the number of requests that are processed and output is generated in a unit time by a particular application. Different applications have different throughputs. For example, in the case of a web application, the number of user requests processed by the application per unit time gives the throughput and in case of database application, the number of queries processed in a unit time gives the throughput.
- Response Time — As the name suggests, Response is the time needed by the application or software product to process an output or a response for a request made by the user. It gives an idea about the application response to user application request. The application which has the least response time is considered to be the higher performance application. It depends on the user’s load for the user’s request. If the load is high, then the response time needed is less.
- Threshold load — It refers to the number of requests processed by the application with a desired throughput.
- CPU Usage — CPU Usage measures the amount of CPU used when a particular application code instructions or code is executed. Unit of measurement for CPU Usage is Megahertz.
- Network Usage — Network Usage, as the name suggests, is the measure of the bandwidth used by an application to carry out a test. Unit of Measurement for Network Usage is bytes received per second, frames received per second, segments received and sent per second.
- Memory Usage — Memory Usage is the measure of the memory consumed by an application or a software to perform a task. Unit of Measurement for Memory Usage is bytes.
- Performance measurement based on number of users — The number of users that a particular application or software can support without breakdown or standby like situation is referred to as the Application Performance metrics based on number of user. It varies for different kinds of applications or software applications.
Types of Scalability Testing
They are of two types, which are given as follows:
1. Upward Scalability Testing
Upward scalability testing helps in identification of the maximum capacity of an application by expanding the number of users on a specific scale till a crash point is reached for the application.
2. Downward Scalability Testing
Downward scalability testing helps in the identification of bottleneck (bug) by decreasing the number of users at regular intervals of time when the load testing is not passed till the goal is achieved for an application.
Test strategy differs for different applications or different software. The test strategy can be changed based on the type of application being tested. It can be divided into the following heads:
- Prerequisites of scalability testing
- Process of scalability testing
- Scalability test plan
These are mentioned as follows:
Prerequisites of scalability testing
Prerequisites needed for testing of scalability are as follows:
- Load Distribution — It includes generation of load from different machines and then managing them from a single unique point using Load testing tool.
- Operating System — An operating system needs to be determines in order to carry out the functions of an agent like load generation and running of the load test master.
- Processor — A central Processing Unit (CPU) needs to be determined and identified for load master and the agent.
- Memory — It needs to be determined how much memory is required for the process.
Process of Scalability Testing
The sequences of actions involved in this process can be described as follows:
- The first step in executing scalability tests is to define a repeatable process.
- The criteria for tests is then specified.
- Software tools that will be required to carry out the process are determined and specified.
- The testing environment is set up.
- Hardware components required are configured.
- Visual Script is created and verified.
- Load test scenarios are created and verified.
- Test is executed.
- Results are evaluated.
- Report is generated based on the tests and results.
This entire process can be divided into 4 main points that will help you to remember : Assessment and Prediction, Test execution, Test Development and Logging and Reporting the results.
Scalability Test Plan
Scalability Test plan needs to be created before the process is done. A well defined test plan helps in meeting the requirements of the application, the test plan consists of the following attributes**:**
- Scripts — It provides the detailed plan of action for the user to perform.
- Run-time data — Run-time data needs to be identified in order to be able to interact with the application or the software.
- Data-driven tests — It is used for understanding the fields that require varying data at run-time.
Advantages of Scalability Testing
Benefits of scalability testing include the following:
- It helps in determination of the restrictions of a web application comprising of network usage, response times, etc.
- It helps save both time and money by finding out the errors quickly and helps in provision of a corrective action against the errors.
- It assures a user about the benefits and difficulties in future development of a software product.
- It helps in tracking of operative tool utilization.
- It helps to control the end user experience when a specific load is provided and when there is an increase in user demand.
- It helps in accessing the situation and the difficulties faced by an application and fix the issues involved.
- It helps identify the multiple performance issues in a application or software.
- It helps to keep the test environment unchanged by carrying out load tests.
Disadvantages of Scalability Testing
The drawback of Scalability Testing include the following points:
- The functional faults may occur and that may not be considered when the test is done.
- The test environment may be different from the production environment.
- Utilization of advanced tools for scalability and exclusive testing team for performance tests can lead to over budget for the projects.
- This process requires expertise and high-level of testing knowledge and skills.
- Incorrect test scripts and test scenarios can lead failure of the tests and waste of time due to pointless modifications made on them.
The following can be concluded from the article:
- Scalability testing is a non-functional test method of testing the performance of a particular application, software, system or process such that its ability to scale up or scale down the number of user request load or other such performance attributes can be checked and measured.
- Different applications shows scalability testing based on differing criteria.
- There are various objectives of this testing process but the main objective involves the identification of the threshold point where the application stops adapting or responding to the changes made in the application and the reasons behind this.
- Scalability testing includes attributes which are Throughput, Response time, CPU Usage, Memory Usage, Network Usage, Threshold Load, Performance measurement based on number of users.
- There are two types of scalability testing which are upward scalability testing and downward scalability testing.
- Test strategy differs for different applications or different software. It can be divided into Prerequisites of scalability testing, Process of scalability testing and Scalability test plan.
You might be interested in reading: