Performance Testing Vs Performance Engineering
Performance Testing Vs Performance Engineering
Performance Engineering
What is performance testing? What is performance engineering? What are the dependencies and differences between performance testing and performance engineering? Are you doing just performance testing or engineering?
Performance testing
Performance Testing is the process of determining the responsiveness of the system under given hardware, software and load conditions. This process can involve qualitative and quantitative analysis. Quantitative analysis like measuring the response time of the business operation in seconds or milliseconds. Qualitative analysis such as scalability, reliability and interoperability. Performance testing can also be done in conjunction with load, stress and volume testing.
The main objectives of performance testing are to identify the bottlenecks on Application under Test. The process of identifying the bottlenecks can be done with diagnosis in different layers of the Application under Test such as presentation layer (web server), business layer (Application Server), data layer (Database). Performance Testing is also used to evaluate the service level agreements (such as average response time of the business scenario, throughput, hits per second and Errors per second etc) of the customer
Performance Engineering
Performance Engineering is an ongoing activity through out the Software Development Life Cycle. It encompasses the set of roles, skills, activities, practices, tools, and deliverables applied at every phase of the SDLC. It will ensure that a solution will be designed, implemented, and operationally supported to meet the performance requirements defined for the application
Increase business revenue by ensuring the system can process transactions within the requisite timeframe.
Eliminate system failure requiring scrapping and writing off the system development effort due to performance objective failure. Eliminate late system deployment due to performance issues. Eliminate avoidable system rework due to performance issues. Eliminate avoidable system tuning efforts. Avoid additional and unnecessary hardware acquisition costs. Reduce increased software maintenance costs due to performance problems in production. Reduce increased software maintenance costs due to software impacted by ad hoc performance fixes. Reduce additional operational overhead for handling system issues due to performance problems
Identify key development team members as subject matter experts for the selected tools. Specify a profiling tool for the development/component unit test environment. Specify an automated unit (component) performance test tool for the development/component unit test environment; this is used when no GUI yet exists to drive the components under development. Specify an automated tool for driving server-side unit (components) for the development/component unit test environment. Specify an automated multi-user capable script-driven end-to-end tool for the development/component unit test environment; this is used to execute screen-driven use cases. Identify a database test data load tool for the development/component unit test environment; this is required to ensure that the database optimizer chooses correct execution paths and to enable reinitializing and reloading the database as needed. Deploy the performance tools for the development team. Presentations and training must be given to development team members on the selected tools