Table of Contents
- What is Performance Testing and its significance
- Performance Testing Vs Performance Engineering
- When to start?
What is Performance Testing and its significance
Performance Testing is a software testing practice to evaluate a system or applications performance in terms of its speed, stability, scalability and reliability. It’s a part of non-functional testing ensuring that application performs at its best in every situation. There are multiple factors in a distributed application which decides performance of an application. Below mentioned are few of them.
- Server-side metrics – Server Response time
- Server -side resource utilizations – CPU, Memory, Disk.
- Network latencies
- Client-side performance metrics – Transaction Response Time, Throughput, Failures and Error rates
- Front end Metrics – Page load time
In this modern era, we expect everything to be operating in lightning speed. Hence it is a must rather than a luxury in having performance engineering and testing while developing a solution. Imagine use case of an ecommerce website. You plan to purchase a product and while you are searching for the product it is taking a long time to fetch your product search results, would you prefer to continue shopping using this website? . Business face a huge loss if they ignore the need of it.
Performance Testing Vs Performance Engineering
Performance engineering is a discipline of designing, developing, testing and tuning an application in creating a high performing and scalable application while performance testing is a subset of performance engineering wherein the practices of testing an application by mimicking the user load as expected in production is conducted and after evaluating execution results, performance optimizations are applied.
Now looking into performance engineering the efforts starts from application design phase itself. Appropriate measures are taken care in the beginning of a software development life cycle to deliver a high performance and scalable solution. Performance engineering phase also gets involved in tuning and optimizing the developed solutions based on the test execution results.
Performance engineering scope also includes in the process of resource capacity planning which fulfills the need of a delivering the need of a highly scalable application which withstands with growing business needs.
When to start?
Organizations follow a practice of staring performance effort during or after system integration test is completed. But there are many flaws in starting performance effort in later stages of a testing life cycle
- Less time for the developers to make code changes in optimizing performance.
- Technical architect or solution architects have to make cost and time intensive modifications in system design sometimes from the scratch
- Less time for performance test engineer to understand the application architecture and build an effective Test strategy.
- Poor capacity planning
As you can see there are many challenges while involving performance testing effort in a last-minute hurry. Hence to overcome these challenges its always ideal in involving performance engineering efforts in the design phase of a release cycle. By involving performance engineering in design phase, we gain a lot of benefits like
- Developers get ample amount of time in optimizing code for a higher performance
- System designing based on test execution results which makes the system architecture scalable, robust and stable with higher resilience.
- Performance engineer can include more scenarios and test strategies in testing the application
- We can effectively do capacity planning in terms of resource scalability, cost optimizations etc.
Awesome post.