The advancement of modern technology has meant that consumers have far more choice than ever before when it comes to utilising applications and technology. As a result, consumers are becoming increasingly selective of which applications they use.

The ability for your application to scale has become an absolutely vital component of any new development. An inability to scale with increasing workload can damage the brand reputation of an organisation and see potential customers turn away very quickly. Essentially, if your application cannot scale effectively with increasing workload, the success of your organisation will be impacted dramatically.

The ability for your application to scale has become an absolutely vital component of any new technology. Applications that fail under increasing workload will face a rapid backlash from end users as they look to the competition for alternative solutions. An inability to scale with increasing workload can damage the brand reputation of an organisation and see potential customers turn away very quickly. Essentially, if your application cannot scale effectively with increasing workload, your organisation’s profit margins may be affected.

This article goes into detail about the basics of scalability and how testing assists in understanding application performance. Application testing is a pivotal part of measuring performance and can provide organisations with peace of mind that applications can handle growth and scalability with aplomb. Testpoint specialise in application performance management and load testing with its Vansah technology platform to ensure that your software can always perform at an optimum level[i].

 Scalability testing

From the outside, many organisations view scalability testing as an intimidating task. However, testing an application for its ability to scale is actually a lot more straightforward than you may think. Essentially testers place an application under stress and establish where the limit of scalability is reached. Once the limit has been determined, it is important to find out why the limit has been reached, so an application can handle an increased workload.

From the testers point of view there are a number of things that can affect an application’s ability to scale:

  • Application response time
  • Resource consumption
  • Latency
  • Memory and network use
  • The frequency of requests that can be processed at any one time (throughput)
  • System availability
  • Task performance time

Testing for scalability is trying to understand how to maximise the performance of an application for end users. Testing these factors collectively and measuring their performance against a high workload provide an insight to an application’s scalability.

Why is scalability crucial?

Scalability refers to the ability of an application to respond to quick fluctuations of load, traffic, data and end users. Importantly, scalability also refers to how an application can handle an increase in these different aspects simultaneously. Often, in times of increased workload there is an increase in end users, data and traffic that places load on an application.

Scalability testing measures how your application will gauge against these fluctuations. Each application is different and testing must be tailored to suit the particular requirements of the application and the users that it serves. It is vitally important that organisations put steps in place that give your application the ability to scale efficiently during these increases. Scalability testing replicates spikes in workload and allows testers to measure the performance of an application under a variety of situations.

SMART Scalability testing

In an ideal world an application will run seamlessly for every user under all conditions. However, this utopia is not always possible to achieve. Therefore, it is important when it comes to scalability that SMART goals are identified early to help measure performance and understand what scalability will look like for your application:

  • Specific – What are the most important aspects of scalability for your application? Is it speed, ability to handle simultaneous requests?
  • Measureable – Once you understand what is vital to your scalability place measures around them. For example, define how many requests your application can handle at any one time, or define an ideal loading time for your application.
  • Achievable – It is important to set achievable targets for your application, that reflect the size of your application.
  • Realistic – The needs of your application may be as simple to handle a certain number users at once. Make sure they are realistic.
  • Time Frame – The most important aspect of scalability testing is to ensure that the application is scalable within your defined parameters before you release it to your customers. Often with applications, you only get one chance to prove the worth of your produc

Incremental testing

Once you understand the parameters of testing for scalability, it is also vitally important to test incrementally. If you have a new application it is very difficult to ascertain how many users may be using your application simultaneously.  Incremental testing will help you safeguard your application from problems exacerbating if the workload increases exponentially. Incremental testing places the application under strain with different loads. A small load test should give an indication of how an application performs normally.

Increasing the load incrementally then gives an indication of how the application performs against this normal base measure. The first sign of issues will pave the way for scalability solutions. Often different amounts of duress create different scalability issues. Testing at all levels of loading will allow you to be across all possible problems you may encounter, so that your application can perform well during peak times.

Horizontal or Vertical Scaling?

It is important to understand the type of scalability you would like your application to achieve. There are two distinct ways to scale an application:

  • Horizontal Scaling – Horizontal scaling, or scaling out, is the process of broadening the capacity of an application by adding additional components. For example, if you extend your capacity by adding an additional server you are scaling horizontally. Traditionally scaling out is an excellent way to manage high workloads, but will require more maintenance as testers need to be across more working parts.
  • Vertical Scaling – Vertical scaling, or scaling up, is the process of increasing the capacity of existing components. For example, if you replace your existing server with a more modern version that can handle a much higher workload. Scaling up is easier to manage as there is less working parts, however depending on the size of your application and the workload it needs to manage, at some stage it will be necessary to scale out as well.

How Scalability testing assists in understanding performance

An application’s loading time can make or break its success. Consumers now expect an application to load within two seconds[ii]. Scalability testing throughout the application’s production lifecycle can help testers and developers create application architecture that can handle a growing workload.

All businesses want their organisations to grow and with that is an expectation that their applications will handle this growth. As the workloads increase, the complexity of scalability also increases. Testing at high workloads creates an understanding of how an application can operate under duress and allows testers and developers to scale components of the application, either horizontally or vertically, for optimum performance. Scalability testing allows testers to maximise performance and tailor capacity to handle demand[iii].

Create a Scalability Checklist

It is important to understand how the testing process can assist in understanding performance. By having a clearly defined scalability checklist it is possible to get the most out of your performance testing:

  1. Seek guidance from business leaders – Often your organisation will have targets for the application. Seek out what these targets are and set up your tests to handle this workload as a base figure.
  2. Understand your SMART standards – Each application is different and requires its own standards of scalability testing.
  3. Have consistent testing procedure – Consistency and repetition creates accuracy for scalability testing throughout the entire application development.
  4. Know what tools you need – Understand what testing tools are required to run scalability tests for your application.
  5. Planning your test scenarios – Do you know the testing range and loading strategy?
  6. Understand the testing environment – Is your scalability testing simulating the production environment under different loads?
  7. Create and corroborate testing scripts – Make sure your visual scripts align to your testing plan.
  8. Load testing scenarios – Now you know the criteria you need for scalability testing you can load the testing scenarios for different workload increments.
  9. Complete the load tests – Find out how the application performs under all situations.
  10. Review – Explore the results and examine where improvements can be made and generate reports and recommendations.

 Outsourcing your scalability testing

Creating an application is one thing. However, making an application scalable is an entirely different proposition. Improving and increasing scalability can soak up a lot of resources and can become a costly exercise without the right level of expertise. If your organisation is light on experience it is a great idea to outsource your scalability testing. This is particularly pertinent, when you are unsure about elements of scalability testing or you are unsure about the workload your application may have to handle.

Testpoint specialise in Scalability/Load testing to help you and your organisation create applications that can perform optimally all the time. Making your application scalable under increasing workload is crucial to maintain brand reputation and ensure that end users are satisfied with the speed and efficiency of your applications.

[i] Testpoint, Software Testing Services, https://www.testpoint.com.au/solutions-services/software-testing/

[ii] Romexsoft, ‘How to increase the scalability of a web application’, (2017), https://www.romexsoft.com/blog/improve-scalability/

[iii] Testpoint, ‘The Benefits of Performance Testing’, (2017), https://testpoint.com.au/the-benefits-of-performance-testing/

GET IN TOUCH

Related Post