Friday, June 28, 2013

What is performance engineering and why?



In the last decade, performance testing and related stuff are working as the sub functions and maybe they are not that much considered as the main activities in the life cycle of the software product. But due to factors such as increasing of the cyber users, rapid development of the different technologies and modern comparative business goals,  software product venders had to change their mind set towards performance testing and engineering aspects. If they couldn't predict and change their product according to the end user needs and if they couldn't retain the regular users then definitely that business or industry will go down and die out soon.

Then, after the industry identifies the importance of the Performance optimization, performance testing and tuning is came in to the screen with different strategies. First, performance testing methodology was introduced to the product development. In this approach software product is tested by a dedicated performance testing resource and tuned by the help of development team in the later part of the SDLC or after product is 80-90% completed.  So this was a collaborative approach among the team members to get the maximum out of it. But there is a hidden failure in this approach.

As I have mentioned in the last paragraph, all the testing mechanisms, strategies were fired after the major features of the product are almost completed or very next to the alpha or beta releases. But one can argue that if they can find any performance related issues before go live would be a great achievement since the cost of the production site issues were reduced. Yes, true but product owners and developers/QAs cannot concentrate only at the external failures (production issues) thus we have to give the equal attention for the internal failures since both items are contribute to reduce the Cost of Quality of a software product.

Now, all the parties come to the ultimate situation where they need to change their mind set and strategies they have practiced earlier to find the performance bottlenecks. So this is the time that the Performance Engineering attribute or mechanism was introduced and begin to spread the horizon. The main advantage of this engineering practice was the knowledge and the confidence that the team can generate on top of the product which going to release. So lets' find out how the industry gonna build this or how they adapted to this practice.     

Nowadays, agile (scrum) practices are very popular among the software people instead of the waterfall method. Whatever the software development methodology used, practicing of the performance engineering aspects are not that much easy since its required thorough knowledge regarding what and when we need to do things which aligned with the SDLC. For an example good understanding of the current technologies, knowledge of the DB entities, network related awareness, testing tools expertise, knowledge of the performance testing attributes, testing types, capacity planning and workload modeling etc among them. These practices are more sharpen with the different project experience. So in this approach, we start our performance testing engagement from the sprint 0 or requirement analysis phase. In this early phases, performance test engineers can go for the  requirement review and designing meetings with the development team. Likewise performance test team members or specialist can gather, test and examine the results and help to resolve the performance bottlenecks throughout the each sprint or life cycle phase. In other words, performance related issues of the back end and front end  of the Application Under Test (AUT) can be identified as early as possible and not the final stages of the software product.   

Following Graph will depict the core and performance engineering phases:



Finally, by using this methodology or approach, we can find both external and internal performance related issue early to reduce the 'Cost of Quality' and optimize the customer solution to gain the ultimate hope of 'Confidence' to say 'Our Product is OK for go live'.