Continuous Regression Performance Testing for enduring in Market

By Arun Dutta

Now a day, high performance for an application is no matter a lavish but a basic need for the business. Gone are the days when we need to apprehend customer/stakeholders about the benefits of performance testing. Now, organizations are concerned about the increasing rate of change in the market where they not only need to compete but also familiarize with the speed of changes to adapt time-to-market pressures. So, performance testing now becomes very crucial before the application goes live no matter whether it’s major or minor releases or sprint for agile based projects. There is no doubt that starting from requirement gathering to production analysis, application performance needs to be given as utter importance.

Before discussing on continuous regression performance testing, lets discuss why we need performance testing in SDLC.

  • Performance test results provide realistic prediction in advance. It reduces risk and gives confidence before going live.
  • Pre-production performance test results assist in finding performance bottlenecks and resolve those bottlenecks before going to production.
  • Yes, it saves cost in both ways i.e. minimize effort in rework, tuning and reduce cost of hardware.
  • Performance benchmarking can be used for future reference.
  • It supports business continuity.
  • Performance test results assist in Capacity planning.
  • Lot of intangible benefits like improved brand identity, customer satisfactions etc.

Normally, performance testing happens just before production for any major release and don’t have much time despite having performance issues as going live is more important. On the other hand in today’s world, everyday there are application changes required to become competitive in the market. So, the reality is performance testing window is always short and there are many releases or sprints across the year and we also need to ensure proper performance before application goes in production. And again, performance issues finding at the end of SDLC phases are always huge costlier. In a nutshell, early performance testing in SDLC phases covers all of the above concerns and it is like the sooner problems get identified, the sooner it can be fixed.

Performance testing team needs to test the application quickly, repetitively and closely working with the application team to meet the application’s speed, scalability and stability. It is time to make continuous regression performance testing, a mandatory for all projects since early phases of SDLC, to avoid big loss and reduce overall cost. Continuous regression performance testing is an ongoing activity and is not limited to preproduction activity rather continues till post deployment. This is absolutely required for leveraging all the above stated benefits. Post deployment, we need to constantly:

  • Monitor E2E infrastructure to find any abnormalities- Segmented metrics provide information for increasing performance and capacity planning of infrastructure.
  • Analyze Production log metrics for future workload modelling and identifying updated business critical scenarios.

Now, we are in the era of agile methodologies, continuous delivery, DevOps etc. where the entire process of releasing software is quickly done. On the other side, end-user expectation is also getting increased day by day. There are multiple studies confirm that insufficient performance testing leads to impact revenue, unsatisfied end-users leaves the application and visit competitor site, can also influence others not to trust the application and can make huge business impacts. Few businesses ignore the performance testing activity due to its associative cost and don’t calculate the business benefits which can lead to business disaster at the end. Performance testing is an essential activity in all software development projects and not restricted with only agile. From initial planning to production analysis, application performance drives the development of better software iterations and releases.

Continuous regression performance testing always gives confidence ahead of deployment. It assures end-users for new features and eliminates the potential risk of arising new performance issues. We need to ensure the followings for making this as full success and establish continuous regression performance testing as an ongoing process.

  • Early performance testing in SDLC phases- a mandatory. Objective is to identify performance issues as early as possible in the life cycle and ensure that the application team gets highest opportunity to fix them prior to release.
  • Performance environment is exactly similar with Production in terms of DB size, hardware and configuration details etc. Normally an extrapolation of performance test results influences the big decision due to performance environment is not as scalable as production environment. If it is exactly similar then no extrapolation of results- resulting no risk.
  • Data size for performance testing environment needs to be refreshed from production with ensuring security features. It should be 100% equivalent like Production for getting accurate and realistic results.
  • Think about the other real life conditions like network latency, bandwidth etc. and try to add those in performance testing for superior prediction. Similarly, look for a solution that can record from any browser or mobile device and simulate those back during the test execution.
  • Configure load generator/injector machines such a way that it simulates geographic location end-user behavior, outside firewall end-users- single/multiple cloud providers etc.
  • Update business critical test case scenarios regularly, production log metrics data needs to be explored continuously later post-deployment.
  • Ensuring performance testing can be quickly conducted for effective turnaround time.
  • Iterative round of executions will ensure the performance requirements and SLAs. Remember to change one parameter at a time to understand the results.
  • Continuously track application’s performance history, analyze and tune.
  • Thinking about extreme condition in terms of load, transaction frequency, server anomalies etc. (Fail over).
  • Discuss about the Performance SLAs at the time of requirement gathering and establish the benchmark and always compare to determine.
  • Closely working with the application team to understand the anticipated changes well in advance. Collaboration ensures the true continuous regression application performance testing.