Performance Testing
Performance testing is the process of testing to determine the performance of a software product.
In general, it’s a testing practice executed to determine how a system performs in terms of responsiveness and stability under a particular workload. It can also serve to measure, validate or verify other quality attributes of the system, such as scalability, reliability and resource usage.
Types of Performance Testing:
- Load: determine how application deal with a large amount of data.
- Stress: examine application behavior under peak bursts of activity.
- Capacity: measure overall capacity and determine at what time response time become unacceptable
It is very important to realize the difference in performance test types in order to reduce risks, minimize cost, and to be able to know when to apply the appropriate test over the course of a given project.
One need to evaluate the key points to apply different test types over the course of a performance test. They are the objectives of the performance test and the context of the performance test; for example, the resources involved, cost, and potential return on the testing effort.
Following are the sub-genres of Performance Testing:
- Load Testing is conducted to examine the performance of application for a specific expected load. The load can rise by increasing the number of users performing a specific task on the application in a specific time period.
- Stress Testing is carried out to evaluate a system performance by increasing the number of users beyond the limits of its specified requirements. It is performed to understand at which level application can crash.
- Volume Testing tests an application in order to determine how much amount of data it can handle efficiently and effectively.
- Spike Testing shows what changes happens on the application when all of a sudden a large number of users increase or decrease.
- Soak Testing is performed to understand the application behavior when we apply load for a long period of time and what happens on the stability and response time of the application.
Performance testing is needed to verify:
- Response time of an application for the intended number of users
- Maximum load of the resisting capacity of an application.
- Capacity of the application to handle the certain number of transactions.
- Stability of an application under expected and unexpected user load.
- Proper response time that users have.
The performance testing of an application can start during the design. After the execution of the performance testing, the collected the results are analyzed to improve the performance. Then performance tuning process will be done throughout the application development life cycle. Performance tuning is performed based on factors like release time and user requirements of application stability, reliability and scalability under load, stress and performance tolerance criteria. When product reaches its expected level then that can be considered as the end criteria for performance testing.
Performance testing is not considered as mandatory, mostly because it is costly. But the facts are clear – poor performance of a website is not a good practice for any business. If a site responds slowly or fails under load, then money is going to be lost.
Statistically saying, some of the web pages can increase their profit by 7% or 9%, and some up to 12%. In other words, performance testing is conducted on highly loaded systems in companies that would not turn down a way to improve their profitability by 10%.
Performance testing tools
There are performance-testing tools that can be used while testing a system level to see whether or not the system will stand up to a high volume of usage.
In order to assess performance, the tool needs to generate some kind of activity on the system, and this can be done in various ways. There are many options that could be set, depending on the tool, such as different user profiles, different types of activity, timing delays and other parameters.
There are many benefits of using tools to support testing, whatever the specific type of tool. Benefits include:
- reduction of repetitive work;
- greater consistency and repeatability;
- objective assessment;
- ease of access to information about tests or testing
The support of performance-testing tools is essential for:
- generating a load on the system to be tested;
- measuring the timing of specific transactions as the load on the system varies;
- measuring average response times;
- producing graphs or charts of responses over time
There are some popular commercial testing tools, like:
- LoadRunner(HP): for web and other applications, that provides a variety of application environments, platforms and database.
- WebLoad(RadView): lets you perform load and stress testing on any internet application.
- LoadUI NG Pro: makes it easy to model real-world loads on your API.
- Apica LoadTest: offers flexible self-service and full-service load testing.
- LoadView: fully managed, on-demand load testing tool that allows for completely hassle-free load and stress testing.
- Load Xen: load testing software which helps to scale an application by simulating thousands or millions of virtual users.
- Apache JMeter: can be integrated with the test plan. This tool has the capacity to be loaded into a server or network so as to check on its performance and analyze its working under different conditions.
Let’s talk about JMeter. For example, Spike Testing is performed to understand what changes happens on the application when suddenly a large number of user increased or decreased. In JMeter spike testing can be achieved using Synchronizing Timer. The threads are blocked by synchronizing the timer until a particular number of threads have been blocked, and then release them at once thus creating large instantaneous load.
As a conclusion, it can be said that performance testing is a broad and complex activity that can take many forms, address many risks, and provide a wide range of values to an organization.