What to automate? Which parts of the delivery process are good candidates? Which applications will benefit from automation? At first, those sound like silly questions. Automate all your repetitive processes. If you think that you'll do the same thing manually more than once, automate it. Why would you waste your creative potential and knowledge by doing things that are much better done by scripts? Yet, an average company does not adhere to that logic. Why is that? ...
How do you integrate tools to enable shift-left performance?
Selecting the right tools for a shift left performance testing process is important, but not as important as using them together in automated workflows. Testers should be using specialized commercial tools that enable them to create performance tests in an automated way. Developers can use similar tools to optimize their efforts or to create low-level scripts to drive automation and load.
The following tools will simplify maintenance, can be managed in a centralized way, and provide an easy-to-use UI to comprehend results.
A functional testing tool
Functional testing should already be a part of your continuous testing strategy. The tool you select for functional test automation should focus at both the API layer of the application (to simplify the test case execute action and maintenance) as well as the UI layer (for end-to-end and user experience testing). Functional testing tools are used to create baseline (re-use) execution paths, whether at the UI level or at the API level. These execution paths match up to user stories, so there will be a correlation between the performance test’s result and the user story that is impacted.
A performance testing tool
Specifically, you need a performance testing tool that can consume the functional testing artifacts and run them under load. These tools should have a variety of load control parameters such as number of virtual users or transactions over time. These tools should then report into a centralized dashboard for aggregating results.
A service virtualization tool
Service virtualization tools address the missing components of monolithic applications in the early stages of shift-left performance testing. One of the primary challenges you will face in early stage performance testing is a lack of supporting infrastructure, by parallel development efforts or third-party components. By establishing the baseline of those dependent systems and modeling them in virtual services, you can create similar application baseline conditions to production and laser focus on individual component performance during your test.
A continuous integration tool
Shift-left performance testing works best when it’s an automated process. If automation is deployed, "performance testing" means simply the review/maintenance of the automated performance tests, reducing time to execute tests over the long run since the process is automated and not manual. Your CI tooling should enable you to execute the performance tests as a function of code check in so that consistent performance tests can run nightly.
A centralized dashboard for aggregating results
A centralized dashboard is important because it enables users to understand the incremental impact of component performance tests by displaying trending information by project, component, API etc.
Your centralized dashboard should provide the ability to automate performance tests, define SLAs that turn the performance tests into pass/fail indicators, and see historical trends. Additionally, the reporting dashboard should provide details that link performance tests to their initial requirements so the business can properly prioritize issues that arise, as well as the high-level pass/fail view and, at the same time, every little detail, so you can determine the causes of failures after they have been detected.
The shift-left approach adds developers as dashboard users (in addition to managers and testers), so the dashboard has to have the low level details that the developers are looking for to effectively investigate and establish the causes for SLA failures or historic trends.
Consumers are burnt out with constant hot patches and performance optimization updates. They hunger for new features and functionality. Since performance testing is traditionally done at the end of the cycle, it inevitably impacts delivery deadlines, and as such it is looked at through a negative lens. By federating out the performance testing process and enabling agile teams to adopt a "shift left," iterative approach to performance testing, issues can be identified early. Not only does this ensure that technology decisions made can be easily assessed for performance degradation, but ultimately provides a more performant product overall by optimizing each individual area and laser focusing on performance.