When a software is developed, it goes through two main phases, namely development and testing. While the software is created in the development phase, in the testing phase a probe is conducted on the software to verify if the software is fit for purpose and the quality of the software is as per the set standards. It is this process, which gives the end user an independent and objective view of the software. Using this information the end user takes the decision regarding the need of implementing the said software into consideration as much as he understands the risks of implementing the software. To gather the information to be given to the end user, there is a battery of tests, that are carried out on the software. Each of these tests gives a different view and is able to find out different types of defects in the software. One of the types of software testing is scalability testing. It belongs to the trio of tests, which are often spoken about in one breath, namely performance, scalability and reliability.
What is Scalability Testing?
One of the non functional tests carried out on a software are the scalability tests. With these tests, it is tested whether the software can scale up or scale out, when the need be. The scaling is in terms of non functional capability only. It is carried out at regular intervals during the software development process, which helps in identifying the scalability problems in the software. It is often seen as an extension of performance testing. This type of testing aims to key out major workload sections in the software and also help in extenuating bottlenecks in the software, which can hinder the scalability of the software. The scalability test strategy involves testing the software for different hardware and software configuration, while all the other parameters remain the same.
Since this type of testing is carried at regular intervals, there are different phases of this type of testing. The phases are more or less the same for web applications and system applications.
Architecture Validation: In this phase, the scalability of the architecture of the application is tested. It is often carried out after a prototype of the software has been made. The aim of this phase is to test, whether the software can generate transactions, so that all the tiers of the application are touched.
Performance Benchmarking: It is in this phase that a benchmark for the initial version of the tests are created. A set of metrics are made, which help in quantifying the scalability of the said application. Depending on the requirements, the benchmark can either be maintained or improved upon.
Performance Regression: When the application is made, it is tested to check, that the application does not degrade in scalability testing. Often when key milestones are achieved or any architectural changes have been to the software, this test is carried out.
Fine Tuning: This is the final phase of this type of testing. It is carried out before the software is ready for delivery. The different components of the software are integrated upon which scalability and load testing is carried out. Real time scenarios are created and testing is carried out to simulate real life usage.
When scalability testing is carried out, there are certain attributes, which are taken into consideration. Response time, screen transition and throughput are the attributes for which the software is tested first. The time taken for rebooting the system, carrying out different transactions, task execution, etc., are also attributes, which fall under the time attribute. Performance measurement is carried out with a number of users and under load of transactions. The CPU usage, memory usage, network usage (if it is a web application) are the attributes for which the software is tested, when it comes to hardware requirements.
To sum up, In this testing type, both the non functional attributes and the performance of a software system. It is tested to check, if the software is able to meet the specified requirements of the end user.