Performance testing is referred to as the testing process that involves determination of how the tasks are performed by the software systems and applications. The performance is measure in terms of two major terms namely stability and responsiveness under various conditions of loads.
The performance testing is also carried out for other purposes such as the investigation, validation, verification and measurement of various quality attributes of the software such as resource usage, reliability, scalability and so on.
Performance testing is actually performed as a part of the performance engineering. Performance engineer is a branch of computer science and engineering that is involved with building performance in to the design, architecture and development of a software product.
There are a number of testing methodologies that are adopted under the context of performance testing such as:
1. Load testing
2. Stress testing
3. Soak testing or endurance testing
4. Isolation testing
5. Configuration testing
Purpose of Performance Testing
Performance testing is carried out for 3 major purposes mentioned below:
1. For demonstrating whether the software system meets the specified performance criteria.
2. For making comparisons between 2 software systems in order to find out which one performs better.
3. For identifying what parts of the software system are causing it to behave or perform badly.
More often the performance tests are carried out without considering the settings of the actual performance goals. From a business perspective a question must always be asked before performance testing is performed which is that why performance testing is being carried out? The settings consideration form a part of the business case of the testing process. Based on system’s purpose and technology used the performance goals may vary.
Goals of Performance Testing
1. Throughput or Concurrency
– This goal is desired if the system is to identify the end users via some kind of log in procedure.
– Formally, this goal can be defined as the largest number of end users using the concurrent system expected to be supported by the software system or application at any given instant.
– The true concurrency of the system might be affected by the workflow it is to contain iterative log–in and log–out activities.
– If in case the system does not involve the end user concept, this goal then depends up on the maximum throughput of the system.
2. Server Response Time
– This is the time taken by the system node to respond to system’s request.
– This goal is what that is actually measured a majority of the load testing tools.
– Usually the server response time is set between all the nodes of the system.
3. Render response time
– This is the time when in actual there is no activity taking place.
– Functional test scripts are required to be included as a part of the test scenario so that the render response time can be measured.
4. Performance specifications
– It is a critical demand of any project that you document all the performance specifications in any performance test. – This is accomplished during the requirements development stage of any project before moving on to the design phase. – However, against a particular specification, performance testing is not performed frequently.
Performance testing is typically carried out as a part of the performance profile tuning. The purpose behind this the identification of the weakest link which if made to respond faster can speed up the system’s overall performance. However finding such a link is quite difficult and involves the use of some instrumentation tools for reporting the following things:
1. Reporting transaction times
2. Data base access times
3. Network overhead
4. Server monitors
All of the above things are analyzed along with the raw statistics. One would have to use rely on the windows task manager how much load is being generated at the CPU.