Stress testing. Stress testing is a form of performance testing that is used to determine system’s availability, robustness and reliability under peak load conditions. The goal of stress testing is to test the application under extreme load conditions to find any loopholes. These conditions can include high concurrency, limited computer resources and heavy loads.
The idea behind stress testing is to test the system beyond operational capacity in order to find defects which can lead to system breakdown and possibly end in a disastrous failure.
Proper stress testing is fruitful in detecting interlock problems, synchronisation and timing bugs, priority problems and resource bugs.
There are two types of stress testing: Hardware stress testing and software stress testing.
Hardware stress testing is used to ensure the stability of computer hardware in a normal environment under excessive levels of stress. Stress levels can include types of task, extremes of workload, memory uses, thermal load voltage or clock speed.
In software testing, emphasis is on availability, robustness and stability of the system under heavy load conditions. The goal of stress testing is to ensure that the software does not crash in conditions that lack computational resources, usually denial of service attacks or high concurrency.
Soak testing. Soak testing is a process of running an application at an extreme load condition for a longer period of time. A soak test would normally be executed over a weekend or an entire day to identify any performance problems that occur due to a large number of transactions.
In some cases, system may stop working due to certain defects such as memory leaks and CPU failures. Load test and stress test cannot find such defects because they are limited to short durations. In such cases, soak tests are useful to find such defects.
A soak test can run as long as possible with some limitation on testing. Weekends are a good time for such tests.
Fig. 2 shows the login activity of some sites. The soak test shown here is at a level of 540 logins per hour, with some typical usage for each login session. In this example, the average number of logins per day is 5308 and it can take eight hours at 540 logins per hour to complete an entire day’s activity through the application.
Soak tests are useful in finding any degradation in performance under extreme situations. Soak tests help in finding major problems such as memory leaks and degradation in response time.
A soak test is suitable for applications which are run for longer periods of time, for example, ERP and CRM systems, where user executes a number of business transactions and is logged in for many hours. Soak testing is useful in systems such as air-traffic control system. Soak tests for such systems may have multi-day or even multi-month durations.
Spike testing. Spike test is a non-functional test in which a web application is tested against a varying load over a longer period of time. In this, a load is applied to an application continuously varying between 50 and 100 per cent over load adjusters. Performance and response of an application is constantly monitored and analysed during this process. There are possibilities that a system might break under these varying loads.
Performance of a web application can be improved by using bandwidth throttling. Bandwidth throttling is intentionally slowing the Internet server in order to regulate Internet traffic and minimise bandwidth congestion.
Spike testing is a type of performance testing in which we evaluate the performance of a web application in unexpected traffic. Performance of a web page degrades when there is a sudden increase in number of users accessing it. The requirement of a web application varies for a number of reasons, some are event-driven like launch of a product, and some are time-driven like time of day. Spike testing tests all these issues and guarantees that all the performance-related issues are detected and fixed before the fulfilment of requirements.
The goal of a spike test is to check that when the performance degrades, whether the system will fail or it will handle the load.
Performance testing tools
Performance testing tools include automatic as well as semi-automatic ways of measuring web application performance and load stress capacity. It can monitor the performance of a web application in peak traffic and extreme load conditions. A good performance testing tool must satisfy some criteria such as capability for testing using case-based load scenario testing. It should be easily configurable, capable for stress testing and provide monitoring of parameters.
There are many open source as well as licenced performance testing tools available in the market. A few examples are.