Non-functional areas of an application have been steadily growing in importance. While an application’s functionality is very important, users have equally started to value non-functional areas, such as performance, usability, accessibility, UX and UI. The focus on performance is a niche area in which test teams have been specializing and includes the application’s responsiveness, loading, scaling and capacity handling, tuning, and performance against the competition.
Users have started prioritizing non-functional areas of quality and are ready to move on to newer options if an application’s performance does not meet their needs. All of this has necessitated a very formal and focused performance test strategy among test teams, regardless of the short testing cycles they have. Results from preliminary performance tests are used to not only gauge an application’s release readiness but also to create a market expectation before users get to experience the application.
What is Performance Testing?
Performance testing entails using software tools to simulate how an application runs under specific circumstances. Any software application should pass through functional and non-functional testing to ensure it satisfies business requirements and performance standards. Functional testing covers most of the functionalities and includes another testing Non-functional testing, or performance testing, focuses on speed, stability, reliability, load capacity, and how your application’s performance is under stress.
Why do we need Performance Testing?
- A software application’s performance like its response time, reliability, resource usage and scalability do matter. The goal of Performance Testing is not to find bugs but to eliminate performance bottlenecks.
- Performance testing will determine whether their software meets speed, scalability, and stability requirements under expected workloads. Applications sent to the market with deficient performance metrics due to non-existent or poor performance testing are likely to gain a bad reputation and fail to meet expected sales goals.
Steps for Performance Testing
In Atomic Scope, we are using Postman collection and Visual Studio Tools for Performance Testing. We will use our scenarios as data for testing. We will follow the below steps for doing performance testing
- Identify the testing environment.
- Identify performance metrics.
- Plan and design performance tests.
- Configure the test environment.
- Implement your test design.
- Execute tests.
- Analyse, report, retest.
Why do we need Performance Testing in Atomic Scope?
In Atomic Scope, we have a huge message flow per second. So, we were facing issues while data transactions. Major issues reported by customers were timeout and Deadlock issues. We have analyzed and identified the root cause. After rectifying the issue, we have decided to do the performance testing with main strategies.
Performance testing is the key factor to ensure the stability and performance of the application. For testing, we have followed the performance testing strategies.
Due to our analysis, we have identified the customer environment and Database. So, we can create that environment as per the client setup. We have kept metrics as per the customer message volume.
After setting up the environment, we will execute the different scenarios as test data.
- First, we will execute normal sample scenarios like messaging only, single orchestration from the Postman collection or Visual studio. We used to populate the data continuously like a normal time gap like 5 seconds (Thread). So, we can ensure that handle the expected load of 1 lakh messages over an extended period.
- Secondly, we will increase the load with a different time gap (10 seconds, 20 seconds etc). So, we can determine the application’s effectiveness in “scaling up” to support an increase in user load. It helps plan capacity addition to your software system.
- The next step will increase load from 1 lakh to 5 lakhs data through the postman collection and visual studio simultaneously. We can see the application’s ability to perform under anticipated user loads. The objective is to identify performance bottlenecks before the software application goes live.
- Finally, we will monitor the database and the overall application’s behaviour is monitored. The objective is to check software application’s performance under varying database volumes
We have tested from normal sample scenarios to tedious one with 1 lakh messages to 5 lakhs messages.
Checklist for Performance Testing
- Verify response time is not more than 4 secs when 1000 users access the website simultaneously.
- Verify response time of the Application Under Load is within an acceptable range when the network connectivity is slow.
- Check the maximum number of users that the application can handle before it crashes.
- Verify the response time of the application under low, normal, moderate, and heavy load conditions.
The following stored procedures are used for purging.
- Purge Tracking Data – Purge_TrackingData
Each run the Purge_TrackingData stored procedure deletes the top 10000 records of your tracked data from the tables Tracking_MainActivity, Tracking_StageActivity,
Tracking_MessageArchive, Tracking_Exception and the dynamic tracking properties table.
- Purge Monitoring Alert History -Purge_Monitoring_AlertHistory
The Purge_Monitoring_AlertHistory stored procedure deletes the top 10000 records of your tracked data from Monitoring_AlertHistory table each run.
- Purge History – Purge_PurgeHistory
The Purge_Log stored procedure deletes the top 10000 records of your purge log data each time and insert purging execution details in Purge_History table.
Benefits of Performance Testing
Performance testing is essential for implementing quality standards as well as SLAs. It is repeatable and quantifiable to practically establish user experience and business standards for a software application. The following are some benefits of benchmark testing:
- Helps in performance analysis of a software application with competitors.
- Maintains user experience and availability.
- Ensures that all compliance and SLAs are met.
- It helps to evaluate third-party vendors’ evaluation.
- Ensure best practices are followed with measurable results
In Atomic Scope, because of performance testing, we have improved the purging. In Atomic Scope, Purging is done by SQL Server Stored Procedures. Purging will happen every 15 minutes once and it will delete a maximum of 10000 records each time. We can view the purge history in UI itself with execution time. It will help the user to understand the data availability and performance. Also, we can see the health check status info if purging has stopped or facing any issue. These are the improvements in application due to the performance testing.
In Software Engineering, Performance testing is necessary before marketing any software product. It ensures customer satisfaction & protects an investor’s investment against product failure. Costs of performance testing are usually more than made up for with improved customer satisfaction, loyalty, and retention.