A well-performing application allows the end user to carry out a given task without experiencing a delay or irritation. This testing is the subset of performance engineering, which is focused on addressing performance issues in the design and architecture of software product.
Why do we need Performance Testing?
These are performance issues.
- 50% of the unhappy customers will switch to competitors
- 49% of the ecommerce customers expect pages to load in 2 seconds or less
- 35% of the unhappy customer will carry negative perception with the brand
- 22% will never return to your site
FASTER PAGES = BETTER BUSINESS
Common Challenges of Performance Testing
In software testing, application’s speed and response time is one of the important attribute. The performance testing uncovers the performance blockages & hiccups to uphold interest and attention of user.
Here is the list of most common performance problems observed in any web/mobile application:
- Poor response time
- Extended Loading time
- Loading Bottleneck
- Poor scalability
- Software configuration issues for the Web server,
load balancers, databases etc.
- Disk usage
- Operating System limitations
- Poor network configuration
- Memory utilization
- CPU utilization
- Insufficient hardware resources
Top Performance Testing Challenges
Performance bottle necks are the biggest hindrance in an application’s success.
Below are few challenges faced while initiating a performance testing process
- Selecting the environment and the appropriate performance testing tool
- Offering complete performance test coverage
- Specifying non-functional requirement checklist
- Specific functionality requirements to be cover with respect to performance testing like
- Features and modules
- Types of test data
- Algorithms and action flows
- Analysing the performance test results
A mature Performance test setup always meets the challenges posed by the scenarios for the application or the software.
Performance Testing Cycle
Performance Testing Types
Load testing is a type in which the application is tested for its response on normal and peak usage. Performance of an application is checked with respect to its response to the maximum user requests and its ability to respond consistently within an accepted tolerance on different user loads.
- What is the max load that the web/mobile application is able to withstand before the application starts to behave unpredictably?
- How much data the application database is able to handle before system slows down or crashes?
- Are there any network related issues to be addressed?
Stress testing is used to find the ways with which the web/mobile app can be broken. This test also provides the range of maximum load the app can withstand.
In general, stress testing has an incremental approach where the load is increased gradually on the application. The test is initiated with a load for which the application has already been tested. Then, the load is increased slowly to put the application under stress. The point at which the servers stop responding to the input requests is considered the breaking point of the application.
During stress testing, the functionality of the application is tested under a heavy load. On the back-end, the functionality might be running complex queries, handle huge data, etc.
- What is the max load a system at which the system breaks down?
- What is the impact of system break down?
- Is the system able to recover after crash?
- In how many ways system can break and what are the weak nodes while handling the unexpected load?
Volume testing ensures that the performance of the application will not be affected by the volume of data handled by the application. In order to execute a Volume Test, a huge volume of data is entered into the database. This test can be incremental or a steady test. In the incremental test, volume of data is increased gradually.
Generally, with the application usage, the database size grows, and it is necessary to test the application against a heavy database. A good example of this could be a website of a new school or a college having small amounts of data to store initially, but after 5-10 years, the data stores in the database of the website is much more.
The most common recommendation of this test is the tuning of DB queries which access the database for data. In some cases, the response of DB queries is high for a big database, so it needs to be rewritten in a different way or the index, joints etc need to be included.
Is the web/mobile application capable of meeting the future business volume under both normal and peak load conditions?
Capacity testing is usually done for future prospects. Capacity testing addresses the following:
- Will the application be able to support the future load?
- Is the environment capable of standing for the upcoming increased load?
- What are the additional resources required to make the environment capable enough?
Capacity testing is used to determine how many users and/or transactions a given web application will support and still meet performance. During this testing, resources such as processor capacity, network bandwidth, memory usage, disk capacity, etc. are considered and altered to meet the goal.
Online Banking is a perfect example of where capacity testing could play a major role.
Reliability Testing or Recovery Testing – is to verify whether or not the application is able to return back to its normal state after a failure or abnormal behavior and how long does it take for it to do so (in other words, time estimation).
If an online trading site experiences a failure where the users are not able to buy/sell shares at a certain point of the day (peak hours) but are able to do so after an hour or two, we can say the application is reliable or recovered from the abnormal behavior.
In addition to the above sub-forms of performance testing, there are other fundamental tests that are prominent:
- How is the new version of the application performing when compared to previous ones?
- Is any performance degradation observed in any area in the new version?
- What area should developers focus on in order to address performance issues in the new version of the application?
- Determines which application component is responsible for the performance issue.
- Determines whether the component is working as expected and component optimization has been done.
- Determines whether the application will be able to perform well enough over a certain period of time.
- Looks for any potential reasons that could slow-down the system.
- Uses a third party tool and/or vendor integration and to determine if there is any possibility that the interaction makes the application slower.
Performance Testing Tool Evaluation
Identifying the perfect Performance Testing tool is having a lot of constraints to measure up.
- Budget & Licensing costs
- Technology and Platform
- Hardware requirements
- Performance Protocols
- Tool training and support
- Browser and OS compatibility
- Result generation options
Top Performance Testing Tools
There are a million of computer set up with a million different credentials when all of them could login at once. What will happen?
How will you monitor the performance?
The best way this situation can be handled is through – virtual user (VU). For all our tests, the VU behaves just the way a real user would.
For the creation of as many VUs as you would require and to simulate real time conditions, performance testing tools are employed. Not only that, Performance testing also tests for the peak load usage, breakdown point, long term usage, etc.
To enable all with limited resources fast and to obtain reliable results, tools are often used for this process. There are a variety of tools available in the market- licensed, free wares and open sourced.
Our experience, with working on a slew of performance testing projects for our global clients, reveals that where performance is concerned, no size is too small. Performance testing, which includes an array of testing processes for load, stress and endurance, is a must:
- To recognize possible bottlenecks of your application
- To identify how many users can access your application in parallel without impacting performance
- To analyze your application’s behavior under load
- To assess response times of your app or website
- To find out how updates affect your app’s behavior
Indium’s performance and functional testing practice help businesses prepare for the potential risks better to ensure smooth delivery of their services. Scalability, stability and robustness are becoming critical, as also speed of delivery. Integrate performance testing with development to catch bugs early and ensure smooth user experience with your app.