Dozen things that contribute to a "Perfect Performance Test Engineer"
With contributions from Sundar Rajan and Ragavan G
Performance Testing is still a niche area despite the fact that it has been in existence for more than a decade. The challenge of performance testing Vs traditional functional testing is that it is far more complex and needs one to be multi-skilled to find problems/issues/defects. While we have models to predict the functional testing defects and I am yet to come across one for performance testing. In the last 4 months, I have come across several RFP discussions with client facing groups and customers, and what they have in common - demand for performance test engineer. Software churned out for different verticals have performance engineering problems and clients are willing to spend on this problem to rectify the same. While knowledge of any performance testing tool from HP or IBM is good, but they are not sufficient to find the hard and hidden defects. The ability to find defects in performance testing projects is really a challenge. So, what does make a regular functional tester to get into Performance test engineer? We all know that anything is possible in IT industry and that skills can be acquired if one has the positive attitude and hunger to learn. So, based on my experience and understanding of this space, I have tried to lay down the generic guidelines which I believe will help make any tester become a "Perfect Performance Test Engineer". This write up is also an outcome of my series of discussions with colleagues of mine, Sundar Rajan and Ragavan G, who have 17 years of Performance Testing experience between them. Do let me know what you think of the pointers.
1. Customer Business Orientation: It is important for the Performance Test Engineer to understand the Business impact due to Performance Bottlenecks. This needs a Performance Test Engineer to have the domain knowledge, application knowledge and the business of the customer, end-users and the impact of the customer in the market space in addition to technical capabilities
2. Architecture: Performance testing is not about a tool. As a tester, knowledge of the tool is important, but not sufficient. There is a strong need to understand the architecture of the systems/application, in terms of the components, hardware and the software. The knowledge of database servers, web-servers, application servers, load balancer and the data flow models are also important
3. Scripting knowledge: The knowledge of any scripting can be of great help. This could be C, C++, Java or any other programming knowledge. This experience helps the tester to write efficient and smart code.
4. Database knowledge: The basic requirement is SQL concepts. In today's complex applications, we are seeing trillions of data records and updates. The data is huge and this can sure help a performance tester analyze the data better. Not only that, it will also help to prepare the test data needed for Performance Testing. Advanced SQL skill sets will help for detailed analysis of performance bottlenecks
5. Monitoring tools: Monitoring the servers is important to understand the environmental bottleneck. There are several market available tools and in-house tools for monitoring. The ability to use and customize monitoring tools help in identifying the server side bottlenecks in performance testing. It is recommended for a Performance Tester to use/customize these tools for multiple OS/platforms
6. Operating Systems knowledge: Minimum knowledge of different OS is surely an added advantage.
7. Learning ability: A Performance Test Engineer need to be a quick learner. Tools, Platforms, Servers keep changing and it is important for them to be up to date all the time.
8. Analytical ability: It is a common skill every QA person should have. This skill will be helpful for data analysis, log analysis and metrics analysis as part of Performance bottleneck analysis. Analysis done in the correct direction will pin-point the bottleneck quickly and accurately.
9. Logical ability: This goes without saying for IT professionals
10. Multitasking ability: Often a performance tester is required to multitask- execute load test, monitor server health/performance counters, analyze errors/issues, coordinate with web/DB admin etc., and all these activities are to be carried out simultaneously during any performance process.
11. Proactive attitude/Problem solving/Decision making skills: A performance tester should be able to foresee situations. Whether it is analyzing requirements, planning for the test, designing test strategy or troubleshooting issues- being proactive is a must-have trait for a performance tester. Any performance testing project would have several challenges/issues during the course of testing. A performance tester should possess good problem solving and decision making skills- after all the go live of any project requires blessing of a performance tester.
12. Communication ability: Last but not the least is the ability to convert the analysis and information, into a meaningful conversation or reports. This skill is essential for all professionals. Also there needs to be a lot of discussion with the customer to help them articulate their problem statement and convert that into a possible solution.