Performance testing is done to find out one or more risks related to cost, expense and opportunity affecting business reputation and continuity. Main goal of performance testing is to test for the availability, scalability, speed and performance of the software as well as hardware
Performance testing is a non-functional type of testing implemented and executed to evaluate and characterise the performance-related aspects of an application such as reliability, speed and scalability. Various types of performance tests, each focussing on different objectives, are implemented throughout the software development life cycle comprising different iterations.
In the architecture iteration, performance testing focusses on identifying and eliminating architectural-related issues and bottlenecks. In the construction phase, performance tests are performed to verify that the application can handle peak loads and stress conditions such as a large number of users, transactions or volumes.
Building a successful application requires two main elements—functionality and performance.
Functionality indicates the ability of software products such as web application and computer software to satisfy the need of an end user.
Performance is the ability of a system to accomplish useful work measured against some known standards of cost, completeness, speed and accuracy.
The main goal of performance testing is to find and remove all bottlenecks before the product is launched into the market. Poor or inadequate performance testing may lead to applications that are prone to breakdowns.
Performance testing is necessary for critical uses such as life-saving applications in healthcare, medical, drug and biotech discovery systems and mission-critical applications such as missile programs, aerospace, flight, automotive and defence to ensure that they work for longer periods of time without performance glitches. In this paper, performance testing methods, techniques and tools are summarised and analysed.
Performance testing concept
Resources that are monitored and reported as a part of performance testing include CPU usage, cache coherence, data consistency, memory usage, power consumption and network bandwidth. Response time and throughput related to router, application servers and web servers are also considered in performance testing. Put together, an application’s reliability, availability, response time, throughput, security, extensibility and scalability is observed and analysed during performance testing.
Why performance testing
In today’s world of e-business, almost all businesses are focussing on performance testing as it directly influences business revenue, brand name, organisation’s reputation and, most importantly, customer satisfaction. Ignoring performance testing can cause severe losses.
In 1999, Hershey’s Food Company launched a new supply chain management system (SCMS). Warehouse implementation and other issues caused Hershey to miss important Halloween shipments. This caused the company to lose $150 million in revenue, a drop of 19 per cent in annual profit and 34 per cent depreciation in the value of their stock.
Businesses that fully depend on web application for their sales can be greatly affected if application response time is poor. A minor mechanical problem in a switch at one of AT&T’s 114 switching centres resulted in 75 million phone calls across the USA going unanswered.
Studies show that user-visiting rate of an application starts to suffer when its response time takes over four seconds. Unsatisfied customer may never want to come back and influence others not to visit the application. This can make huge impact on business.
With these examples, one can see the importance of performance testing. Ignoring performance testing can lead to some major problems such as physical costs, as explained above, and some invisible and non-physical costs such as embarrassment, damage to reputation, tension, lower morale of workers and frustration in the organisation. Poor performance may cause loss in customer’s faith in the company.
Types of performance testing
Performance testing can be categorised into following types:
Load testing. Load testing is the simplest form of performance testing. It is used to define system’s behaviour under specific load conditions. The load can be multiple users accessing application simultaneously within a certain time frame. Load testing helps find the maximum load capacity of an application and also identifies the bottlenecks in the application that are the root causes of degradation.
Load testing is most suited for multiuser systems built using client/server architecture such as application and web server.
Load testing of an application uses the following approach: When a user visits a site, a script recorder records the conversation and then creates interaction scripts. A load generator replays the recorded scripts with modified parameters. During replay, both hardware and software aspects such as CPU, memory, disk I/O of physical server, response time and throughput of server will be monitored and analysed. Then, a load testing report will be generated.