Scalability testing is a non-functional testing methodology to test the software application capability to scale up or scale down based on the user requirements. It can be done at hardware level, software level or database level. The parameters used in scalability testing would differ from one application to another. Following are some of the attributes of scalability testing. They are:
- Response Time: It is the time taken by the software system to respond to user request. It is important to identify the response time for the server under the minimum load, threshold load and maximum load the point at which the application may breakdown. The response time may increase or decrease based on varying on the user load. For example the response time is measured when the user enters the web address in the URL to the time taken to load webpage content.
- Throughput: It is the measure of the number of requests processed in a unit time by the application. The throughput may differ from one application to another. In case of web application, it is the number of user requests processed per unit time. But in case of a database, it is the number of queries processed per unit time.
- CPU-Usage: It is a measure of CPU- utilisation for performing a given work by an application. For example removing the dead code in the application and minimising the use of thread. Sleep method is one of the best method to minimise the CPU utilisation.
- Memory Usage: It is the amount of memory consumed to perform a work by an application. Memory is measured in terms of bytes that the developed application uses to access the random access memory. For example if the storage space is insufficient, then the developer will add additional database storage space to avoid the loss of data. Memory usage of the application is reduced by using best programming practices.
- Network Usage: It is the amount of bandwidth consumed by an application during the test. The main goal of network usage is, to reduce the network congestion. Programming techniques like use of compression techniques can help to reduce congestion and minimise the network usage. For example instead of following the queue method to process the user requests a developer can write the code to process the user requests as and when it arrives at the database.
The steps to test the scalability for an application:
- Creating repeatable scenarios for each scalability testing attributes.
- Testing the application for various load like high, medium and low and always verify the application’s behaviour.
- Create the test environment that is stable enough to withstand the scalability testing cycle.
- Configure the hardware that is necessary to perform the testing.
- Use a set of virtual users for verifying the behaviour of an application under different load.
- Repeat the test scenarios for various application under the multiple users on different varying conditions for internal applications.
- Execute the test scenarios under the test environment.
- Analyse the report and verify the areas of improvement.
Scalability testing Vs Load testing:
Load testing measures the application under maximum load at which the system would crash. The main purpose of load testing is to identify the peak point after which the users would not be able to use the system. Scalability testing differs from load testing, it measures the system at the minimum and maximum loads of all levels including the software, hardware and database levels. The load testing determines the point where the application crashes and scalability testing identifies the reason for application crash.
- What is scalability testing?
- What are the attributes of scalability testing?
- Explain scalability testing with an example?