The three concepts of load testing, stress test, and performance test are often confusing and difficult to distinguish, this leads to incorrect understanding and incorrect use. There have been a lot of discussions before. The famous ones should be classified as two blogs of grig Gheorghiu's:
- Performance vs. load vs. Stress Testing
- More on performance vs. Load Testing
The purpose of load testing, stress testing, and performance testing is different, but the methods and methods are similar to a certain extent. Generally, the same test environment and testing tools are used, it also monitors the resources occupied by the system and other corresponding performance indicators, which is also the main cause of confusing concepts.
We know that software is always running in a certain environment, including the software and hardware environment supporting software running and the external conditions that affect software running. In order to make customers satisfied with the use of software systems, it is necessary to ensure that the system runs well to achieve high security, high reliability and high performance. Whether the system has high-performance running characteristics depends not only on the system design and program algorithm, but also on the operating environment of the system. The operating environment of the system depends on some key factors, such:
- System architecture, such as distributed server clusters or centralized host systems.
- The higher the hardware configurations, such as server configurations, CPU and memory configurations, the better the system performance.
- Network bandwidth, as the bandwidth increases, the client access speed to the server will be greatly improved.
- Support software selection, such as selecting different database management systems (Oracle, MySQL, etc.) and Web application servers (tomcat, glassfish, JBoss, WebLogic, etc ), it affects the performance of the application system.
- External load, the number of user connections at the same time, the size of files uploaded by the user, the number of records in the database, and so on will affect the system performance. Generally, the higher the system load, the lower the system performance.
It can be seen from the above that to make the system performance reach the best state, not only through testing the system in a specific environment to complete the relevant verification, but also often according to the test results, adjust the system design, code, and configuration to improve the system performance. In many cases, the improvement of system performance is testing, adjustment, re-testing, re-adjustment ,...... A process of continuous improvement, which is often referred to as perormance tuning ).
After understanding this background, it is easier to understand why Server Load balancer is often used in performance tests. Starting from the purpose of testing and from the user's needs, it is easier to distinguish performance testing, load testing and stress testing. Performance testing aims to obtain the performance indicator data of the system under certain conditions (including specific load conditions, server Load balancer and stress testing are designed to discover problems in the software system, including performance bottlenecks and Memory leakage. The load test is also used to obtain the maximum load that the system can withstand during normal operation. In this case, the load test becomes a capacity test. Through stress testing, you can know under what limits the system will crash and whether the system has a self-recovery, but more is to determine the stability of the system.
So how can we define a load test and stress test? Based on the above discussion, we can give the following definitions:
- Load Testing simulates the system load of the actual software system under the load conditions, through continuous loading (such as gradually increasing the number of simulated Users) or other loading methods to observe the response time and data throughput of the system under different loads, and the resources occupied by the system (such as CPU and memory) to test the system's behavior and characteristics, to discover potential performance bottlenecks, memory leaks, and inability to synchronize data in real time. Load Testing is more of a method or technology.
- Stress Testing is performed under high loads (large data volumes, a large number of concurrent users, etc.) to view the operation behavior of the application system during peak usage, in this way, it can effectively discover a function hidden danger of the system, and whether the system has good fault tolerance and restorability. Stress tests are classified into stability stress tests for a long period of time (such as 24 hours or more) under high loads and destructive stress tests that cause system crashes under extreme loads.
Stress testing can be considered as a type of load testing, that is, load testing under high load, or stress testing uses load testing technology. Through stress testing, you can quickly detect memory leaks and problems affecting system stability. For example, under normal load, some functions cannot be used normally or the probability of system errors is relatively low, may only appear once a month, but under high load (stress testing, it may occur in one day, thus discovering defective functions or other system problems. The load test shows that the error rate of an e-commerce website's order submission function is zero for 10 concurrent users and 1% for 50 concurrent users, the error rate is 200 for 20% concurrent users.
Server Load balancer is used to discover system performance problems. Server Load balancer needs to discover problems through system performance characteristics or behaviors, so as to help improve performance. In this sense, load testing can be seen as part of performance testing. However, they have different purposes. The purpose of Server Load balancer is to detect defects, while performance testing is to obtain performance indicators. In the performance test process, you can change the system structure, algorithm, and hardware configuration under the same load to obtain performance metric data, in this sense, Server Load balancer can be considered as a technology of Performance Testing Institute C, that is, performance testing uses server load testing technology and load testing tools. Performance testing should obtain performance indicator data under different loads.
Through load testing and stress testing, you can obtain the maximum load or maximum capacity during normal system operation. Capacity Testing is naturally implemented using load testing technology. In destructive stress testing, capacity determination can be seen as a by-product-indirect results.
The concepts of load testing, stress testing, and performance testing can be summarized as follows:
- Server Load balancer detects system performance problems by changing the system load mode and increasing the load. Load Testing is a testing method that can be used for performance testing and stress testing. There are also many load testing methods, which can be selected based on the test needs.
- Performance testing is performed to obtain or verify system performance indicators. In most cases, performance tests are performed under different loads.
- Stress Testing usually tests the system stability under high load conditions, and more effectively discovers potential risks of system stability and functional risks of the system under the conditions of peak load.