In software engineering, load testing is essential for any functioning website or software application to determine its performance under a specific expected load. Basically, it looks at how the software application behaves when accessed by multiple users at the same time. It is a process that needs ample preparation beforehand, such as planning clear goals, defining use cases, and preparing needed hardware and parameter data.
Planning the Test Design Elements
Define the goals of the project
When it comes to designing a load test, clear project goals are a key element. This involves determining which specific performance metrics you would like to measure. These key performance indicators (KPIs) include such as page time, CPU utilization, and transaction rate. KPIs drive people, hardware and software resources, and project schedules. Depending on those KPIs, other tools or consultants may speed up the process.
Additionally, it is crucial to establish a clear stopping point. While pursuing better performance, there is no natural limit to the changes that you can make. To prevent excessive testing, the goals set will also work as an artificial limit.
Consider the project time frame
It is crucial to determine when the customer needs the results, work backward from that date, and create a plan accordingly. Sometimes there are phase lines where all the resources will need to sync up before moving forward and that needs to be taken into account in the timeline. Status meetings may also be necessary to ensure that all teams are working together effectively.
Defining use cases
Defining use cases is also a vital element of load test design. This involves identifying the application being tested, the use cases for that application, and the specific steps or functions performed. Additionally, it is important to look at the parametrized elements of the use case and how to validate that the script and server are still in sync.
Having a schedule for concurrent users
It is essential to determine the testing schedule, the rate at which users arrive, and the target transaction rate. You will also need to determine how the rate is set and how long you will be running at peak load.
Determining the needed hardware
This includes considering whether the load testing software is self-hosted or using a SaaS environment. If it is self-hosted, you will need to determine the hardware requirements for the testing tool. Furthermore, customer networks are often protected by firewalls for confidentiality. There may need to be holes in the firewalls to allow the load test tool machines to touch the script and environments that they are meant to test. Lastly, identifying the environments and hardware necessary for script development and full-scale testing is also important.
This involves determining the location of the load generator machines, whether dedicated local or cloud load generators are necessary, and identifying the need for network or security changes. Configuration changes must also be made to optimize the test environment, and monitoring server-side performance during tests is essential.
There are a few aspects of preparing the database. This includes ensuring that the database does not contain personally identifying information. For capacity and stress testing, you also need to ensure the database is full-sized. A team also needs to monitor the database closely.
They will also need to know how to reset the database and environment between test runs. When comparing two tests, it is important that they have the same initial state, to ensure consistent results.
Preparing parameter data
During script execution, parameter data is passed on one or more requests so that the script is forcing the server to execute more parts of the application. In some cases, these requests must be unique. In other cases, the objective is to defeat caching. Most parameter data consists of user IDs and passwords or document numbers to process.
You will need to look at if a value can be used by two virtual users at the same time, and if not, is there an order or sequence? You will also need to determine if a given data row can be reused during a single test.
At the management level, some need to manage strategic and operational decisions as well as communication. They will need to determine who will script the use cases, who will manage hardware and perform monitoring and analysis, who will deal with security issues, and who will write and deliver reports.
Finally, it is essential to consider data retention, including where and for how long the data will be kept and whether a cleanup procedure is necessary.
In most cases, load testing is an ongoing process that involves several business and technical processes. This involves a permanent team that is involved in an ongoing function. However, in some cases, it is a one-time project, where the team is disbanded after the project is completed.
Collect requirements and specifications
To start off, you need to collect the requirements and specifications for the test. This involves identifying use cases and required hardware. For a one-time project, in order to plan, you need all of the above. For an ongoing function, most of the above is known and only details need to be worked out.
Create scripting environment
Once you have the planning information, you can start creating the testing environment. You will need hardware and software for the test tool, a working application environment, and test cases. You should install the necessary software, such as WebLOAD, to ensure that you can record your applications and run the load test.
Next, the scripting team records and transforms the scripts to be suitable for load testing, by adding correlation, parameterization, validation, logic, timing, and other factors. The main test environment, including hardware, applications, database, data, reset plan, and monitoring plan, usually will be created if it does not already exist. If not, the application technical team will work with the infra team, application functional team, security, network, and database administrators to create one. During this stage, first-cut reports may also be prepared and the load testing team will typically be involved in that.
In conclusion, the planning phase of load testing is crucial for its success. As we have seen, careful planning helps ensure that the right resources are in the right place at the right time, and that the test is aligned with the business requirements. In the next article, we will dive into the actual execution of the load test, including how to run it and analyze the results.