Performance engineering is transforming software development and the job descriptions of all those engaged in it, ensuring consistent production performance results.
In my first article in this series of two, I took an in-depth look at the difference between performance testing and performance engineering. One of the important things to note is that performance engineering delivers end-to-end system optimisation through a continuous testing and monitoring process.
This shifts-left (as per my explanation in my first article) performance and load testing into the development process, which is unlike traditional performance testing, where this takes place after functional testing is stabilised and the code is released.
Once the latter happens, performance engineering tracks the app in production by tapping into application performance monitoring tools.
The performance stakeholder team
Performance engineering enables collaboration among project stakeholders − from business analysts to developers.
The aim of this is to maintain high performance levels that enhance the customer’s experience. Keeping up with the pace of business and managing end-to-end performance makes everyone − not just QA/performance engineers − guardians of product performance. This is how this is achieved:
Test centre of excellence
The testing centre of excellence serves as the trusted testing advisor and custodian of best practices. The centre supports different business units, different testing methods (such as DevOps and Agile) and has the flexibility to recommend performance testing and tools, as needed.
To build better testing models and improve test quality, it acts as the single point of consolidation, through the reuse of test data that has been generated and collected across multiple business units over time.
The performance engineer provides a holistic view of all code in development to ensure performance testing criteria is comprehensive and factors all distinct pieces of code in development. The performance engineer is the primary user of performance testing tools and has a high degree of expertise in scripting, designing, running and analysing test results.
Performance engineering calls for end-to-end integration and collaboration from right-to-left and left-to-right, along with real-time insights and analytics.
Performance engineering brings the engineer to the early phase of development where they can provide the performance metrics and scenarios required for code to be considered ready for release.
Early involvement means the engineer can ensure the solution satisfies performance expectations which must be set out at the beginning of development. They also confirm the architecture is consistent throughout development.
Developers are experts at coding but often light in both functional and performance testing skills.
They work in their integrated development environment and tend to use their preferred tools with little inclination towards learning new ones.
Performance engineering shifts-left performance testing, which brings it into the software developer’s area of responsibility.
With input from the performance engineer, software developers can run performance testing while writing code. The developer doesn’t release this code until it passes performance testing criteria.
The DevTester doesn’t exist in classic performance testing since there are clearly defined distinctions between software developers and performance engineers. With the latter, the DevTester emerges as a stakeholder that connects performance engineering and development teams.
They bridge the gap by having solid coding and testing skills, though not quite at the same level of expertise as the developer and the performance engineer.
They can run tests quickly and have much greater flexibility than developers in using different tools as needed.
Business analysts and application engineers
According to Forbes, the best business analysts are engineers. This Forbes report makes considerable sense and goes on to note that the best software engineers understand how to deliver value not only through programming but through asking the right questions and framing functionality within the context of the business.
I certainly agree with the statement that engineers need to understand the strategic goals of their organisations and anticipate how users will interact with the application.
As Forbes highlights, ultimately, they must uncover what will provide the most value to the business and its clients.
By shifting-right the testing, performance engineering brings the business analysts on board with the application engineers.
This guarantees that business and application performance requirements − which define the quality of the user experience − are incorporated into the performance criteria. These two roles monitor the app in production to guarantee unparalleled application performance, always.
The right performance engineering partner?
This field of engineering is transforming the software development landscape, as well as the job descriptions of all who are engaged in it.
With an increasing number of roles now involved, the need for tools and technology to streamline processes is greater than ever before. Performance engineering calls for end-to-end integration and collaboration from right-to-left and left-to-right, along with real-time insights and analytics.
Historically, performance testing did not begin until functional testing was completed and did not identify defects and root causes until the end of performance testing.
Good performance engineering entails continuous end-to-end measurement and analysis of defects to pinpoint root causes of problems in real-time, even before the performance test ends.
Real-time analytics help the performance engineer to provide feedback to the developer speedily, to initiate troubleshooting early in the development process. Synthetic monitoring and real user monitoring in production provide insights into performance issues that have escaped testing and must be fixed in the next release.
What you need to factor into the performance engineering partnership criteria is the capture and analysis of end-user sentiment, from a performance perspective, as this provides more specific feedback to developers, which in turn optimises applications for better performance.