Scalability testing is a type of testing done for the websites which are subject to heavy loads. Here the term ‘load’ refers to the number of users using the website. Scalability testing is performed to check whether the website which is developed is capable enough to handle the large loads. It is a type of performance testing, where the performance of the website is measured under the various load conditions. Several tools are available in the market like Apache JMeter, HP Performance Tester (Load Runner), Web Load, Neo Load, Load View etc. to perform the scalability testing. Scalability testing helps in analyzing the speed, effectiveness, reliability, scalability, and interoperability of the system, computer, network, program or application. The other most important use of scalability testing is to check whether the server is crashing if the load increases. Also, this test not only determines the performance of the website but it also helps in finding issues with the database where you need to store all the data of the new customers. There are three types of load conditions- low, medium and heavy loads. Sometimes it is difficult to analyze the number of users increasing or decreasing within the time span to 2years, 3 years or 5 years or so on. Hence scalability test is performed to determine the various load conditions (low, medium and heavy loads). Also, it analyzes the time taken by the website to load under the various load conditions.
Which Tasks Performed In The Scalability Testing?
- The response time of the website.
- Hits, request and transactions per second.
- Various loads (number of users)- low medium or heavy conditions.
- Web server (Request or Response per second).
- Data sent and received.
- Impact of data storage in the database due to increase in load.
- Memory (CPU) usage.
- Time is taken to load the webpage or website.
Load Testing Process:
1) Test environment creation for the load testing.
2) Determining the load test scenarios for example-
- Preparing the data.
- Prediction of a number of users testing the application.
- Testing against the various speed conditions. For example, users connected with LAN or the leased lines or using the dial-up connections.
- Testing in various browsers (with different versions) supported by the application like Chrome, Firefox, Safari, Internet Explorer, Opera etc.
- The configuration of all the servers like web, application and DB Servers.
3) Execution of the test scenarios and analyzing the results.
4) Re-testing.
Tools Used In Scalability Testing:
1) JMeter–
JMeter is an open source tool to test the performance of the application. It is used to test the strengths and to analyze the overall performance under various load conditions. It is portable and supports 100% Java-based products and applications. It works at the protocol level.
It looks like a browser but it does not perform all the actions supported by browsers. It is a java desktop application. It supports different applications or protocols like- HTTP, HTTPS, FTP, SOAP, TCP, Java objects, LDAP etc. It can run on environment/workstation that accepts a Java virtual machine, for example, − Windows, Linux, Mac, etc. With the help of JMeter, we can generate test plans.
How it works-
When a group of users sends the request to the target server, JMeter returns statistics (using tables or graphs) which shows the performance of the server.
2) Load Runner-
This is one of the most widely used tools in the performance testing industry. It is developed by Hewlett Packard Enterprise. It is used to test the performance behavior of the application. When the load is applied to the application under test, load runner analyses the performance and provides the needful results. Load Runner generates the scripts by recording them.
Architecture: The architecture of load runner includes the following components:
- Load Generator-It generates the load
- VuGen (Virtual User Generator)- It helps in generating he scripts.
- Controller-It controls and specifies the script to be used and for how long.
- Agent Process-Establish or controls the connection between Controller and Load Generator instances.
- Analysis-assembles logs from various load generators.
3) Web Load–
It is a load testing tool. It is developed by Red View software. With the help of web load tool, we can measure performance, scalability and load of mobile or web applications. With the help of this tool, we can measure heavy loads and generate the analysis report. It can also highlight the weak points in an application. The main advantage of web load is that its maintaining cost is very low as compared to other tools. Also, it can analyze performance test results from any browser or Mobile device.
4) Neo Load-
It is developed by Neotys and is written in java. It is available in English and French language. It measures load and stress. The advantage of this tool is that it can accumulate millions of users in order to determine application performance under load. It supports many types of authentication can record HTTPS requests and play them back. It supports hybrid and native mobile applications.
Challenges During The Scalability Testing:
- Sometimes, the functional errors are not identified using the scalability testing.
- Ideally, scalability testing should be performed on the realistic scenarios or the production environment. But due to budget constraints, the client may not be able to provide the environment.
- A good knowledge of the system is required to analyze the result reports.
- Sometimes it is difficult to guess the stress to be applied.
Different Phases/Lifecycle of Scalability Testing:
Mainly there are four phases or stages of scalability testing-
#1) STRUCTURE VALIDATION STAGE– In this phase, mainly the transactions in the application is verified. In other words, the scalability of the application structure is verified.
#2) BENCHMARKING STAGE– At this phase, a set of metrics is developed or the benchmark is set up in order to test the scalability of the application.
#3) REGRESSION TESTING STAGE– This type of testing is performed if there is any change request arrives. The application should be stable enough and should give the same response even if any change is done. The application should be stable and should not degrade in scalability.
#4) FINE CONTROL STAGE-All the units of the application are integrated in order to test the complete scalability and workload capability of the software.
Why Is Scalability Testing Important?
- Customer Satisfaction:
Scalability testing is important before launching any product or application in the market because as the market for this application will grow, the number of users will increase. And customer satisfaction is considered as the highest priority. The application should be able to handle various load conditions (number of users) with time. It should not crash. The loading time should be less and users should be able to access the application in very less span of time (within seconds).So in order to maintain the performance, the scalability and performance testing should be done properly before handling the product or application to the customer.
- Improve product durability and life:
In the software development lifecycle, the maintenance phase plays a key role. In order to provide good quality of the product, scalability and performance testing must be performed properly. The report of which can guarantee the good durability and life.
Conclusion:
In order to deliver a quality product to the customer, it is very important to test its performance and the scalability. Hence scalability testing is carried out after the complete development of the product in order to ensure and guarantee the best performance and the durability. These days almost all the companies whether it is product based or service based are spreading their services and growth in the scalability testing. It is one of the most important phases of software development and testing. In order to carry out the scalability testing, skilled and experienced professionals are being hired and are provided the good pay scale as per the company standards.
A large number of cost-effective and open source tools are available in the market which makes the testing process very easy. Scalability and performance testing is very highly recommended and demanded by the customer. As the number of users will increase or decrease with time. So the website should be able to handle all types of load (heavy, medium and low) and should be responsive enough (loading time should be very less and constant). To ensure, whether the website is able to handle loads and to measure the scale, this kind of testing is highly recommended.