Performance testing is the process during which a product’s quality or its ability to function in the required environment is evaluated. As a non-functional testing technique, performance testing is conducted to evaluate a systems ability in terms of responsiveness and stability under workload. This process is conducted on three major attributes, which includes scalability, reliability and resource usage.
A number of techniques can be used to check performance of a software or hardware in a performance testing environment setup. This includes:
- Load testing is the simplest form of testing and is basically conducted to understand the behaviour of the system under a specific load.
- Stress testing is conducted to check a system ability to cope with the increased load, if any. It is performed to determine the maximum capacity of the existing system.
- Soak testing, also known as endurance testing, is a type of testing done to verify a system’s ability to perform in situations of continuous load.
- Spike testing is conducted by abruptly increasing the number of users of a system and determining how the system performs under such load.
There are a number of simple ways in which one can ensure accuracy and better results in the tests. This can be done using a better performance testing environment setup, which can be done in the following ways:
1. Detailed knowledge of AUT Production and Test Environment
It is the responsibility of a performance testing engineer to have complete knowledge and awareness about the AUT production environment such as server machines, load balancing as well as a number of other system components. These details, once known, should be properly documented and well-understood before initiating the initial stage of the performance testing
It is also important for an engineer to keep himself/herself aware about the complete details of the AUT architecture and to make sure that the same architecture is being executed in the test environment. This is because, having any sort of difference between the two can lead to the wastage of time, cost of production and effort.
2. Isolating the test environment
It is important to ensure that there is no activity which is being carried out on the performance test environment when there is someone already using the system. This is because the results of every performance test are different and it might get difficult to implement a new bottleneck every time in a test environment when there are also other users currently active on the system.
Apart from this, heavy load on any application server affects its performance. This, in turn, might not allow the other real time application users to successfully complete their tasks when a performance task is already under execution.
3. Network Isolation
It is important to ensure that a sufficient network bandwidth is available for your test as network bandwidth is essential to achieve accurate performance test results. In case the network bandwidth is low, the user requests begin to produce timeout errors. Therefore, one should make sure to provide maximum network bandwidth to the test environment by isolating the test network from other users.
4. Test Data Generators
Database records have an important role to play in the validation of any tests. Therefore, database reading, writing, deletion and updating are the most performance intrusive actions in any application.
Since there is a high probability of an application’s test failure in the production environment if it is conducted on lesser database records as compared to the test records. Therefore, it becomes the responsibility of the performance engineers to make sure that the number of test records are same in both the test environment system and database. In case, the database is small, it is recommended to pick some tool from the available ones and generate the required test data for better accuracy.
5. Removing proxy servers from network path
Performance results can be highly affected if there is a proxy server between the client and the web server. If the mid of client and web server has a proxy server, it is certainly true that the client will be served with data in cache and will stop sending any requests to web server. This, in turn, can lead to a lower AUT response time.
A performance engineer can deal with such issue by transferring the web server in a secluded environment. Another way is to strike directly to the web server, which can be done by editing the HOSTS file by including server IP address.
Performance Testing Production Environment
There are a number of advantages and disadvantages of conducting a performance test in production environment. Some of these include the following:
Advantages:
- There is no need to reproduce the production site data set
- Validating the performance test results performed on test environment is possible.
- There is a reduced cost and time involved in test infrastructure.
- Application recovery process and its complexities are well known.
Disadvantages:
- Real application users end up receiving slower application and errors.
- It gets difficult to identify the bottleneck root cause in the presence of real application users.
- It is very likely that the access to real users might have to be blocked so as to properly achieve the performance test results.
- In case of generating lots of data on production database, database may become very slow even after the test.
Once the test performance testing environment setup is ready, one can always compare it with the production environment on the basis of several factors such as the number of servers, load balancing strategy, hardware and software resources, application components, to name a few.
Above all, it is important that the required tests are conducted properly so that there are no faults pending in an application when making its use in real-life situations.