Organisations are now conducting shift left performance testing. It is cost-effective as identifying the potential performance issues at the early stages. This blog article is not about shift-left performance testing, rather it is about how component performance testing & continuous monitoring assists in shift left performance testing.
Component Performance Testing
A component is the lowest unit of an application. An application can be thought of as a group of components. As shift-left, first conduct individual component performance testing, then conduct a group of components performance testing as integrated and later as a group of all components for fully integrated application performance testing. Both the application and environment should be functionally stable for all these executions – component testing or group of components testing or even fully integrated performance testing. In traditional performance testing, only fully integrated application performance testing is executed in the last stages of SDLC- software development life cycle.
Bottom up approach
Component testing can be thought of as a bottom-up level approach. Executing & observing the component level performance testing first as a bottom approach. Then group of components performance testing and later fully integrated performance testing as up approach. Performance testing can be conducted just after unit testing and component functional testing.
Overall, component performance testing is a continuous approach. This can be conducted certainly as an automated manner as part of CI/CD (Continuous Integration/Continuous Development) process after each build. It will ensure not only early performance feedback but also build failure & performance trends.
How to identify
Early component level performance testing provides early feedback to developers. This is in line with shift left performance testing. However, testing too many components for performance will delay the overall release timelines. Understanding and identifying the components which will require performance testing is very important. Your can identify components for early performance testing based on the high business criticality or high business user count.
Performance testing components are conducted individually, independently & at early stages. It is very common that some functionalities may be dependent on other components which may not developed at the time of that testing. Service virtualisation or stubbing or drivers can be used on those cases to start component testing at early stages of SDLC.
What to verify
For performance testing of components, observing response time or transaction per seconds or scalability is required. Executing component level concurrency test with gradually increasing user-load assist to understand at what point of time component is failing. Conducting component level throughput testing with high number of requests & low volume user-load provides component level performance. Overall, the objective is to provide the early performance feedback to developers and optimise the component level performance, if required. This should be an iterative and continuous process till expected performance parameters or SLAs (service level agreements) are met.
Having a finalised component level SLA is absolutely required before performance testing for easy comparison by developers. End-user response time is the most critical factor as end-users are the ones who will use the application. Breaking this total end-user SLA response time into individual component level response time assists developers or application owners or stakeholders. The objective is to provide improved end-user experiences in terms of performance parameters like speed, scalability, stability, spike, size.
Continuous Performance Monitoring
Continuous performance monitoring is very important in performance testing. It is not possible to conduct each component test due to strict release timelines. As an alternate, noncritical performance testing can be executed as a continuous process till the application is fully ready. Otherwise, verifying those component performance via continuous performance monitoring will assist. Continuous performance monitoring monitors each components thoroughly, end to end and identifies if any low critical components required to be part of early component performance testing.
Continuous monitoring, reporting dashboards, trending charts assist to understand first individual level component performance in detail. Later, it helps to understand the performance of group of components, as and when these components are added. Lastly, continuous monitoring provides fully integrated performance testing observations for all the components and ensure end-user satisfaction.
Component performance Testing with continuous monitoring assists in shift left performance testing to overall achieve high performance application.