Imagine you have just returned from long holidays and have taken loads of pictures to share on Facebook with friends. You have an excellent Wi-Fi connection, you start uploading pictures, but somehow the uploading has not completed. There has been performance degradation and the uploading part of website is behaving slowly. Conducting a ‘Performance Test’ of the application will allow us to identify the performance challenges that are occurring in the process of uploading your photos.

Let’s take a look at another case. Say you click the Facebook icon on your device, but the click fails to open Facebook and says too many users are logged in. As a user, you will be frustrated by Facebook’s inability to meet the demand for its user platform. Looking from the product owner’s perspective, they will wish not only that they had spent resources getting the functionality of the software tested, but also that they had made certain that it will work smoothly in production with the user load. The question is, when thousands of users start performing transactions on software simultaneously, how can anyone be certain it won’t crash? That is where Performance Testing, and more specifically a part of the process called Load Testing, comes in.

Based on the above two scenarios we are going to define the purpose of Performance Testing as being to check the software’s:

    • Speed – Determines whether the application responds quickly
    • Scalability – Determines maximum user load the software application can handle
    • Stability – Determines if the application is stable under varying loads

Some of the basic parameters that need to be monitored during the Performance Testing to meet the above three checks include:

    • Processor Usage
    • Memory Use
    • Response Time
    • Throughput
    • Hits Per Second
    • Transactions per Second

Load Testing, as a part of your Performance Testing, is validating how the application performs on a large-sized, concurrent input. If we want to find the upper limit of strain an application can handle, we perform a ‘Stress Test’.

The above picture breaks down the steps for conducting Performance Testing that need to be considered in the business forecast for the software application. The steps include identifying the test environment for a Performance Test, getting to know the performance criteria, planning and designing the Performance Test strategy, and then configuring the test environment to implement and execute these tests. At the end, there is analysis of performance results, fine-tuning, and re-runs.
Essential to Performance Testing is that you keep an on-going analysis of where the performance measures are needed to validate the software, and to keep track of where the Performance Testing requirements fit in the business forecast. This approach towards Performance Testing allows us to understand the system architecture and business processes in detail, and to identify the areas that need validations with respect to performance in order to integrate it as a key piece of the process of a successful application release.

Shumail joined PLATO last summer and has been mostly doing test automation work with BC Ferries and TransLink, but his primary focus has been performance testing and providing training and support to team members on performance testing. A few months back, Shumail even delivered a PLATO Academy session on Gatling.