Software Performance Engineering is the systematic approach of constructing the software that meets the performance objectives. It is more related to build a tuned software application at the early stage of the software development life cycle whose performance satisfies all the non-functional requirement during performance testing phase. On the other hand, Software Performance Testing is the act of evaluating the software system for its performance and finding the bottlenecks in the system. It is more related to quality assurance.
Refer to the below definitions and figures to get more understanding:
Software Performance Testing: To test and certify the quality of the application with respect to the performance.
Software Performance Engineering: To plan and build a quality software without or minimum performance bottlenecks.
Performance engineering is driven by business requirements. It is a methodology to optimize the performance of the application from the earliest design stages. The involvement of a Performance Engineer at the initial phase reduces the last-minute application tuning activities. In short, the main aim of Performance Engineering is to provide better business value for the organization by discovering potential issues early in the development cycle to reduce the cost of fixing the bottlenecks in the later stage.
Need for Performance Engineering:
Performance Engineering reduces the need to rework and refactor the application in later development cycles and it results in an application that performs better precisely because the performance was an early consideration and an integral part of the design.
In the classical software development approach, performance testing is the last or second last phase before Go-Live. When the development and functional testing phases cross the provided timelines then the deadline pressure comes on PT. At that time, the project either skips performance testing or conducts PT in a hurry without the fixing of bottlenecks; result; performance issues in production. On the other hand, the project may need to pay fine if they conduct performance testing and bottleneck fixing by postponing the Go-Live date. Both cases break the trust of the client. What happens if somebody (Performance Engineer) focuses on design at the early stage so that minimum or no performance issue identified at the later stage without missing the timelines? To meet this expectation a “Software Performance Engineering” has to be involved from the day first of software development.
Nowadays, IT companies have started adopting performance engineering activities and saving the additional effort spent by Performance Tester at the later stage. It does not mean that Performance Testers have lost their significance. As stated before, performance testers are required to certify the performance of the application although it is already tuned. It is a high risk to deploy the application in the production environment without a quality check. Hence Performance Engineer and Performance Tester both should work together to make a quick and responsive application.
You may be interested:
2 thoughts on “What is Performance Engineering?”
Hi Team PerfMatrix,
I found this blog interesting and quite insightful. I hope this could help performance engineers to have an Understanding on JVM architecture.
KIndly, check the feasibility to pubish.
If we have approval from the author then we can publish on PerfMatrix.