Performance testing is done to understand how an application would behave under load. Its primary focus is on the user experience and on the effect a bug could have on the overall user satisfaction. QA specialists will focus on specific test scripts and their successful execution against a pre-defined benchmark. The gap however is QA professionals often take a partial look at a specific parts of the system rather than at the product as a whole. This gap needs to be addressed by switching from performance testing to Performance Engineering.
When the switch to Performance Engineering is made, the team will examine the entire system and the manner in which it parts interact with each other. The large-scale perspective will allow developers to identify the true issues early on. Their root causes will be easier to identify and a solution will be carried out on a general level, eliminating multiple issues at the same time.
PE as a function is carried out throughout different stages of the Software Development Life Cycle (SDLC) to meet the predefined performance criteria. It involves systematic practices, activities and techniques. Based on the requirement, Performance Engineering as a function defines the system performance standards. Performance Engineering is performed proactively during each phase of the SDLC, starting from the requirement finalization. Performance Engineering assures that the proposed solution will align with the set performance expectations from the very first stage of development. It will also avoid cases of scrapping and rewriting code at the end while the software is fully developed. This will save a lot of time and resources, also assuring to meet the deadlines.
This profession demands a good testing experience including:
- ability to analyze the system architecture and suggest approaches for better performance
- competence in using database monitoring and code profiling tools
- performing data creation and test design, statistical analysis and distribution
- experience in using deep dive tools (HP Diagnostics, CA Wily, Jprobe, etc.)
- experience in applying performance testing tools (NeoLoad, WebLOAD, Jmeter, Gatling, etc.)
- efficient communication, business knowledge, and management skills
- ability to monitor, tune, and forecast
Business Requirements Analysis is an important step in PE, that helps answer the following questions:
How critical is the application for the business and how does performance relate to it?
How many users must the application support at normal and peak periods?
What are the user locations and the application time frame usability?
What are the minimum and maximum acceptable response times for all business-critical transactions?
How do the user communities connect to the application?
What workloads are experienced in production?
How many transactions per second must the application be able to process?
What are the special factors about the application that should be considered in terms of security that will affect application performance?
If an organization is primarily focused on performance testing at this time, what would be the best approach to move to performance engineering? A few suggestions have been outlined below:
Make Performance Engineering a part of the early development process
Define the Project Scope and KPIs: What is the app attempting to achieve? How will this goal be accomplished? Developers need the answers to these questions right from the start.
Check the Resources: Are there enough full-time equivalent (FTEs) allocated to achieve the goal? Do you have all the tools necessary? Resource planning is critical to success.
Find the Courage to Change: The field of software development evolves rapidly. Finding the strength to adapt to the circumstances and new developments is critical to process optimization.
PT to PE is both a functional and a mindset change. Ensure the right stakeholder support is in place to bring about this change as this is a large change that has to happen in one go rather than in bits and pieces.