Monday, March 31, 2014

Performance Engineering Responsibilities and Career Model



This time my focus goes to the performance testing ultimate work force which we can call as a Performance Testing Team and their growth.

When doing performance testing as a separate service, we need to build a unique team to deliver the service with quality results. This is not an easy task because all the team members should work as a team and need to gather a lot of knowledge regarding performance engineering and optimization principles.  According to my experience, application performance assessment is very broad area when compared with other services. Because we need to know End to End cycle of the application and its architecture to give a good assessment. We need to know the DB technologies, Network related frameworks, Product architecture and the infrastructure of that system.

Altogether, this is not just a nonfunctional testing type, but an engineering discipline which needs a lot of technical expertise + performance testing specific knowledge. Hence, the Performance Test Team should have a very good and clear career path to avoid the issues related to motivation and retention in performance engineering track. So in the following area I have mentioned a career model which created using several industry models that suitable to our standards.

In this model, I have defined 3 major levels and the information is as follows:

1.    Software Performance Engineer (First he/she should come as Associate > Engineer > Senior Engineer)

Responsibilities:

·         Performs identified performance tests like load, stress, endurance etc.
·         Understands the available workflows for test script generation
·         Create workload models by working with development team.
·         Executes test scripts with the required workload at various points.
·         Monitors and captures performance statistics of various system components like servers, databases, etc.
·         Collects defects and monitor.
·         Prepare required reports

Skills:

·         Need to have a BSc degree in Computer science or information Technology
·         Good communication skills
·         A performance tester needs to have the good knowledge of OOP principles
·         Need to have good analytical and problem solving skills, a conceptual understanding of the network, operating systems, web servers & database architecture, etc.  
·         A performance test engineer needs to have the very good knowledge of at least one standard industry performance testing tool.



2.    Software Performance Lead (First he/she should come as Associate > Lead > Senior Lead)

Responsibilities:

·         Helps to define performance testing objectives and strategy.
·         Designing of the test script and define the available workflows for test script generation
·         Monitor test scripts with the required workload at various points.
·         Verify performance statistics of various system components like servers, databases, etc.
·         Customizes scripts for simulating business transactions
·         Work with testing team to develop performance test plans and cases.
·         Conduct job trainings and provide assistance to Junior Test Engineers as needed.
·         Create the platform to automate test scenarios and environments for performance testing.
·         Suggest new tools and techniques to improve testing efficiency
·         Generate test summary reports for review

 Skills:

·         Need to have a BSc degree in Computer science or information Technology
·         Very good communication and negotiation skills
·         Good experience in performance testing service model and the implementation.
·         Knowledge of performance testing core principles and their usage
·         Need to have very good analytical and problem solving skills
·         Good understanding of the network, operating systems, web servers & database architecture, etc.
·         Very good knowledge in testing tools and related technologies
·         A sound knowledge in performance testing matrixes/ counters, various application technologies and the concepts of load simulation



3.    Software Performance Architect (First he/she should come as Associate > Architect  > Senior Architect)

Responsibilities:

·         Define performance testing objectives (Short term and long term).
·         Implement performance Testing service in the company
·         Build and maintain Performance engineering activities and benchmarking.
·         Verifies and validates workload models.
·         Provide support in project design, development activities which related to the application performance.
·         Build and verify CI automation environment
·         Review and recommend improvements to existing test strategies
·         Capacity planning and predicts the system performance for the future.
·         Work with developers and the management to develop performance testing culture at the company
·         Assist in project budgeting and resource planning activities.
·         Generate test final reports for management review


Skills:

·         Need to have a BSc or MSc degree in Computer science or information Technology
·         Thorough knowledge in project management and team handling.
·         Excellent communication and negotiation skills
·         Needs to have an excellent knowledge of testing tool architecture and the distributed load mechanisms.
·         Strong problem analysis and solving skills
·         Thorough understanding of the network, operating systems, web servers, database and application architecture.
·         Excellent knowledge in performance testing matrixes/ counters, various application technologies and core principles and their usage
·         Thorough knowledge regarding performance testing process and strategies
·         Excellent knowledge of the relevant and current industry trends.