I generally hear a lot of noise when it comes to Performance Testing. “Big word” but mostly used with utmost carelessness. What is Performance Testing? Why do we do Performance Testing? How it should be done? What should we capture? What will be the outcome?
Well I am not going to exactly answer each question, but assure that by the time you finish reading this blog I will give you a clear picture of Performance Testing. I hope all my reader friends are aware/heard of Performance Testing. Performance Testing may be done on components or on the whole application. When I say component I refer to the web services, window services, etc. But before diving straight into the world of Performance testing, we should ask ourselves few basic questions.
- Do we have any SLAs (Service Level Agreement) to be met?
- Do we need to identify and fine tune the bottle necks?
- Do we need to find out the scalability of the application?
- Do we need to find out any memory leakage?
- Is the application ready to be deployed to production?
So basically these questions will help us narrow down the goal for doing performance testing. We cannot address all the above questions with one performance test. We can take up one question at a time and then start addressing it. Answer to each question would require Test Planning phase, Environment Set up Phase, Performance Test Execution Phase and Reporting & Analysis phase. Unless we have a clear defined goals, we are bound to fail. Test planning phase would basically address questions like selection of testing tools, identification of scenarios, creation of scripts etc. Once we are done with this phase, we need to do environment set up. There is no point in doing ad hoc performance testing on my “local box”. Environment Set up phase address questions like setting up the machines, OS installation, testing tool installation (if required). The performance test environment is always advised to be the scale down version of the Production Environment with similar architecture. There is no point in running performance test for 1 user. Performance test execution phase requires me to specify the load, set the performance monitor counters on the server, run the test and collect the data. Reporting & Analysis phase requires me to analyze the data, investigate problems like bottlenecks or memory leakage (if any), generate reports and create recommendation reports. I have just given a brief overview of all the phases.
Apart from doing these things, we should also be knowing which performance monitors counters to be used in case of .NET applications or Windows application. The set of counters varies from one objective to other.
With my experience of doing Performance Testing on .NET application, I am sharing a small list of counters which are frequently used to determine memory leakage. You can always add some more counters. The below mentioned set of counters can be used when we are doing performance testing on .NET applications.