Client Performance Monitoring¶
Important
NeoLoad integration has been removed in Rapise 7.0.
Concept and Architecture¶
The purpose of this integration is to address the following use case:
The tester wants to measure the speed of the user interface that a user would experience while performing a protocol-level load test:
- How long does each transaction take while 1000 VUs are hitting the same system?
- The user interface could be web, mobile, or a thick client (e.g., an ERP system).
The following describes the technical architecture required:
The process flow for the above architecture is as follows:
- A user schedules the performance test in SpiraTest.
- RemoteLaunch, connected to the NeoLoad controller and SpiraTest, initiates the start of the testing.
- The NeoLoad controller sends commands to the NeoLoad load generators to start the performance scenario.
- During the performance scenario, NeoLoad calls Rapise via its command line to start a specific test.
- At specific points in the Rapise function test (which is grouped into transactions), timing code in the Rapise script (see next section) calls the NeoLoad REST API to report the timing for the transaction block.
- The NeoLoad controller correlates each block with the appropriate transaction in the performance scenario.
- At the end of the performance test, RemoteLaunch reads the entire performance test and sends the results back to SpiraTest.
NeoLoad Global Object¶
Rapise includes a global object named NeoLoad
that can send client performance metrics to the NeoLoad controller.
NeoLoad displays the received data in both tree and graph views.
NeoLoad Tree View¶
The root of the tree is the name of the script executed by Rapise. The first level contains three groups:
- LG Performance – This folder contains essential load generator metrics captured by Rapise: CPU, Memory, and Network Sent/Received bytes.
- Page Load – This folder contains nodes for each page and nested resource. Duration values are obtained using the
Window.performance
structure. See also http://www.w3.org/TR/navigation-timing/#processing-model - Transactions – This folder contains counters for transactions defined by a script.
Graph View¶
Each leaf node can be dragged to the graph view for visualization:
Performance Filters¶
Performance results obtained from different runs can be filtered using the results filter on the toolbar.
You can open the Results Filter dialog by pressing the …
button.
- Platform – a combination of hardware and OS. Hardware is passed by a user script; OS is determined automatically by Rapise. E.g.,
hardware1 – Microsoft Windows 8.1 Pro
. - Client Software – Rapise.
- Location – supplied by a script. E.g.,
location1
. - Script – a combination of script name and timestamp. E.g.,
NeoLoad Object API Reference¶
The methods of the global NeoLoad
object are described on this page.
How to Use¶
To send performance metrics to NeoLoad, you need to add a sequence of calls to your script.
First, connect to NeoLoad. When this call is executed, NeoLoad must be running a script; otherwise, an error will be returned.
NeoLoad.CreateClient("hardware1", "location1", "Broadcom 802.11ac Network Adapter _2");
Consider the following code block:
NeoLoad.CaptureHostPerformance();
NeoLoad.StartTransaction('T Home');
NeoLoad.CaptureBrowserPerformance(SeS('Log_In').GetPageURL());
//Click on Log In
SeS('Log_In').DoClick();
NeoLoad.CaptureBrowserPerformance(SeS('Username_').GetPageURL());
NeoLoad.EndTransaction('T Home');
CaptureHostPerformance
sends immediate values of CPU, memory, and network load to the NeoLoad controller.StartTransaction
/EndTransaction
calls define a transaction namedT Home
. Upon theEndTransaction
call, its duration is sent to the NeoLoad controller.CaptureBrowserPerformance
sends page load performance metrics to the NeoLoad controller.
There is also a general call that can send any user-defined metric to the NeoLoad controller:
NeoLoad.CapturePerformanceValue("First Level Folder", "Transaction1|Duration", "milliseconds", 120);
Components of the second parameter can be separated by |
. This allows you to add more levels to the tree.