Is a test in which an application’s performance is measured in terms of its ability to scale up or scale down.
Scalability testing can be performed at a hardware, software or database level.
Parameters used for this testing differs from one application to the another.
For a web page, it could be:
Number of users
CPU usage
Network usage
For a web server it would be:
Number of requests processed
Function of Scalability Tests:
Scalability tests check the ability of an application to scale up or scale down on any of its non-functionality requirements such as load, number of transactions, number of servers, volume of data etc.
Test Results [1]:
Response Time:
An application can be deemed to be scalable if it can deliver the same response time for varying levels of user load.
In the case of clustered environments where the application load is distributed among multiple server components, scalability testing must measure the extent to which the load balancer is distributing the load among multiple servers. This will ensure that one server is not being overloaded with requests while the other server is sitting idle waiting for a request to come in.
The response time of each server component must be carefully measured if the application is hosted in a clustered environment and scalability testing must make sure that the response time of each server component must be the same regardless of the amount of load placed on each server.
Throughput:
Throughput is the measure of a number of requests processed over a unit time by the application.
The outcome of throughput may differ from one application to another. If it is a web application throughput is measured in terms of the number of user requests processed per unit time and if it is a database. throughput is measured in terms of a number of queries processed in unit time.
An application is deemed to be scalable if it can deliver the same throughput for varying levels of load on the internal applications, hardware, and database.
CPU Usage:
CPU Usage is a measure of the CPU Utilization for performing a task by an application. CPU Utilization is usually measured in terms of the unit MegaHertz.
Ideally, the more optimized the application code is, the lesser will be the CPU Utilization observed.
In order to achieve this, many organizations use standard programming practices to minimize CPU Utilization.
Memory Usage:
Memory usage is a measure of the memory consumed for performing a task by an application.
Ideally, memory is measured in terms of bytes (Mega Bytes, Giga Bytes or Tera Bytes) that the developed application uses in order to access Random Access Memory(RAM).
Memory usage of an application can be minimized by following the best programming practices.
Examples of best programming practices would be not to use redundant loops, reduce the hits to the database, use of the cache, optimizing the use of SQL queries, etc. An application is deemed to be scalable if it minimizes the usage of the memory to the maximum extent possible.
Network Usage:
Network usage is the amount of bandwidth consumed by an application under test.
The goal of network usage is to reduce network congestion. Network usage is measured in terms of bytes received per second, frames received per second, segments received and sent per second, etc.
Programming techniques such as the use of compression techniques can help to reduce congestion and minimize network usage. An application is deemed to be scalable if it can perform with minimum network congestion and deliver high application performance.
Example: Server performance at 15 concurrent users [2]
Caption: This graph indicates a few bottlenecks and the need for some optimization