HP (formerly Mercury) LoadRunner enables customers to obtain an accurate picture of end-to-end system performance, verify that new or upgraded applications meet specified performance requirements and to identify and eliminate performance bottlenecks during the development lifecycle.
HP LoadRunner works by creating virtual users who take the place of real users operating client software, such as Internet Explorer sending requests using the HTTP protocol to IIS or Apache web servers.
Requests from many virtual user clients are generated by "Load Generators" in order to create a load on various servers under test. LoadRunner can emulate thousands of Virtual Users.
These load generator agents are started and stopped by Mercury's "Controller" program (wlrun.exe).
The Controller controls load test runs based on "Scenarios" invoking compiled "Scripts" and associated "Run-time Settings".
Scripts are crafted using Mercury's "Virtual User Script Generator" (VUGen.exe). It generates C-language script code to be executed by virtual users by capturing network traffic between Internet application clients and servers.
During runs, the status of each machine is monitored by the Controller.
At the end of each run, the Controller combines its monitoring logs with logs obtained from load generators, and makes them available to the "Analysis" program (AnalysisUI.exe), which can then create run result reports and graphs for Microsoft Word, Crystal Reports or an HTML webpage browser.
Each HTML report page generated by Analysis includes a link to results in a text file which Microsoft Excel can open to perform additional analysis.
Load generators are controlled by VuGen scripts which issue non-GUI API calls using the same protocols as the client under test. Only one GUI user can run from a machine unless LoadRunner Terminal Services Manager manages remote machines with Terminal Server Agent enabled and logged into a Terminal Services Client session.
Vuser scripts can be run using VuGen, QuickTest or the Controller.
During run-time, threaded vusers share a common memory pool. So threading supports more Vusers per load generator.