To perform load testing of web servers LoadComplete uses virtual users with scenarios assigned to them. A scenario, in fact, is HTTP traffic that is simulated. Each scenario includes one or several connections to a web server. Each connection includes a number of requests and responses. So, the total execution time of a scenario includes the execution time of all requests belonging to this scenario.
However, if you take a look at load testing results in the test log, you may notice the following issues that may seem odd unless explained:
-
The overall test execution time is greater than the time required to open a page in the browser.
-
The scenario execution time (a virtual user’s lifetime) is not equal to the sum of connections this scenario contains.
-
The connection lifetime typically differs from the sum of request execution times.
-
The sum of request execution times across the connections is less than the page load time measured when opening a page in the browser.
These differences are caused by the specifics of time measurement in LoadComplete, as well as by helper operations performed when simulating traffic:
-
The load testing engine times and reports the life time of virtual users. This time contains three parts:
- Load testing engine initialization time.
- Time needed to simulate connections (see below).
- Time needed to log results and calculate the summary.
Note that, besides the connection times, the virtual user’s life time also includes the time taken by helper operations. This time is not shown anywhere in the log, and this is the difference between the virtual user’s time and the time needed to simulate connections (the latter typically differs from the sum of connection life times since connections may work concurrently).
-
The life time of a connection consists of the following components:
- Load testing engine initialization time.
- Connection initialization time.
- Time needed to simulate requests and receive responses (see below).
- Connection finalization time.
- Time needed to log results.
-
The request time includes the following components:
- Load testing engine initialization time (these time periods are not shown anywhere in the log, but they are included in the connection time).
- Time needed to send the request. Typically, this time is negligible and is reported as 0.
-
The response time includes the following components:
- Time needed to receive the response data.
- Time needed to process the response data (for instance, determine the response contents or run data selectors).
- Time needed to log the results.
- Response finalization time.
-
When you open a web page in the browser, the latter gets the page by its URL, parses it to find out what other resources should be loaded (CSS, images, scripts) and renders the page on the client side.
When executing a scenario, LoadComplete neither renders the page (since the simulation is not visible), nor parses the page. (However, the received server responses are processed by LoadComplete, for example, in order to handle dynamic parameters.) The scenario already contains a list of all requests to be sent and of all resources to be obtained. So, it takes less time for LoadComplete to download the resources. That is why the pure request execution time is less than one can see in the web browser.