LoadRunner

®

Creating Vuser Scripts Windows and UNIX Version 5.0

Find

?

Online Guide

Table of Contents
0 Table of Contents

Welcome to LoadRunner ............................................................... xv Online Resources .............................................................................xvi LoadRunner Documentation Set .................................................... xviii Using the LoadRunner Documentation Set ...................................... xx Typographical Conventions ............................................................xxiv
Find

PART I: IN TRODUCING VUSER SC RIPTS Chapter 1: Developing Vuser Scripts ............................................ 2 Introducing Vusers.............................................................................. 3 Looking at Vuser Types...................................................................... 5 Developing Vuser Scripts ................................................................... 7 Using This Guide .............................................................................. 10 PART II: W O RKING W I TH VUGEN Chapter 2: Introducing VuGen ..................................................... 13 Recording Vuser Scripts with VuGen ............................................... 15 Running Vuser Scripts with VuGen .................................................. 17 Understanding VuGen Code ............................................................ 18 Using General Vuser Functions........................................................ 21 Click a page

?

Creating Vuser Scripts

iii

Table of Contents

Chapter 3: Recording with VuGen ............................................... 24 About Recording with VuGen ........................................................... 25 Creating a Vuser Script .................................................................... 26 Vuser Script Sections ....................................................................... 28 Recording Vuser Scripts................................................................... 29 Chapter 4: Enhancing Vuser Scripts ........................................... 38 About Enhancing Scripts .................................................................. 39 Inserting Transactions ...................................................................... 40 Inserting Rendezvous Points............................................................ 43 Inserting Comments ........................................................................ 45 Obtaining Vuser Information............................................................. 47 Sending Messages to Output ........................................................... 48 Handling Command Line Arguments................................................ 50 Using C Functions in Your Script...................................................... 52 Chapter 5: Defining Parameters................................................... 54 About Defining Parameters .............................................................. 55 Defining Parameters......................................................................... 57 Understanding Parameter Types...................................................... 61 Updating Parameter Values for Files................................................ 76 Updating Parameter Values for Internal Data Types........................ 81 Maintaining Parameters.................................................................... 82 Parameterization Options ................................................................. 83

In

Find

?

Click a page

Creating Vuser Scripts

iv

Table of Contents

Chapter 6: Configuring Run-Time Settings ................................ 86 About Run-Time Settings ................................................................. 87 Setting the Think Time Settings........................................................ 89 Setting the Iteration Settings ............................................................ 91 Setting the Log Run-Time Settings................................................... 93 Setting the General Run-Time Settings............................................ 99 Setting the RTE Run-Time Settings ............................................... 105 Chapter 7: Running Vuser Scripts in Stand-Alone Mode ........ 109 About Running Vuser Scripts in Stand-Alone Mode....................... 110 Running a Vuser Script in VuGen................................................... 112 Running a Vuser Script from a UNIX Command Line .................... 117 Integrating a Vuser Script into a LoadRunner Scenario ................. 121 Chapter 8: Managing Scripts Using TestDirector..................... 123 Working with TestDirector .............................................................. 124 Opening a Connection to a TestDirector Project ............................ 127 Opening a Script using TestDirector............................................... 130 Saving Scripts to the TestDirector Project...................................... 132 Managing your Script in TestDirector ............................................. 133
Find

?

Click a page

Creating Vuser Scripts

v

Table of Contents

PART III: DA TABASE VUSER SCRIPTS Chapter 9: Developing Database Vuser Scripts ....................... 136 About Recording Database Vuser Scripts ...................................... 137 Introducing Database Vusers ......................................................... 138 Understanding Database Vuser Technology.................................. 139 Getting Started with Database Vuser Scripts ................................. 141 Using LRD Functions...................................................................... 143 Understanding Database Vuser Scripts ......................................... 147 Evaluating Error Codes .................................................................. 154 Handling Errors............................................................................... 156 Chapter 10: Correlating Database Statements ......................... 161 About Correlating Database Statements ........................................ 162 Using Correlated Query Functions ................................................. 164 Correlating a Query Automatically.................................................. 168 Correlating Queries to Optimize a Script ........................................ 175 Correlating Queries for Tables with Constraints............................. 182
In

Find

?

Click a page

Creating Vuser Scripts

vi

Table of Contents

PART IV: TU XEDO VUSER SC RIPTS Chapter 11: Developing TUXEDO Vuser Scripts ..................... 187 About TUXEDO Vuser Scripts........................................................ 188 Getting Started with TUXEDO Vuser Scripts.................................. 189 Using LRT Functions ...................................................................... 191 Understanding Tuxedo Vuser Scripts............................................. 197 Correlating Queries ........................................................................ 201 Defining Environment Settings for TUXEDO Vusers...................... 206
Find

PART V: WINDOWS SOCKETS VUSER SCR IPTS Chapter 12: Developing Windows Sockets Vuser Scripts....... 209 About Recording Windows Sockets Vuser Scripts ......................... 210 Getting Started with Windows Sockets Vuser Scripts .................... 211 Using LRS Functions...................................................................... 213 Understanding Windows Sockets Vuser Scripts ............................ 216 Viewing Windows Sockets Data ..................................................... 217 Using Winsock Data Buffers........................................................... 219 Understanding Data Files ............................................................... 221 Correlating Statements .................................................................. 223 Working with Correlated Scripts ..................................................... 224 Determining Character Offsets for Parameterization...................... 229

?

Click a page

Creating Vuser Scripts

vii

Table of Contents

PART VI: A PPC VU SER SCRIPTS Chapter 13: Developing APPC Vuser Scripts ........................... 234 About Recording APPC Vuser Scripts............................................ 235 Getting Started with APPC Vuser Scripts....................................... 236 Using LRA Functions...................................................................... 238 Understanding APPC Vuser Scripts ............................................... 241 Viewing APPC Data........................................................................ 242 Using APPC Data Buffers............................................................... 243 Understanding Data Files ............................................................... 245 PART VII: RTE VU SER SCRIPTS Chapter 14: Introducing RTE Vuser Scripts.............................. 248 About Developing RTE Vuser Scripts............................................. 249 Introducing RTE Vusers ................................................................. 250 Understanding RTE Vuser Technology .......................................... 251 Getting Started with RTE Vuser Scripts ......................................... 252 Using TE Functions ........................................................................ 254 Mapping Terminal Keys to PC Keyboard Keys .............................. 256
In

Find

?

Click a page

Creating Vuser Scripts

viii

Table of Contents

Chapter 15: Recording RTE Vuser Scripts................................ 259 About Recording RTE Vuser Scripts .............................................. 260 Creating a New RTE Vuser Script .................................................. 261 Recording the Terminal Setup and Connection Procedure ............ 263 Recording Typical User Actions ..................................................... 268 Recording the Log Off Procedure................................................... 269 Setting the Recording Options........................................................ 270 Typing Input into a Terminal Emulator............................................ 274 Using the APPC Protocol in RTE Vuser Scripts ............................. 279 Generating Unique Device Names ................................................. 280 Setting the Field Demarcation Characters...................................... 282 Chapter 16: Synchronizing RTE Vuser Scripts......................... 284 About Synchronizing Vuser Scripts ................................................ 285 Synchronizing Block-Mode (IBM) Terminals .................................. 287 Synchronizing Character-Mode (VT) Terminals ............................. 293 Chapter 17: Reading Text from the Terminal Screen............... 302 About Reading Text from the Terminal Screen .............................. 303 Searching for Text on the Screen................................................... 304 Reading Text from the Screen........................................................ 305

Find

?

Click a page

Creating Vuser Scripts

ix

Table of Contents

P A R T VI I I : WE B V USE R S CRIPTS Chapter 18: Introducing Web Vuser Scripts ............................. 307 About Developing Web Vuser Scripts ............................................ 308 Introducing Web Vusers ................................................................. 311 Understanding Web Vuser Technology.......................................... 312 Getting Started with Web Vuser Scripts ......................................... 313 Using the Graphical Representation of a Web Vuser Script........... 315 Using Text-Based Web Vuser Scripts ............................................ 320 Chapter 19: Recording Web Vuser Scripts ............................... 326 About Recording Web Vuser Scripts .............................................. 327 Recording a Browser Session ........................................................ 328 Inserting Transactions .................................................................... 331 Inserting Rendezvous Points.......................................................... 334 Chapter 20: Configuring Web Run-Time Settings .................... 336 About Configuring Web Run-Time Settings.................................... 337 Performance Settings ..................................................................... 339 HTTP Settings ................................................................................ 342 Timing Settings............................................................................... 344 Server Settings ............................................................................... 347
In

Find

?

Click a page

Creating Vuser Scripts

x

Table of Contents

Chapter 21: Running Web Vuser Scripts .................................. 349 About Running Web Vuser Scripts ................................................. 350 Running a Web Vuser Script Using QuickTest............................... 351 Displaying a Run-Time Browser during Script Execution ............... 354 Chapter 22: Modifying Web Vuser Scripts ................................ 355 About Modifying a Web Vuser Script.............................................. 356 Modifying Step Properties .............................................................. 357 Adding a Step to a Vuser Script ..................................................... 376 Renaming a Step in a Vuser Script ................................................ 381 Deleting a Step from a Vuser Script ............................................... 382 Chapter 23: Parameterizing a Web Vuser Script ...................... 383 About Parameterizing a Script........................................................ 384 Introducing Data-table Parameterization ........................................ 386 Specifying the Arguments to Parameterize .................................... 388 Replacing Parameterized Arguments with Constants .................... 391 Automatically Specifying Parameterized Arguments...................... 393 Editing Information in the Data Table ............................................. 395

Find

?

Click a page

Creating Vuser Scripts

xi

Table of Contents

PART IX: B AAN VU SER SCRIPTS Chapter 24: Creating Baan Vuser Scripts ................................. 397 About Developing Baan Vuser Scripts ........................................... 398 Getting Started with Baan Vusers .................................................. 399 Baan Functions............................................................................... 400 Creating a Baan Vuser Script ......................................................... 405 Understanding Baan Vuser Scripts ................................................ 407 Customizing Baan Vuser Scripts .................................................... 409 PART X: JAVA VUSER SCRIPT S Chapter 25: Creating Java Vuser Scripts .................................. 414 About Developing Java Vuser Scripts ............................................ 415 Getting Started with Java Vusers ................................................... 416 Java Functions ............................................................................... 418 Creating a Java Vuser Script.......................................................... 424 Understanding Java Vuser Scripts ................................................. 426 Replaying Java Vuser Scripts......................................................... 427 Understanding the GUI Map........................................................... 429
In

Find

?

Click a page

Creating Vuser Scripts

xii

Table of Contents

PART XI: GUI VUSER SCRIPTS Chapter 26: Developing GUI Vuser Scripts............................... 432 About Developing GUI Vuser Scripts ............................................. 433 Introducing GUI Vusers .................................................................. 434 Understanding GUI Vuser Technology........................................... 435 Getting Started with GUI Vusers .................................................... 441 Using WinRunner and VXRunner to Create GUI Vuser Scripts .... 443 Measuring Server Performance: Transactions ............................... 445 Generating Heavy User Load: Rendezvous Points ........................ 447 Understanding GUI Vuser Scripts .................................................. 448 Using LoadRunner Functions in GUI Vuser Scripts ....................... 450 Sending Messages to the Controller .............................................. 451 Obtaining Information about Vusers and Hosts.............................. 453 P A R T XI I : A P P EN D IX E S Appendix A: Configuring VuGen ............................................... 456 Appendix B: Calling External Functions .................................... 463 Loading a DLL—Locally ................................................................. 464 Loading a DLL—Globally................................................................ 466 Click a page

Find

?

Creating Vuser Scripts

xiii

Table of Contents

Appendix C: Programming Scripts on UNIX Platforms ............ 468 Generating Templates ................................................................... 470 Programming Vuser Actions into a Script....................................... 471 Configuring Vuser Run-Time Settings ............................................ 474 Defining Transactions and Rendezvous Points.............................. 482 Compiling Scripts............................................................................ 483

In

Index .............................................................................................. 485

Find

?

Click a page

Creating Vuser Scripts

xiv

Welcome to LoadRunner

0
Welcome to LoadRunner

Welcome to LoadRunner, Mercury Interactive’s tool for testing the performance of client/server systems. LoadRunner stresses your entire client/server system to isolate and identify potential client, network, and server bottlenecks. LoadRunner enables you to test your system under controlled and peak load conditions. To generate load, LoadRunner runs thousands of Virtual Users that are distributed over a network. Using a minimum of hardware resources, these Virtual Users provide consistent, repeatable, and measurable load to exercise your client/server system just as real users would. LoadRunner’s in-depth reports and graphs provide the information that you need to evaluate the performance of your client/server system.

Find

?

xv

Welcome to LoadRunner

Online Resources
LoadRunner includes the following online tools: Read Me First provides last-minute news and information about LoadRunner. Books Online displays the complete documentation set in PDF format. Online books can be read and printed using Adobe Acrobat Reader 3.01, which is included in the installation package. Check Mercury Interactive’s Customer Support web site for updates to LoadRunner online books. LoadRunner Online Function Reference gives you online access to all of LoadRunner’s functions that you can use when creating Vuser scripts, including examples of how to use the functions. Check Mercury Interactive’s Customer Support site for updates to the LoadRunner Online Function Reference. LoadRunner Context Sensitive Help provides immediate answers to questions that arise as you work with LoadRunner. It describes dialog boxes, and shows you how to perform LoadRunner tasks. Check Mercury Interactive’s Customer Support web site for updates to LoadRunner help files. Technical Support Online uses your default web browser to open Mercury Interactive’s Customer Support web site.

Find

?

Creating Vuser Scripts

xvi

Welcome to LoadRunner

Support Information presents the locations of Mercury Interactive’s Customer Support web site and home page, the e-mail address for sending information requests, the name of the relevant news group, the location of Mercury Interactive’s public FTP site, and a list of Mercury Interactive’s offices around the world. Mercury Interactive on the Web uses your default web browser to open Mercury Interactive’s home page.

Find

?

Creating Vuser Scripts

xvii

Welcome to LoadRunner

LoadRunner Documentation Set
LoadRunner is supplied with a set of documentation that describes how to:

• • •

install LoadRunner create Virtual User scripts use the LoadRunner Controllers
Find

?

Creating Vuser Scripts

xviii

Welcome to LoadRunner
The following diagram shows the structure of the LoadRunner documentation set:

Controller
User’s Guide (Windows)

Controller
User’s Guide (UNIX)

You are here
Creating Vuser Scripts

Find

?

Creating GUI Vuser Scripts (UNIX) Creating Vuser Scripts

WinRunner User’s Guide

Creating RTE Vuser Scripts (UNIX) xix

Welcome to LoadRunner

Using the LoadRunner Documentation Set
The LoadRunner documentation set consists of one installation guide, two Controller user’s guides, and four guides for creating Virtual User scripts.

Installation Guide
For instructions on installing LoadRunner, refer to the Installing LoadRunner guide. The installation guide explains how to install:

• •

the LoadRunner Controller—either on a Windows-based or on a UNIX-based machine Virtual User components—for both Windows and UNIX platforms

Find

?

Note: The installation process that you follow depends on the type of LoadRunner Controller that you install. The Controller can be either Windows-based or UNIXbased. Refer to the Installing LoadRunner guide for details.

Creating Vuser Scripts

xx

Welcome to LoadRunner

Controller User’s Guides
The LoadRunner documentation pack includes two Controller user’s guides: The LoadRunner Controller User’s Guide (Windows) describes how to create and run LoadRunner scenarios using the LoadRunner Controller in a Windows environment. The Vusers can run on both UNIX and Windows-based platforms. The LoadRunner Controller User’s Guide (UNIX) describes how to create and run LoadRunner scenarios using the LoadRunner Controller in a UNIX environment. The Vusers can run on both UNIX and Windows-based platforms. Both of the Controller user’s guides present overviews of the LoadRunner testing process. Note that if you are using a Windows-based Controller, always refer to the LoadRunner Controller User’s Guide (Windows); if you are using a UNIX-based Controller, always refer to the LoadRunner Controller User’s Guide (UNIX).

Find

?

Creating Vuser Scripts

xxi

Welcome to LoadRunner

Guides for Creating Vuser Scripts
The LoadRunner documentation pack has four guides that describe how to create Vuser scripts: The Creating Vuser Scripts guide describes how to create all types of Vuser scripts. When necessary, use the following three guides and the TSL Online Reference in conjunction with this document.

The WinRunner User’s Guide describes in detail how to use WinRunner to create GUI Vuser scripts. The resulting Vuser scripts run on Windows platforms. The TSL Online Reference should be used in conjunction with this document. The Creating GUI Virtual User Scripts (UNIX) guide describes how to create GUI Vuser scripts using VXRunner, the enhanced version of XRunner. The resulting Vuser scripts run on UNIX platforms. The TSL Online Reference should be used in conjunction with this document. The Creating RTE Virtual User Scripts (UNIX) guide describes how to create RTE Vuser scripts that run on UNIX platforms.

Find

?

Creating Vuser Scripts

xxii

Welcome to LoadRunner

For information on
Installing LoadRunner The LoadRunner testing process Creating Vuser scripts

Look here... Installing LoadRunner guide LoadRunner Controller User’s Guide (Windows) LoadRunner Controller User’s Guide (UNIX) Creating Vuser Scripts guide
Find

Creating and running scenarios, and analyzing results using a: Windows-based Controller UNIX-based Controller

LoadRunner Controller User’s Guide (Windows) LoadRunner Controller User’s Guide (UNIX)

?

Creating Vuser Scripts

xxiii

Welcome to LoadRunner

Typographical Conventions
This book uses the following typographical conventions: Bold Bold text indicates function names and the elements of the functions that are to be typed in literally.

Italics
Helvetica [ ] {} ...

Italic text indicates variable names and book names.
The Helvetica font is used for examples and statements that are to be typed in literally. Square brackets enclose optional parameters. Curly brackets indicate that one of the enclosed values must be assigned to the current parameter. In a line of syntax, three dots indicate that more items of the same format may be included. In a program example, three dots are used to indicate lines of a program that have been intentionally omitted. A vertical bar indicates that either of the two options separated by the bar should be selected.

Find

?

|

Creating Vuser Scripts

xxiv

Part I

Introducing Vuser Scripts
Find

?

Creating Vuser Scripts

Chapter , page 1

Introducing Vuser Scripts
Developing Vuser Scripts
1 Developing Vuser Scripts

LoadRunner emulates an environment in which thousands of users work with a client/server system concurrently. To do this, LoadRunner replaces the human user with a virtual user (Vuser). The actions that a Vuser performs are described in a Vuser script. LoadRunner supplies a variety of tools to help you develop your Vuser scripts. This chapter includes:

In

• • • •

Find

Introducing Vusers Looking at Vuser Types Developing Vuser Scripts Using This Guide

?

Creating Vuser Scripts

Chapter 1, page 2

Introducing Vuser Scripts • Developing Vuser Scripts

Introducing Vusers
LoadRunner replaces human users with virtual users or Vusers. Vusers emulate the actions of human users by performing typical business processes. Each action that a Vuser performs submits input to the client/server system. By increasing the number of Vusers, you increase the load on the system. While a workstation accommodates only a single human user, many Vusers can run concurrently on a single workstation.
Find

To emulate conditions of heavy user load, you create a large number of Vusers that perform a series of tasks. For example, you can observe how a server behaves when one hundred Vusers simultaneously withdraw cash from a bank’s ATMs. Using LoadRunner, you divide your client/server performance testing requirements into scenarios. A scenario defines the events that occur during each testing session. Thus, for example, a scenario defines and controls the number of users to emulate, the actions that they perform, and the machines on which they run their emulations.

?

Creating Vuser Scripts

Chapter 1, page 3

Introducing Vuser Scripts • Developing Vuser Scripts
LoadRunner has a variety of Vuser types, each type suited to a particular load testing environment. This enables you to use Vusers to accurately model and emulate real world situations. The actions that a Vuser performs during the scenario are described in a Vuser script. The Vuser scripts include functions that measure and record the performance of the server during the scenario. Each Vuser type requires a particular type of Vuser script. Creating the Vuser scripts required for a scenario is part of the LoadRunner testing process. The chart below shows the five steps of the LoadRunner testing process. This guide describes Step II, “Creating Vuser Scripts.” For details about the other steps, refer to your LoadRunner Controller User’s Guide.

In

Find

St ep I

Plan n in g t h e Test

?

St ep II

Cr eat in g Vuser Scr i p t s

St ep III

Cr eat in g t h e Scen ar io

St ep IV

Run n i n g t h e Scen ar i o

St ep V

An al yzi n g Test Result s

Creating Vuser Scripts

Chapter 1, page 4

Introducing Vuser Scripts • Developing Vuser Scripts

Looking at Vuser Types
LoadRunner provides a variety of Vuser technologies that enable you to generate server load when using different types of client/server architectures. Each Vuser technology is suited to a particular architecture, and results in a specific type of Vuser. For example, you use RTE Vusers to operate terminal emulators; TUXEDO Vusers to emulate TUXEDO clients communicating with a TUXEDO application server; Web Vusers to emulate users operating Web browsers. The various Vuser technologies can be used alone or together, to create effective load testing scenarios. The following table summarizes the use of the various Vuser types:
Vuser Type Used to Emulate ... a database (CtLib, DbLib, Informix, Oracle, and ODBC) application accessing a server. Database Vusers use API calls to directly access a server. a TUXEDO client communicating with a TUXEDO application server. TUXEDO Vusers use API calls to directly access a server. a client application communicating with a server using the Advanced Program to Program Communication (APPC) protocol. APPC Vusers use API calls to directly access the server.

Find

?

Database

TUXEDO

APPC

Creating Vuser Scripts

Chapter 1, page 5

Introducing Vuser Scripts • Developing Vuser Scripts

In

Vuser Type

Used to Emulate ... a client application communicating with a server using the Windows Sockets protocol. Windows Sockets Vusers use API calls to directly access a server. a Baan session, together with it’s graphical user interface. a user operating a Java applet or application, together with its graphical user interface. a Windows-based terminal emulator application. a UNIX-based terminal emulator application. a Web browsing session. a Windows-based application, together with its graphical user interface. a UNIX-based application, together with its graphical user interface. Find

Windows Sockets

Baan Java RTE (Windows) RTE (UNIX) Web GUI (Windows) GUI (UNIX)

?

Creating Vuser Scripts

Chapter 1, page 6

Introducing Vuser Scripts • Developing Vuser Scripts

Developing Vuser Scripts
The structure and content of a Vuser script differ from one Vuser type to another. For example, Database Vuser scripts always have three sections, are written in a code that resembles C, and include SQL calls to a database server. In contrast, GUI Vuser scripts have only one section, and are written in TSL (test script language). The following diagram outlines the process of developing a Vuser script.
Find
Recor d a b asic Vuser scr ip t

?

En h an ce/ ed i t t h e Vuser scr ip t

Con f i g ur e Run -Ti m e set t in g s

Run t h e Vuser scr i p t in st an d -alon e m od e

In cor p or at e t h e Vuser scr ip t in t o a Load Run n er scen ar io

Creating Vuser Scripts

Chapter 1, page 7

Introducing Vuser Scripts • Developing Vuser Scripts

You begin the process of developing a Vuser script by recording a basic script. LoadRunner provides you with a number of tools for recording Vuser scripts (see the table below for a list of the tools). You enhance the basic script by adding control-flow structures, and by inserting transactions and rendezvous points into the script. You then configure the run-time settings. The run-time settings include loop, log, and timing information, and define how the Vuser will behave when it executes the Vuser script. To verify that the script runs correctly, you run it in stand-alone mode. When your script runs correctly, you incorporate it into a LoadRunner scenario.

In

Find

?

Creating Vuser Scripts

Chapter 1, page 8

Introducing Vuser Scripts • Developing Vuser Scripts

You use the following LoadRunner tools to develop Vuser scripts: LoadRunner’s primary tool for developing Vuser scripts. The Vuser Script Generator, also known as VuGen, is a Windowsbased application which enables you to develop a wide variety of Vuser scripts. VuGen not only records scripts, but can also run them. Many of the scripts generated by VuGen can be run on both Windows and UNIX platforms. VuGen creates Database, Tuxedo, Windows Sockets, APPC, Baan, Java and RTE (Windows) Vuser scripts. A UNIX-based application used to develop only (Remote Terminal Emulator) RTE Vuser scripts that run on UNIX platforms. Mercury Interactive’s tool for automated testing of Windowsbased GUI applications. You enhance the test scripts that WinRunner generates to produce GUI Vuser scripts that run on Windows platforms. An enhanced version of XRunner, Mercury Interactive’s tool for automated testing of UNIX-based GUI applications. You enhance the test scripts that VXRunner generates to produce GUI Vuser scripts that run on UNIX platforms. An extension of SiteManager, Mercury Interactive's comprehensive web site management tool. QuickTest enables you to quickly and easily create Web Vuser scripts while navigating your web site. Find

VuGen

RTEGen

?

WinRunner

VXRunner

QuickTest

Creating Vuser Scripts

Chapter 1, page 9

Introducing Vuser Scripts • Developing Vuser Scripts

Using This Guide
In

This guide is divided into three sections:

• • •

Part I, “Introducing Vuser Scripts,” is applicable to all types of Vuser scripts. Part II, “Working with VuGen,” is applicable only to those Vuser scripts that are recorded and/or run using VuGen. Part II is not applicable when developing RTE (UNIX) and GUI (both Windows and UNIX) Vuser scripts. Parts III to IX apply to specific Vuser script types (as shown below).
Find

?

Creating Vuser Scripts

Chapter 1, page 10

Introducing Vuser Scripts • Developing Vuser Scripts
The table below summarizes the parts applicable to each Vuser type:
Vuser Type Database (CtLib, DbLib, Informix, Oracle, and ODBC) TUXEDO Windows Sockets APPC RTE (Windows) RTE (UNIX) Web Baan Java GUI (Windows) GUI (UNIX) Read the following... Part I, Part II, & Part III Part I, Part II, & Part IV Part I, Part II, & Part V Part I, Part II, Part VI Part I, Part II, & Part VII Part I & Chapter 13 Part I, Part II, & Part VIII Part I, Part II, Part IX Part I, Part II, Part X Part I & Part XI Part I & Part XI Find

?

Note that to develop RTE (UNIX) and GUI Vuser scripts, you need to refer to additional guides: GUI (Windows): GUI (UNIX): RTE (UNIX): WinRunner User’s Guide Creating GUI Virtual User Scripts (UNIX) guide Creating RTE Virtual User Scripts (UNIX) guide

Creating Vuser Scripts

Chapter 1, page 11

Part II
In

Working with VuGen
Find

?

Creating Vuser Scripts

Chapter , page 12

Working with VuGen
Introducing VuGen
2 Introducing VuGen

The Vuser Script Generator, VuGen, enables you to record and run Vuser scripts for a variety of application types and communication protocols. This chapter describes:

In

• • • •

Recording Vuser Scripts with VuGen Running Vuser Scripts with VuGen Understanding VuGen Code Using General Vuser Functions This chapter applies to APPC, Baan, Database, RTE (Windows), Java, TUXEDO, Web, and Windows Sockets Vuser scripts only.
Find

?

Creating Vuser Scripts

Chapter 2, page 13

Working with VuGen • Introducing VuGen

About VuGen
In

The Vuser Script Generator, also known as VuGen, is LoadRunner’s primary tool for developing Vuser scripts. VuGen is a Windows-based application that not only records scripts, but also runs them. Running scripts from VuGen is useful when debugging. It enables you to emulate how a Vuser script will run when executed in a LoadRunner scenario from the Controller.

Note: VuGen records sessions on Windows platforms only. However, a recorded Vuser script can run on either a Windows or a UNIX platform.

Find

?

When you record a Vuser script, VuGen generates and inserts various functions into the script. These functions include general Vuser functions and protocolspecific functions. The general Vuser functions, also known as LR functions, allow you to obtain information about Vusers running in a scenario. The protocol-specific functions are specific to the Vuser type. For example, VuGen inserts LRT functions into a TUXEDO script, and LRS functions into a Windows Sockets script. The general Vuser functions and the protocol-specific functions together form the LoadRunner API and enable Vusers to communicate directly with a server.

Creating Vuser Scripts

Chapter 2, page 14

Working with VuGen • Introducing VuGen

Recording Vuser Scripts with VuGen
You use VuGen to develop a Vuser script by recording a user performing typical business processes on a client application. VuGen creates the script by recording the activity between the client and the server. For example, in database applications, VuGen monitors the client end of the database and traces all the requests sent to, and received from, the database server.

o

Find

?
client running an application VuGen Server

Instead of manually creating a Vuser script by programming the application’s API function calls to the server, you use VuGen to:

• • •

monitor the communication between the application and the server generate the required function calls insert the generated function calls into a Vuser script

Creating Vuser Scripts

Chapter 2, page 15

Working with VuGen • Introducing VuGen

VuGen greatly simplifies the task of creating Vuser scripts by reducing the need for manual programming. Each Vuser script that you create with VuGen can communicate directly with a server by executing calls to the server API—without relying on client software. You can therefore use Vusers to check server performance even before the user interface of the client software has been fully developed.

In

Find

?
client running an application Server

In addition, when a Vuser communicates directly with a server, system resources are not used on a user interface. This lets you run a large number of Vusers simultaneously on a single workstation. This in turn allows you to use only a few testing machines to emulate large server loads.

Creating Vuser Scripts

Chapter 2, page 16

Working with VuGen • Introducing VuGen

Running Vuser Scripts with VuGen
In order to perform load testing with your Vuser script, you need to incorporate the script into a LoadRunner scenario. Before integrating the script into a scenario, you can check the script’s functionality by running it from VuGen. If the script execution is successful, you can then incorporate it into a scenario. For more information on LoadRunner scenarios, refer to your LoadRunner Controller User’s Guide. Before you run a Vuser script, you set the run-time settings. These settings include the number of loops, the pacing, and the think time that will be applied to the Vuser when the script is run. The run-time settings enable VuGen to run a script the same way as the Controller does. For more information on configuring run-time settings, see Chapter 6, Configuring Run-Time Settings. When you run a recorded script, the script is processed by an interpreter and then executed. You do not need to compile a script. If you modify a script, any syntax errors introduced into the script are noted by the interpreter. You can also call external functions from your script that can be recognized and executed by the interpreter. For more information, see Appendix B, Calling External Functions. Advanced users can compile a recorded script to create an executable program. For more information, see Appendix A, Configuring VuGen.

Find

?

Creating Vuser Scripts

Chapter 2, page 17

Working with VuGen • Introducing VuGen

Understanding VuGen Code
In

When you record a script, VuGen generates Vuser functions and inserts them into a Vuser script. There are two types of Vuser functions: general Vuser functions and Vuser specific functions.

General Vuser Functions
The general Vuser functions are also called LR functions because they always have an lr prefix. These functions can be used in any type of Vuser script. They enable you to get run-time information about a Vuser, its Vuser Group, and its host. For example, the lr_start_transaction function marks the beginning of a transaction. You can also use these functions to send messages to the output, indicating an error or a warning. Online Function Reference See Using General Vuser Functions on page 21 for a list of LR functions, and for details refer to the LoadRunner Online Function Reference (available from the VuGen Help menu).
Find

?

Creating Vuser Scripts

Chapter 2, page 18

Working with VuGen • Introducing VuGen

Protocol-Specific Functions
In addition to the general Vuser functions, VuGen also generates and inserts protocol-specific functions into a Vuser script while you record. The protocolspecific functions are particular to the type of Vuser that you are recording: VuGen inserts LRT functions into a TUXEDO script; LRS functions into a Windows Sockets script; LRD functions into a Database script; WEB functions into a Web script; LRA functions into an APPC script. Online Function Reference Refer to the LoadRunner Online Function Reference for details of the protocolspecific functions.
Find

?

Creating Vuser Scripts

Chapter 2, page 19

Working with VuGen • Introducing VuGen
The following segment from a Database Vuser script uses a number of LRD functions: /* * Code generated from recorded SQL by DB Virtual User Generator * Session was recorded on: Wed Feb 19 09:06:23 1998 */ #include "vdf.h" #include "print.inl" int LR_FUNC vuser_init(LR_PARAM p) { lrd_init(&InitInfo, DBTypeVersion); lrd_open_connection(&Con1, LRD_DBTYPE_CTLIB, "s1", "tiger", "hp1", "", 0, 0, 0); lrd_open_cursor(&Csr1, Con1, 0); lrd_open_cursor(&Csr2, Con1, 0); lrd_stmt(Csr2, "select parameter, value from v$nls_parameters " " where .. . .);. . . VuGen generates Vuser scripts in C. All standard C conventions apply to the scripts, including control flow and syntax. You can add comments and conditional statements to the script just as you do in other C programs. You declare and define variables using regular C conventions.
In

Find

?

Note: The C Interpreter used by LoadRunner accepts the ANSI C language. No Microsoft extensions to ANSI C are supported. For more information about using C functions in your scripts, refer to Chapter 4, Enhancing Vuser Scripts.

Creating Vuser Scripts

Chapter 2, page 20

Working with VuGen • Introducing VuGen

Using General Vuser Functions
You can enhance a Vuser script by adding general Vuser functions. Only a few of the general Vuser functions are generated while you record with VuGen—the remaining functions must be manually programmed into a script. Each general Vuser function has an lr prefix.

Transaction and Rendezvous Functions
When you record a script with VuGen, you can use the Recording toolbar to insert transaction and rendezvous functions into your script: lr_start_transaction lr_end_transaction lr_rendezvous Marks the beginning of a LoadRunner transaction. Marks the end of a LoadRunner transaction. Sets a rendezvous point in a Vuser script.

Find

?

Creating Vuser Scripts

Chapter 2, page 21

Working with VuGen • Introducing VuGen Vuser Think Time Functions
While you record a Vuser script, VuGen inserts a Think Time statement each time you pause between actions: lr_think_time Pauses script execution to emulate think time— the time a real user pauses to think between actions.
In

Command Line Parsing Functions
lr_get_attrib_double lr_get_attrib_long lr_get_attrib_string Retrieves a double type variable used on the LoadRunner command line. Retrieves a long type variable used on the LoadRunner command line. Retrieves a string used on the command line.
Find

?

Informational Functions
lr_user_data_point lr_whoami lr_get_host_name lr_get_master_host_name Records a user-defined data sample. Returns information about a Vuser to the Vuser script. Returns the name of the host executing the Vuser script. Returns the name of the machine running the LoadRunner Controller.

Creating Vuser Scripts

Chapter 2, page 22

Working with VuGen • Introducing VuGen

String Functions
lr_eval_string lr_save_string lr_save_var lr_save_datetime Replaces a parameter with its current value. Saves a null-terminated string to a parameter. Saves a variable length string to a parameter. Saves the current date and time to a parameter.

Message Functions
lr_log_message lr_output_message lr_set_debug_message lr_error_message Sends a message to a log file. Sends a message to the Output window. Sets a debug message class. Sends an error message to the Output window.
Find

?

Run-Time Functions
lr_peek_events Indicates a point to search for LoadRunner events.

Creating Vuser Scripts

Chapter 2, page 23

Working with VuGen
Recording with VuGen
3 Recording with VuGen

VuGen creates a Vuser script by recording the communication between a client application and a server. This chapter describes:

In

• • •

Creating a Vuser Script Vuser Script Sections Recording Vuser Scripts This chapter applies to APPC, Database, RTE (Windows), TUXEDO, Baan, Java, and Windows Sockets Vuser scripts only.
Find

?

Creating Vuser Scripts

Chapter 3, page 24

Working with VuGen • Recording with VuGen

About Recording with VuGen
VuGen enables you to create a Vuser script by recording actions from an application. When you run the recorded script, it emulates activity between the client and server. VuGen eliminates the need to manually program Vuser scripts. Each Vuser script that you create using VuGen contains three sections: vuser_init, Actions, and vuser_end. During recording, you can select the section of the script into which VuGen will insert the recorded functions. In general, you record a log in to a server into the vuser_init section; client activity into the Actions section; and the logoff procedure into the vuser_end section. While recording, you can insert transactions and rendezvous points. For details, see Chapter 4, Enhancing Vuser Scripts.

Find

?

Creating Vuser Scripts

Chapter 3, page 25

Working with VuGen • Recording with VuGen

Creating a Vuser Script
In

Before you begin recording, you must create a Vuser script. If you are recording a Java, Baan, or RTE application, you can also record into an existing script. To create a new Vuser script: 1 Start VuGen. Select Start > Programs > LoadRunner > Virtual User Generator. The VuGen window opens.
Find

?

Creating Vuser Scripts

Chapter 3, page 26

Working with VuGen • Recording with VuGen

2 Click the New button. The New Virtual User dialog box opens with a list of the supported Vuser script types.

Find

3 Select a Vuser script type and then click OK.

?

Creating Vuser Scripts

Chapter 3, page 27

Working with VuGen • Recording with VuGen

Vuser Script Sections
In

Each Vuser script that you create using VuGen contains three sections: vuser_init, Actions, and vuser_end. Before and during recording, you can select the section of the script into which VuGen will insert the recorded functions. The following table shows when to record into each section, and when each section is executed.
Script Section Used when recording... a login to a server client activity a log off procedure Is played back when... the Vuser is initialized (loaded) the Vuser is in “Running” status the Vuser finishes or is stopped Find

vuser_init Actions vuser_end

?

Note that the vuser_init and vuser_end sections are not repeated when you run multiple iterations of a Vuser script—only the Actions is repeated. For more information on the iteration settings, see Chapter 6, Configuring Run-Time Settings.

Creating Vuser Scripts

Chapter 3, page 28

Working with VuGen • Recording with VuGen

Recording Vuser Scripts
The recording procedure differs slightly between protocols. For Baan and Java Vusers, see page 35. For RTE Vusers, see Chapter 15, Recording RTE Vuser Scripts. For all other Vusers types, see the section below. To record for APPC, Database, TUXEDO, or Windows Socket Vusers: 1 If the Start Recording dialog box is not open, click the Start Recording button. The Start Recording dialog box opens.
Find

?

2 Specify an application to record. To locate your application, click Browse to the right of the Program to Record box.

Creating Vuser Scripts

Chapter 3, page 29

Working with VuGen • Recording with VuGen

Note that you can add command line parameters to your application by filling them in manually in the Program to Record box, to the right of the application name. For example: f:\orant\bin\plus32.exe peter@neptune starts plus32.exe, and connects the user Peter to the server Neptune. 3 Specify a working directory for your application. 4 In the Start Recording into Section box, select the section in which you want to begin recording. The available sections are vuser_init, Actions, and vuser_end. 5 Click OK to begin recording. VuGen starts your application and the Recording toolbar appears.

In

Find

?

Perform typical actions within your application. To switch sections during recording, use the floating toolbar.

Creating Vuser Scripts

Chapter 3, page 30

Working with VuGen • Recording with VuGen

6 After recording typical user actions, select the vuser_end section from the floating toolbar.

7 Perform the log off procedure. VuGen records the procedure into the vuser_end section of the script.

Find

?

Creating Vuser Scripts

Chapter 3, page 31

Working with VuGen • Recording with VuGen
8 Click Stop Recording on the Recording toolbar. The main VuGen window displays all the recorded statements.
In

Find

?

9 Click Save to save the recorded session. The Save As dialog box opens (for new Vuser scripts only). Specify a script name.

Note: Do not name the script init, run or end, since these names are used by VuGen.

Creating Vuser Scripts

Chapter 3, page 32

Working with VuGen • Recording with VuGen

After recording a script, you can manually edit the script in VuGen’s main window. VuGen creates a series of configuration, data, and source code files during recording. These files are used to execute the Vuser actions. You can display the contents of each of these sections in the main VuGen window. You can display the contents of only a single section at a time. To display a section, highlight its name in the Sections box.

Find

?

Creating Vuser Scripts

Chapter 3, page 33

Working with VuGen • Recording with VuGen

In the following example, the Actions section of a Database Vuser script is displayed.

In

Find

?

Recording for Baan and Java Vusers
The procedure for recording Baan and Java Vusers differ slightly from other Vusers. Refer to Chapter 24, Creating Baan Vuser Scripts or Chapter 25, Creating Java Vuser Scripts for additional information about recording these Vusers.

Creating Vuser Scripts

Chapter 3, page 34

Working with VuGen • Recording with VuGen

After creating a new Baan or Java script, perform the following procedure: To record for Baan and Java Vusers: 1 In the Sections box, select the section into which you want to record. The available sections are vuser_init, Actions, and vuser_end.

Find

?

Creating Vuser Scripts

Chapter 3, page 35

Working with VuGen • Recording with VuGen

2 Click the Start Recording button. The Start Recording dialog box opens.
In

Find

3 Specify an application to record. To locate your application, click Browse to the right of the Program to Record box. Note that you can add command line parameters to your application by manually entering them in the Program to Record box, to the right of the application name. For example: "C:\jdk115\bin\javac.exe D:\AWT-Demo\Periodic.java” starts the Periodic.java application. 4 Specify a working directory for your application. 5 Click OK to close the dialog box and begin recording.

?

Creating Vuser Scripts

Chapter 3, page 36

Working with VuGen • Recording with VuGen

6 Perform all of the desired user actions. When you complete all of the actions, select the vuser_end section and perform the log off procedure. 7 Click Stop Recording on the Recording toolbar. The main VuGen window displays all the recorded statements. 8 Click Save to save the recorded session. The Save As dialog box opens (for new Vuser scripts only). Specify a script name.

Note: Do not name the script init, run or end, since these names are used by VuGen.

Find

?
After recording a script, you can manually edit the script in VuGen’s main window. VuGen creates a series of configuration, data, and source code files during recording. These files are used to execute the Vuser actions. After recording, you can view the contents of each of the vuser_init, Actions, and vuser_end sections in the main VuGen window. To display a section, highlight its name in the Sections box.

Creating Vuser Scripts

Chapter 3, page 37

Working with VuGen
Enhancing Vuser Scripts
4 Enhancing Vuser Scripts

You can enhance a Vuser script—either during and after recording—by adding Vuser functions. The Vuser functions can help measure server performance, control server load, provide more information about a Vuser, about the scenario, and can help you detect problems during script execution. This chapter describes:

In

• • • • • • •

Inserting Transactions Inserting Rendezvous Points Inserting Comments Obtaining Vuser Information Sending Messages to Output Handling Command Line Arguments Using C Functions in Your Script This chapter applies to APPC, Baan, Java, Database, RTE (Windows), TUXEDO, Web, and Windows Sockets Vuser scripts only.
Find

?

Creating Vuser Scripts

Chapter 4, page 38

Working with VuGen • Enhancing Vuser Scripts

About Enhancing Scripts
When you create a Vuser script, you can enhance its capabilities by adding Vuser functions. For example, you can add debugging code, or functions that retrieve runtime information about the Vusers participating in the scenario. VuGen helps you generate most of the Vuser functions by recording from your application—other functions you must manually type into the Vuser script. For the syntax of all the functions, refer to the LoadRunner Online Function Reference (available from the VuGen Help menu).
Find

Online Function Reference

LoadRunner provides several libraries whose functions enhance a script. You can use general Vuser functions or functions from the library specific to your application—such as Oracle, CtLib, ODBC, TUXEDO, Web, or Windows Sockets. In addition, you can enhance your Vuser script with standard ANSI C functions. Online Function Reference This chapter discusses the use of only the most common Vuser functions. For additional information about Vuser functions, refer to the LoadRunner Online Function Reference (available from the VuGen Help menu).

?

Creating Vuser Scripts

Chapter 4, page 39

Working with VuGen • Enhancing Vuser Scripts

Inserting Transactions
In

You define transactions to measure the performance of the server. Each transaction measures the time it takes for the server to respond to specified Vuser requests. These requests can be simple tasks such as waiting for a response for a single query, or complex tasks, such as submitting several queries and generating a report. To measure a transaction, you insert Vuser functions to mark the beginning and end of a task. Within a script, you can mark an unlimited number of transactions for analysis, each with a different name. During scenario execution, the Controller measures the time that it takes to perform each transaction. After the scenario run, you analyze the server’s performance per transaction using LoadRunner’s graphs and reports.

Find

?

Creating Vuser Scripts

Chapter 4, page 40

Working with VuGen • Enhancing Vuser Scripts

To mark the start of a LoadRunner transaction: 1 While recording a Vuser script, click the Start Transaction button on the Recording toolbar. The Start Transaction dialog box opens.

2 Type a transaction name in the Name box. Click OK to accept the transaction name. LoadRunner inserts an lr_start_transaction statement into the Vuser script. For example, the following function indicates the start of the trans1 transaction: lr_start_transaction(“trans1”);

Find

?

Note: You can insert transactions into your script after you complete a recording session by selecting Insert > Start Transaction from the VuGen menu.

Creating Vuser Scripts

Chapter 4, page 41

Working with VuGen • Enhancing Vuser Scripts

To mark the end of a transaction: 1 While recording a script, click the End Transaction button on the Recording toolbar. The End Transaction dialog box opens.

In

Find

2 Click the arrow for a list of open transactions. Select the transaction to close. Click OK to accept the transaction name. LoadRunner inserts an lr_end_transaction statement into the Vuser script. For example, the following function indicates the end of the trans1 transaction: lr_end_transaction(“trans1”, LR_AUTO);

?

Creating Vuser Scripts

Chapter 4, page 42

Working with VuGen • Enhancing Vuser Scripts

Inserting Rendezvous Points
To emulate heavy user load on your client/server system, you synchronize Vusers to perform a task at exactly the same moment. You ensure that multiple Vusers act simultaneously by creating a rendezvous point. When a Vuser arrives at the rendezvous point, it is held by the Controller until all Vusers participating in the rendezvous arrive. When the rendezvous conditions are met, the Vusers are released by the Controller. You designate the meeting place by inserting a rendezvous point into your Vuser script. When a Vuser executes a script and encounters the rendezvous point, script execution is paused and the Vuser waits for permission from the Controller to continue. After the Vuser is released from the rendezvous, it performs the next task in the script.
Find

?

Creating Vuser Scripts

Chapter 4, page 43

Working with VuGen • Enhancing Vuser Scripts

To insert a rendezvous point: 1 While recording a Vuser script, click the Rendezvous button on the Recording toolbar. The Rendezvous dialog box opens.
In

Find

2 Type a name for the rendezvous point in the Name box. Click OK to accept the rendezvous name. VuGen inserts an lr_rendezvous statement into the Vuser script. For example, the following function defines a rendezvous point named rendezvous1: lr_rendezvous(“rendezvous1”);

?

Note: You can insert rendezvous points into your script even after you complete a recording session, by selecting Insert > Rendezvous from the VuGen menu.

Creating Vuser Scripts

Chapter 4, page 44

Working with VuGen • Enhancing Vuser Scripts

Inserting Comments
VuGen allows you to insert comments between Vuser activities. You can insert a comment to describe an activity or to provide information about a specific operation. For example, if you are recording database actions, you could insert a comment to mark the first query, such as “This is the first query.” To insert a comment: 1 While recording a script, click the Comment button on the Recording tool bar. The Insert Comment dialog box opens.
Find

?

2 Type the comment into the text box.

Creating Vuser Scripts

Chapter 4, page 45

Working with VuGen • Enhancing Vuser Scripts

3 Click OK to insert the comment and close the dialog box. The text is placed at the current point in the script, enclosed by comment markers. The following script segment shows how a comment appears in a Vuser script: /* * This is the first query */

In

Find

Note: You can insert comments into your script even after you complete a recording session, by selecting Insert > Comment from the VuGen menu.

?

Creating Vuser Scripts

Chapter 4, page 46

Working with VuGen • Enhancing Vuser Scripts

Obtaining Vuser Information
You can add the following functions to your Vuser scripts to retrieve Vuser information: lr_whoami lr_get_host_name lr_get_master_host_name lr_get_attrib_string Returns the Vuser ID, Group, and scenario ID for a Vuser. Returns the name of the host for this Vuser. Returns the name of the LoadRunner Controller host. Returns a string containing command line argument values or run-time information such as the Vuser ID or the host name (as an alternate to the above functions).
Find

?

Online Function Reference

For more information about each of these functions, refer to the LoadRunner Online Function Reference (available from the VuGen Help menu).

Creating Vuser Scripts

Chapter 4, page 47

Working with VuGen • Enhancing Vuser Scripts

Sending Messages to Output
When you run a scenario, the Controller’s Output window displays valuable information about script execution. You can include statements in each script to send error and notification messages to the Controller—which the Controller will display in the Output window. For example, you could insert a message that displays the current state of the client application. You can also save these messages to a file.
In

Find

Note: Do not to send messages from within a transaction. Doing so lengthens the transaction execution time and may skew the actual transaction results.

?

You can use the following message functions in your Vuser scripts: lr_error_message lr_output_message lr_log_message Sends an error message to the output window. Sends a special notification to the output window. Sends an output message directly to a file, output.txt, located in the Vuser script directory. This function is useful in preventing output messages from interfering with TCP/IP traffic. Generates and prints formatted output to the Controller Vuser status area.

lr_vuser_status_message

Creating Vuser Scripts

Chapter 4, page 48

Working with VuGen • Enhancing Vuser Scripts

You can insert lr_output_message functions by using VuGen. For example, if you are recording database actions, you could insert a message to indicate the first query, “This is the first query.” To insert an lr_output_message function: 1 Choose Insert > Message. The Insert Message dialog box opens.

Find

?
2 Type the message into the Message box. 3 Click OK to insert the message and close the dialog box. An lr_output_message function is inserted at the current point in the script. Online Function Reference For more information about the message functions, refer to the LoadRunner Online Function Reference (available from the VuGen Help menu).

Creating Vuser Scripts

Chapter 4, page 49

Working with VuGen • Enhancing Vuser Scripts

Handling Command Line Arguments
In

You can pass values to a Vuser script at run-time by specifying command line arguments when you run the script. LoadRunner has three lr_get_attrib_ functions that allow you to read the command line arguments, and then pass the values into a Vuser script. The following lr_get_attrib_ functions exist: lr_get_attrib_double lr_get_attrib_long lr_get_attrib_string to retrieve double precision floating point type arguments to retrieve long integer type arguments to retrieve character strings
Find

?

Creating Vuser Scripts

Chapter 4, page 50

Working with VuGen • Enhancing Vuser Scripts

Your command line should have one of the following formats: test_name -argument argument_value -argument argument_value test_name /argument argument_value /argument argument_value where the arguments and their values are listed in pairs, after the test name. For example, test1 -host pc4 -loop 5 shows the command line string used to repeat test1 five times on the host pc4. For more information on the command line parsing functions, refer to the LoadRunner Online Function Reference (available from the VuGen Help menu). For details on including arguments on a command line, refer to your LoadRunner Controller User’s Guide.
Find

?

Online Function Reference

Creating Vuser Scripts

Chapter 4, page 51

Working with VuGen • Enhancing Vuser Scripts

Using C Functions in Your Script
In

VuGen generates Vuser scripts in C. All standard C conventions apply to the scripts, including control flow and syntax. You can add comments and conditional statements to the script just as you do in other C programs. You declare and define variables using regular C conventions. The C Interpreter used by LoadRunner accepts the standard ANSI C language. It does not support any Microsoft extensions to ANSI C. Before you add any C functions to your script, note the following limitations:
Find

• • • •

A Vuser script cannot pass the address of one of its functions as a callback to a library function stdargs, longjmp and alloca are not supported. No structure arguments or return types. (Pointer to structures are OK). string literals are read-only. Any attempt to write to a string literal will generate an access violation.

?

Creating Vuser Scripts

Chapter 4, page 52

Working with VuGen • Enhancing Vuser Scripts

Calling libc Functions
You can call libc functions, but since the interpreter used by LoadRunner does not support any Microsoft extensions to ANSI C, you cannot use Microsoft's include files. You can either write your own prototypes when necessary, or ask Mercury Customer Support to send you ANSI-compatible include files containing prototypes for libc functions.
Find

Linking Mode
The C interpreter used by LoadRunner uses a “lazy” linking mode in the sense that a function need not be defined at the start of a run, as long as it is defined before it is used. For example: lr_load_dll("mydll.dll"); myfun(); /* defined in mydll.dll -- can be called directly, immediately after myfun.dll is loaded. */

?

Creating Vuser Scripts

Chapter 4, page 53

Working with VuGen
Defining Parameters
5 Defining Parameters

When you record a process, VuGen generates a script containing the actual values entered during recording. Suppose you want to perform the script’s actions (query, submit, etc.) using different values than those recorded. To do this, you replace the recorded values with parameters, or you parameterize your script. This chapter describes:

In

• • • • •

Defining Parameters Understanding Parameter Types Updating Parameter Values for Files Updating Parameter Values for Internal Data Types Maintaining Parameters This chapter applies to APPC, Baan, Database, Java, RTE (Windows), TUXEDO, Web, and Windows Sockets Vuser scripts only.

Find

?

Creating Vuser Scripts

Chapter 5, page 54

Working with VuGen • Defining Parameters

About Defining Parameters
When you record a business process with VuGen, it records the actual values that you entered during the recording session. For example, in following database application, VuGen recorded a statement that populated the employees table with the id of 121 and the name “Tom”. lrd_stmt(Csr1, "insert into employees (id, name) values (121,'Tom')", ...);
Find

When you replay the script using multiple Vusers and loops, you do not want to repeatedly use the same values, 121 and Tom. Instead, you replace the constant values with parameters. lrd_stmt(Csr1,"insert into employees (id,name) values (<id>,<f_name>)". ); In subsequent runs, the Vuser substitutes the parameter with values from a source that you specify. The data source can be a file or other internally generated variables. For more information about data sources, see Understanding Parameter Types on page 61.

?

Creating Vuser Scripts

Chapter 5, page 55

Working with VuGen • Defining Parameters

By parameterizing a script, you reduce the size of the scripts. Another advantage of parameterization is the ability to input unique values. For example, certain database applications will not let the same user logon twice. If several Vusers try to log on using the same username, only one will succeed. If you parameterize the login information and assign unique values to each Vuser, all of them will be able to log on. To enable parameterization, you must:

In

• •

Define parameters in a parameter list. Replace the constant values with parameters.

Find

?

Creating Vuser Scripts

Chapter 5, page 56

Working with VuGen • Defining Parameters

Defining Parameters
To utilize parameterization, you must first define a parameter. You define a parameter in the Parameter List dialog box and you specify its name, source, and description. There is no limit to the number of parameters you can define for your script. To define and use a parameter: 1 Place the cursor on the text to parameterize and perform a right mouse click. 2 Select Replace with a New Parameter. The New Parameter dialog box opens.
Find

?

3 Type a name for the parameter in the Parameter Name box. 4 Select a parameter type from the menu list (File, Group Name, Host Name, Vuser ID, Date/Time, Random, Unique Number, or Iteration Number). For information on the data types and their properties, see Understanding Parameter Types on page 61.

Creating Vuser Scripts

Chapter 5, page 57

Working with VuGen • Defining Parameters

5 Click Properties. The Parameter List dialog box opens with the properties relevant for the parameter type.

In

Find

?

6 Enter the properties of the parameter. For more information, see Understanding Parameter Types on page 61.

Creating Vuser Scripts

Chapter 5, page 58

Working with VuGen • Defining Parameters

7 Click OK to close the Parameter List dialog box. VuGen replaces the text selected in your script with the parameter. 8 To replace a constant with a previously defined parameter, perform a right-click and select Replace with a Parameter. Choose a parameter from the pull-down list of parameters. Note that if you use this method to define a parameter, you cannot restore it to its original value. 9 For multiple occurrences of a constant value, place the cursor on the parameter and perform a right-click. Choose Replace More Occurrences. The Search and Replace dialog box opens. In the Find What box, enter the fixed value you want to replace. In the Replace with box, enter the parameter name in angle brackets. Check the appropriate boxes for matching whole words or case. Click Replace or Replace All.

Find

?

Use caution when using Replace All, especially when replacing number strings. VuGen changes all occurrences of the string.

Creating Vuser Scripts

Chapter 5, page 59

Working with VuGen • Defining Parameters

10 To restore a parameter to its original value, perform a right-click on the parameter and choose Restore Original Value. 11 To create a new parameter at any time, click the New Parameter button. The VuGen creates a parameter, but does not automatically replace any selected text. 12 To change the parameter’s properties at any time, click the Parameter List button. The Parameter List dialog box opens. To test your script using different parameter values, configure VuGen to perform multiple iterations. The script uses a different value for each iteration (if the Advance row each iteration option is enabled). You set the number of iterations in the run-time settings.

In

Find

?

Creating Vuser Scripts

Chapter 5, page 60

Working with VuGen • Defining Parameters

Understanding Parameter Types
When you define parameters you select a data type. The data type indicates the source of data. You can use data from a file (an existing file or one you create with VuGen) or data generated internally by VuGen. Data can be stored in local or global files. You can specify an existing file or create a new one with VuGen. LoadRunner retrieves data from the file during the scenario run. For more information about data files, see Data Files on page 72. Internal data is data that is generated automatically during scenario execution. The available internal data types are: group name, host name, Vuser ID, iteration number, date/time, random number, or unique number. For internal data types, you specify a format for the parameter. You can choose an existing format or specify a new one.

Find

?

Creating Vuser Scripts

Chapter 5, page 61

Working with VuGen • Defining Parameters

The formats indicate the length of parameter string and the text accompanying the parameter. During the scenario, LoadRunner displays the parameter in the specified format, always maintaining the specified length for the parameter. For example if you specified a format of %5d, (five digits to the left of the decimal point), a Vuser ID of 5 is displayed as 00005, padding the single digit with zeros. You can also specify a text string before and after the actual data. This text appears together with the parameter during the scenario execution. You can create your own format using a combination of string formats (for example %4d) and text. For example, you could create the following format for the Date/Time type: Month: %m Day:%d Year: %Y Once you create a format, you can save it to the list for future use. You can also edit or remove formats from the list.

In

Find

?

Creating Vuser Scripts

Chapter 5, page 62

Working with VuGen • Defining Parameters

Group Name
Group Name replaces the parameter with the Group name of the Vuser. You set a Group name when you create a scenario from the LoadRunner Controller. When you run a script from VuGen, the Group name is always None. When you select the Group Name type, the Format Properties tab opens.

Find

?

To set the format properties for the Group Name: 1 Select one of the available formats. 2 To specify text before or after the actual data, enter the text in the Text Format box.

Creating Vuser Scripts

Chapter 5, page 63

Working with VuGen • Defining Parameters

Host Name
Host Name replaces the parameter with the name of the Vuser’s host. You assign a host to Vusers through the Controller. When you select the Host Name type, the Format Properties tab opens.
In

Find

?

To set the format properties for the Host Name: 1 Select one of the available formats. 2 To specify text before or after the actual data, enter the text in the Text Format box.

Creating Vuser Scripts

Chapter 5, page 64

Working with VuGen • Defining Parameters

Vuser ID
Vuser ID replaces the parameter with the ID assigned to the Vuser by the Controller during the scenario run. When you run a script from VuGen, the Vuser ID is always 1. When you select the Vuser ID type, the Format Properties tab opens.

Find

?

To set the format properties for the Vuser ID: 1 Select one of the available formats. 2 To specify text before or after the actual data, enter the text in the Text Format box.

Creating Vuser Scripts

Chapter 5, page 65

Working with VuGen • Defining Parameters

Iteration
Iteration replaces the parameter with the current iteration number. When you select the Iteration type, the Format Properties tab opens.
In

Find

?

To set the format properties for the Iterations: 1 Select one of the available formats. 2 To specify text before or after the actual data, enter the text in the Text Format box.

Creating Vuser Scripts

Chapter 5, page 66

Working with VuGen • Defining Parameters Date/Time
Date/Time replaces the parameter with the current date and/or time. To specify a date/time format, you can select a format from the menu list or specify your own format. You should select the format of the date and time as it appears in your script. When you select the Date/Time type, the Date/Time Properties tab opens To set the Date/Time format: 1 Select one of the available formats or specify a new one. The format should correspond to the date/time format recorded in your script.

Find

?

2 To specify text before or after the actual data, enter the text in the Date/Time Format box. 3 Select an update method for the values. For more information on update methods for internal values, see Updating Parameter Values for Internal Data Types on page 81.

Creating Vuser Scripts

Chapter 5, page 67

Working with VuGen • Defining Parameters

Random Number
Random Number replaces the parameter with a random number. You set a range of random numbers by specifying minimum and maximum values. You can use a Random Number value to sample your system’s behavior within the possible range of values. For example, to run a query for 50 employees, where employee ID numbers range from 1 through 1000, create 50 Vusers and set the minimum to 1 and maximum to 1000. Each Vuser receives a random number, from within the range of 1 and 100. When you select the Random type, the Random Number properties tab opens:
In

Find

?

Creating Vuser Scripts

Chapter 5, page 68

Working with VuGen • Defining Parameters

To set the properties for Random Number data: 1 Specify minimum and maximum values for the random number. 2 Select one of the available formats or create a new one. 3 To specify text before or after the actual data, enter the text in the Number Format box. 4 Select an update method for the values. For more information on update methods for internal values, see Updating Parameter Values for Internal Data Types on page 81.

Find

?

Creating Vuser Scripts

Chapter 5, page 69

Working with VuGen • Defining Parameters

Unique Number
Unique Number replaces the parameter with a unique number. You specify a start number and a block. The block indicates a block of numbers assigned to each Vuser. Each Vuser begins at the bottom of its range and increments the ID for each iteration. For example, if you set the Start number at 1 with a block of 500, the first Vuser uses the value 1 and the next Vuser uses the value 501, in their first iterations.
In

Find

Note: You need to make the block large enough so that all iterations can be completed without running out of numbers.

?

The number of digits in the unique ID and the block size determine the number of iterations and Vusers. For example, if you are limited to five digits using a block size of 500, only 100,000 numbers are available. To run 1000 Vusers, each Vuser can run 100 iterations. You can use the Unique ID value to check your system’s behavior for all possible values of the parameter. For example, to perform a query for all employees, with ID numbers ranging from 1 through 90, create 90 Vusers and set the start number to 1 and block size to 1. Each Vuser receives a unique number, beginning with 1 and ending with 90.

Creating Vuser Scripts

Chapter 5, page 70

Working with VuGen • Defining Parameters

When you select the Unique type, the Unique Number properties tab opens:

Find

?
To set the properties for Unique Number data: 1 Specify a start value and a block size. 2 Select one of the available formats or create a new one. 3 To specify text before or after the actual data, enter the text in the Number Format box. 4 Select an update method for the values. For more information on update methods for internal values, see Updating Parameter Values for Internal Data Types on page 81.

Creating Vuser Scripts

Chapter 5, page 71

Working with VuGen • Defining Parameters

Data Files
You define your own data in the form of a table. This data is stored in a file and accessed by the Vuser during script execution. One file can contain values for many parameters—the columns breaks are marked by delimiters. Data files are useful if you have many known values for your parameter. In the following example, the data file contains ID numbers and first names. id, first_name 120, John 121, Bill 122, Tom You can create a data file from within VuGen or you can use an existing file in ASCII format.

In

Find

?

Creating Vuser Scripts

Chapter 5, page 72

Working with VuGen • Defining Parameters

When using a data file, you must specify the following:

• • • •

the file path the column containing the data the column delimiter an assignment method File: Specify a file path for new or existing files. By default, VuGen saves a newly created data file in the script’s directory. You can also specify a global directory. Make sure that the global directory is available to all machines running the script. Column: Specify the column for the selected parameter. You can specify a column number or name. Delimiter: Specify the column delimiter, the character used to separate the table’s columns. You can specify a comma, tab, space, or any other character. Note that a new row of data is indicated by a new line. Update Method: Choose an update method for the table data to instruct LoadRunner how to select parameters during test execution. For more information, see Updating Parameter Values for Files on page 76.

Find

?

Creating Vuser Scripts

Chapter 5, page 73

Working with VuGen • Defining Parameters

When you select the File type, the File properties tab opens:
In

Find

?
To set the file properties: 1 Click Browse to set the file location. By default, all new data files are stored in the script’s directory using the script_name.dat. Existing tables must have a .txt or .dat extension. 2 Click Create to create a new data file. VuGen prompts you to create the data file. Click OK. The Create button is replaced by the Edit button, and the parameter and its original value appear in the File Preview section. 3 Click Edit. Notepad opens with the parameter’s original value. Enter parameter values into the file in the form of a table. Use a delimiter such as a comma or tab to indicate a column break. Begin a new line for each new table row.

Creating Vuser Scripts

Chapter 5, page 74

Working with VuGen • Defining Parameters

4 In the Select Column section, specify the column containing data for the current parameter. You can specify a column number or name. 5 In the File Format section, enter the column delimiter, the character used to separate the columns in the table. 6 In the File Format section, indicate the starting line for the data. The header is line 0. To begin with the first line after the header, specify 1. If there is no header, specify 0. 7 Select an assignment method from the Select Next row list: Sequential, Random, Unique, or Same Line As. For more information, see Updating Parameter Values for Files on page 76.
Find

?

Creating Vuser Scripts

Chapter 5, page 75

Working with VuGen • Defining Parameters

Updating Parameter Values for Files
In

When using values from a file, VuGen lets you specify the way in which you assign values to the parameters. The available methods are:

• • • •

Sequential Random Unique Same Line As
Find

?

Creating Vuser Scripts

Chapter 5, page 76

Working with VuGen • Defining Parameters Sequential
The Sequential method assigns parameter values to Vusers, sequentially. As a running Vuser accesses the data table, it takes the next available row for each iteration. For example, if your table has the following values,
First Name Max David Michael John Ron Alex Ken Tom Find

?

the first Vuser takes Max in its first iteration, David in the second iteration, Michael in the third iteration, etc. The second Vuser takes the same values: Max in the first iteration, etc. You can instruct your Vusers to advance one row for each iteration. If you disable this option, all Vusers use the next available value for all iterations. Note that if you call a parameter several times within a single iteration, the Vuser uses the same value for all references to that parameter.

Creating Vuser Scripts

Chapter 5, page 77

Working with VuGen • Defining Parameters

Random
The Random method assigns a random value from the data table to each Vuser at the start of each iteration.
In

Find

?

Creating Vuser Scripts

Chapter 5, page 78

Working with VuGen • Defining Parameters Unique
The Unique method assigns a unique sequential value to the parameter for each Vuser. For example, if you have fifty Vusers in the scenario, and fifty values in your data table, each Vuser is assigned a unique value during script execution. VuGen assigns these values in sequential order. Note that the Controller assigns table values to the parameters before the scenario run, based on the number of iterations. For example, if your table has the values,
First Name Max David Michael John Ron Alex Ken

Find

?

and the Vusers are set to run three iterations, then the first Vuser takes Max, David, and Michael. The second Vuser takes John, Ron, and Alex, etc. Make sure there is enough data in the table for all the Vusers and their iterations. If you have 20 Vusers and you want to perform 5 iterations, your table must contain 100 unique values. If data is not available for a Vuser, the Controller returns an error.

Creating Vuser Scripts

Chapter 5, page 79

Working with VuGen • Defining Parameters

Same Line As <parameter>
The Same line as <parameter> method assigns data from the same line as a previously defined parameter. You must specify the column containing the data. A list of all the defined parameters appears in the pull-down menu. Note that at least one of the parameters must be assigned Sequential, Random, or Unique. In the following example the table has three columns, and three parameters are defined in the list: id1, name1, and title1.
ID 132 187 189 193 238 Name Max David Michael John Ron Title Manager Engineer Clerk VP Salesman Find
In

?

You could instruct LoadRunner to assign Random for id1, while specifying that the name1 and title1 parameters use a parameter from the Same Line as id1. When an ID of 132 is used, the Name Jim and the Title Manager are also used.

Creating Vuser Scripts

Chapter 5, page 80

Working with VuGen • Defining Parameters

Updating Parameter Values for Internal Data Types
When using internally generated values, VuGen lets you specify the update method for parameters. You set the update method from the Properties tab of the Date/Time, Random, Unique types. The available methods are: each occurrence, each iteration, and once. The each occurrence method instructs LoadRunner to use a new value for each occurrence of the parameter. This is useful where the statements using the parameters are unrelated. For example, for random data, it may be useful to use a new value for each iteration. The each iteration method instructs LoadRunner to use a new value for each script iteration. If a parameter appears in a script several times, LoadRunner uses the same value for the entire iteration. This is useful when statements using a parameter are related. For example, if you have a parameter type Vuser ID, and you want to perform several tests for each ID, you do not want LoadRunner to use a new value for each occurrence of the parameter. Specify the each iteration method to use the same value throughout the iteration. The once method instructs LoadRunner to update the parameter value only once during the scenario run. LoadRunner uses the same parameter value for all occurrences and all iterations of the parameter. This type may be useful when working with dates and times. If you use a new value for each occurrence, LoadRunner will put a new time at each occurrence of the parameter. To avoid this, specify the once update method.

Find

?

Creating Vuser Scripts

Chapter 5, page 81

Working with VuGen • Defining Parameters

Maintaining Parameters
In

You can edit a parameter’s properties or values at any time. To edit a parameter: 1 Click the Parameter button. The Parameter List dialog box displays all of the parameters for the current script. 2 Select the parameter you want to modify, and edit its properties.
Find

If you mistakenly replaced a constant with a parameter, you can restore it to its original value. To restore a parameter to its original value: 1 Perform a right-click on the parameter. 2 Choose Restore Original Value.

?

Creating Vuser Scripts

Chapter 5, page 82

Working with VuGen • Defining Parameters

Parameterization Options
You can set up VuGen’s parameterization options in the following areas:

• •

Parameter Braces Global Directory

Find

?

Creating Vuser Scripts

Chapter 5, page 83

Working with VuGen • Defining Parameters

Parameter Braces
The parameter braces are placed on either side of the parameter name when you parameterize your script. The default braces are angle brackets. (<prm>) lrd_stmt(Csr1, "insert into emp_j3(id,name)values (<ID>,'<Name>',),1,1...); You can change the style of parameter braces by specifying a string of one or more characters. All characters are valid with the exception of spaces.
Find
In

To change the parameter brace style: 1 Choose Tools > Options in VuGen. The General Options dialog box opens. 2 Select the Parameterization tab and enter the desired brace. 3 Click OK to accept the settings and close the dialog box.

?

Creating Vuser Scripts

Chapter 5, page 84

Working with VuGen • Defining Parameters

Global Directory
This option is provided only for backward compatibility for earlier versions. In earlier versions of LoadRunner (4.51 and below), when you created a new data table, you specified local or global. A local table is saved in the current Vuser script directory and is only available to Vusers running that script. A global table is available to all Vusers scripts. The global directory can be on a local or network drive. Using the General Options dialog box, you can change the location of the global tables at any time. In newer versions of LoadRunner, you specify the location of the data table in the Parameter List dialog box. LoadRunner, using its new No-NFS capabilities, is able to retrieve the data from any location—the default script directory or another directory on the network. For more information, see Data Files on page 72. To set the global directory: 1 Choose Tools > Options in VuGen. The General Options dialog box opens. 2 Select the Parameterization tab. 3 In the Global Directory section, specify the directory containing your global data tables. 4 Click OK to accept the settings and close the dialog box.
Find

?

Creating Vuser Scripts

Chapter 5, page 85

Working with VuGen
Configuring Run-Time Settings
6 Configuring Run-Time Settings

After you record a Vuser script, you configure the run-time settings for the script. These settings specify how the script behaves when it runs. This chapter describes:

In

• • • • •

Setting the Think Time Settings Setting the Iteration Settings Setting the Log Run-Time Settings Setting the General Run-Time Settings Setting the RTE Run-Time Settings This chapter applies to APPC, Baan, Database, Java, RTE (Windows), TUXEDO, Web, and Windows Sockets Vuser scripts only.
Find

?

Creating Vuser Scripts

Chapter 6, page 86

Working with VuGen • Configuring Run-Time Settings

About Run-Time Settings
After you record a Vuser script, you can customize the way that the script runs by configuring its run-time settings. These settings are stored in the file <test_name>.cfg, located in the Vuser script directory. Run-time settings are applied to Vusers when you run a script using VuGen, QuickTest, or the Controller. Configuring run-time settings allows you to emulate different kinds of Vuser activity. For example you could emulate a Vuser who runs quickly, or a Vuser who stops and thinks before each new action. You can also specify how many times the Vuser should repeat an action. You configure the settings from the Run-Time Settings dialog box. To display the Run-Time Settings dialog box, click the Settings button from the main VuGen window. You can also modify the run-time settings from the LoadRunner Controller. For more information, refer to the LoadRunner Controller User’s Guide (Windows).

Find

?

Creating Vuser Scripts

Chapter 6, page 87

Working with VuGen • Configuring Run-Time Settings

The run-time settings can be set in the following areas:

In

• • • • • • • •

Think Time Iterations Log Error Handling Multithread Process Web settings (See Chapter 20, Configuring Web Run-Time Settings. ) Baan (See Chapter 24, Creating Baan Vuser Scripts. ) Java (See Chapter 25, Creating Java Vuser Scripts. ) This chapter describes only the Think Time, Iterations, Log, and General settings. For details on other run-time settings, see the appropriate chapters.
Find

?

Creating Vuser Scripts

Chapter 6, page 88

Working with VuGen • Configuring Run-Time Settings

Setting the Think Time Settings
Vuser think time emulates the time that a real user waits between actions. For example, when a user receives data from a server, he waits several seconds before submitting another request. This delay, known as think time, is recorded in your Vuser script (using lr_think_time functions). Using the Think Time run-time settings, you can influence how the recorded delay periods are used during script execution. Click the Settings button from the main VuGen window. Click the Think Time tab to display the Think Time options:
Find

?

Creating Vuser Scripts

Chapter 6, page 89

Working with VuGen • Configuring Run-Time Settings

By default, when you run a Vuser script, LoadRunner applies the think time values that were recorded into the script during the recording session. To modify the execution behavior of the script, you can specify that LoadRunner use a multiple of the recorded think time. This can increase or decrease the think time applied during playback. For example, if a think time of four seconds was recorded, you can instruct your Vuser to multiply that value by two, for a total of eight seconds. To reduce the think time to two seconds, multiply the recorded time by 0.5. You can also disable think time or limit it to a maximum value. Think time delays appear in a Vuser script as lr_think_time functions. These function can appear at any point in a Vuser script. For more information about the lr_think_time function and how to modify it manually, refer to the LoadRunner Online Function Reference (available from the VuGen Help menu).

In

Find

Online Function Reference

?

Creating Vuser Scripts

Chapter 6, page 90

Working with VuGen • Configuring Run-Time Settings

Setting the Iteration Settings
Vuser scripts contains three sections: vuser_init, Actions, and vuser_end. You can instruct VuGen to repeat the Actions section when you run the script. These repetitions, also known as iterations, represent the number of loops performed by the Vuser.

Note: The vuser_init and vuser_end sections of a Vuser script are not repeated when you run multiple iterations.
Find

Click the Settings button from the main VuGen window. Click the Iterations tab to display the Iteration options.

?

Creating Vuser Scripts

Chapter 6, page 91

Working with VuGen • Configuring Run-Time Settings

You specify the number of iterations in the Iteration Count section of the dialog box. You can also set an iteration pace for your script. The iteration pace tells the Vuser how long to wait between iterations. The pacing options are:

In

• • •

Start a new iteration as soon as possible. Start a new iteration every n seconds. Start a new iteration at random intervals (you specify a range for the intervals). Choosing the second option instructs the Vuser to wait a minimum of n seconds before beginning the next iteration. The actual idle time may vary from iteration to iteration, depending on the duration of the previous iteration. For example, if you specify “Start a new iteration every 4 seconds” and the first iteration took three seconds, the idle time will be one second. If the next iteration took two seconds to complete, the idle time will be two seconds. The idle time appears in the Vuser Viewer window during playback.
Find

?

Creating Vuser Scripts

Chapter 6, page 92

Working with VuGen • Configuring Run-Time Settings

Setting the Log Run-Time Settings
During execution, LoadRunner logs information about Vusers and their communication with the server. In a Windows environment, this information is stored in a file called output.txt in the script directory. In UNIX environments, the information is directed to the standard output. The Log run-time settings let you determine how much information is logged to the output. You can select Brief or Extended log, or you can disable logging completely. Disabling the log is useful when working with many Vusers. If you have tens or hundreds of Vusers logging their run-time information to disk, the system may work slower than normal. You should only disable logging after verifying that the script is functional.

Find

?

Note: You can program a Vuser script to send messages to the output by using the lr_error_message and lr_output_message functions.

Creating Vuser Scripts

Chapter 6, page 93

Working with VuGen • Configuring Run-Time Settings

To display the Log options, choose Vuser > Run Time Settings, or click the Settings button. Ensure that the Log tab is visible.

In

Find

?

Creating Vuser Scripts

Chapter 6, page 94

Working with VuGen • Configuring Run-Time Settings

Log Options
You can specify the type of information that is logged, or you can disable logging altogether.

Note: When you disable logging, the Controller still logs error messages.

Standard Log Option When you select Standard Log, LoadRunner logs data concerning only a subset of the functions that appear in a Vuser script, including all transactions, rendezvous and output messages. The functions that are logged vary from one Vuser type to another.

Find

?

Creating Vuser Scripts

Chapter 6, page 95

Working with VuGen • Configuring Run-Time Settings

Extended Log Options
In

Select Extended Log to create an extended log, including warnings and other messages. You can specify which additional information should be added to the extended log using the Extended log options:

• • •

Parameter: Select this option to log all parameters assigned to the script along with their values. For more information on parameters, see Chapter 5, Defining Parameters. Data returned by server: Select this option to log all of the data returned by the server. Advanced trace: Select this option to log all of the functions and messages sent by the Vuser during the session This option is useful when you debug a Vuser script. The degree to which VuGen logs events (Standard, Parameter substitution, etc.) is also known as the message class. There are five message classes: Brief, Extended, Parameters, Result Data, and Full Trace. You can manually set the message class within your script using the lr_set_debug_message function. This is useful if you to want to receive debug information about a small section of the script only.
Find

?

Creating Vuser Scripts

Chapter 6, page 96

Working with VuGen • Configuring Run-Time Settings

Online Function Reference

For example, suppose you set Log run-time settings to Brief and you want to get an extended log for a specific section of the script. You would then use the lr_set_debug_message function to set the Extended message class at the desired point in your script. You must call the function again to specify what type of extended mode (Parameter, Result Data, or Full Trace). Return to the Brief Log mode by calling lr_set_debug_message, specifying Brief mode. For more information about setting the message class, refer to the LoadRunner Online Function Reference (available from the VuGen Help menu).
Find

Disable Logging
Once you verify that your script is functional, you can use this setting to disable logging and avoid unnecessary resource usage.

?

Creating Vuser Scripts

Chapter 6, page 97

Working with VuGen • Configuring Run-Time Settings Logging CtLib Server Messages
When you run a CtLib script, all messages generated by the CtLib client are logged in the Brief log and in the output file. By default, server messages are not logged. To enable logging of server messages (for debugging purposes), insert the following line into your Vuser script: LRD_CTLIB_DB_SERVER_MSG_LOG; VuGen logs all server messages in the Brief log. To send the server messages to the LoadRunner Controller output window, (in addition to the Brief log), type: LRD_CTLIB_DB_SERVER_MSG_ERR; To return to the default mode of terminating the script execution, type the following line into your script: LRD_CTLIB_DB_SERVER_MSG_NONE;
Find
In

?

Note: Activate server message logging for only a specific block of code within your script, since the generated server messages are long and the logging can slow down your system.

Creating Vuser Scripts

Chapter 6, page 98

Working with VuGen • Configuring Run-Time Settings

Setting the General Run-Time Settings
You can set general run-time settings for your script in the following areas:

• •

Error Handling Multithread Processes

Find

?

These settings apply to all Vuser script types.

Creating Vuser Scripts

Chapter 6, page 99

Working with VuGen • Configuring Run-Time Settings

Error Handling
You can specify how LoadRunner handles errors during script execution. By default, when the script detects an error, it exits. You can instruct LoadRunner to continue script execution, even when errors occur by specifying Continue on Error. To specify “Continue on Error,” select the Continue on Error check box in the General run-time settings. Error Handling for Database Vusers When working with database protocols (LRD), you can control error handling for a specific segment of a script. To mark a segment, enclose it with LRD_ON_ERROR_CONTINUE and LRD_ON_ERROR_EXIT statements. LoadRunner applies the new error setting to the whole segment. For example, if you enable the Continue on Error feature and LoadRunner encounters an error during replay of the following script segment, it continues executing the script. lrd_stmt(Csr1, "select…"…); lrd_exec(…);
Find
In

?

Creating Vuser Scripts

Chapter 6, page 100

Working with VuGen • Configuring Run-Time Settings
To instruct LoadRunner to continue on error for the entire script, except for the following segment, enclose the segment with LRD_ON_ERROR_EXIT. and LRD_ON_ERROR_CONTINUE statements: LRD_ON_ERROR_EXIT; lrd_stmt(Csr1, "select…"…); lrd_exec(…); LRD_ON_ERROR_CONTINUE; In addition to the LRD_ON_ERROR statements, you can control error handling using severity levels. LRD_ON_ERROR statements detect all types of errors— database related, invalid parameters, etc. If you want LoadRunner to terminate the Vuser only when a database operation error occurs (Error Code 2009), you can set a function’s severity level. All functions that perform a database operation use severity levels, indicated by the function's final parameter, miDBErrorSeverity. VuGen supports the following severity levels:
Definition Meaning Terminate script execution upon database access errors. (default) Continue script execution upon database access errors, but issue a warning. Value

Find

?

LRD_DB_ERROR_SEVERITY_ERROR

0

LRD_DB_ERROR_SEVERITY_WARNIN G

1

Creating Vuser Scripts

Chapter 6, page 101

Working with VuGen • Configuring Run-Time Settings

For example, if the following database statement fails (e.g. the table does not exist), the script execution terminates. lrd_stmt(Csr1, "insert into EMP values ('Smith',301)\n", -1, 1 , 1 , 0); To instruct VuGen to continue script execution, even when a database operation error occurs, change the statement's severity level from a 0 to a 1. lrd_stmt(Csr1, "insert into EMP values ('Smith',301)\n", -1, 1 , 1 , 1);

In

Find

?
Note: When you enable Continue on Error, it overrides the “0” severity level; script execution continues even when database errors occur. However, if you disable Continue on Error, but you specify a severity level of “1”, script execution continues when database errors occur.

Creating Vuser Scripts

Chapter 6, page 102

Working with VuGen • Configuring Run-Time Settings

Error Handling for RTE Vusers When working with RTE Vusers, you can control error handling for specific functions. You insert an CONTINUE_ON_ERROR=value statement before the functions whose behavior you want to change. LoadRunner uses the new setting until the end of the script execution or until another CONTINUE_ON_ERROR statement is issued. For example, if you enable the Continue on Error feature and LoadRunner encounters an error during replay of the following script segment, it continues executing the script. TE_wait_sync(); TE_type(...); To instruct LoadRunner to continue on error for the entire script, except for the following segment, enclose the segment with CONTINUE_ON_ERROR. statements: CONTINUE_ON_ERROR=OFF TE_wait_sync(); CONTINUE_ON_ERROR=ON ....

Find

?

Creating Vuser Scripts

Chapter 6, page 103

Working with VuGen • Configuring Run-Time Settings

Multithreading LoadRunner supports multithread environments. The primary advantage of a multithread environment is the ability to run more Vusers per machine. To enable multithreading, select the Run Vuser as a Thread check box. To disable multithreading and run a Vuser as a complete process, select the Run Vuser as a Process check box.
Find
In

?

Creating Vuser Scripts

Chapter 6, page 104

Working with VuGen • Configuring Run-Time Settings

Setting the RTE Run-Time Settings
When you open an RTE Vuser script in VuGen, you can set RTE-specific run-time settings for the script.

Connection Attempts
The TE_connect function is generated by VuGen when you record a connection to a host. When you replay an RTE Vuser script, the TE_connect function connects the terminal emulator to the specified host. If the first attempt to connect is not successful, LoadRunner retries a number of times to connect successfully. Details of each connection are recorded in the report file output.txt. To set the maximum number of times that a Vuser will try to connect, enter a number in the “Maximum number of connection attempts” box on the RTE tab of the Run-Time settings dialog box. By default, a Vuser will try to connect 5 times. Online Function Reference For details about the TE_connect function, see the LoadRunner Online Function Reference (available from the VuGen Help menu).

Find

?

Creating Vuser Scripts

Chapter 6, page 105

Working with VuGen • Configuring Run-Time Settings

Original Device Name
In certain environments, each session (Vuser) requires a unique device name. The TE_connect function generates a unique 8-character device name for each Vuser, and connects using this name. To connect using the device name (that is contained within the com_string parameter of the TE_connect function), select the “Use original device name” check box on the RTE tab of the Run-Time settings dialog box.
In

Find

Note: The original device name setting applies to IBM block-mode terminals only.

?

By default, Vusers use original device names to connect. Online Function Reference For details about the TE_connect function, see the LoadRunner Online Function Reference (available from the VuGen Help menu).

Creating Vuser Scripts

Chapter 6, page 106

Working with VuGen • Configuring Run-Time Settings

Delay
The delay setting determines how Vusers execute TE_type functions: To specify the amount of time that a Vuser waits before entering the first character in a string, enter a value in the First key box, in milliseconds. To specify the amount of time that a Vuser waits between submitting successive characters, enter a value in the Subsequent keys box, in milliseconds. If you enter zero for both the first key and the subsequent key delays, the Vuser will send characters as a single string, with no delay between characters. You can use the TE_typing_style function to over ride the Delay settings for a portion of a Vuser script. Online Function Reference For details about the TE_type and TE_typing_style functions, see the LoadRunner Online Function Reference (available from the VuGen Help menu).
Find

?

Creating Vuser Scripts

Chapter 6, page 107

Working with VuGen • Configuring Run-Time Settings X-System Synchronization
RTE Vuser scripts use the TE_wait_sync function for synchronization. You can set a timeout value and a stable-time value that VuGen applies to all TE_wait_sync functions. For details about the TE_wait_sync function, see the LoadRunner Online Function Reference (available from the VuGen Help menu). Timeout When you replay a TE_wait_sync function, if the system does not stabilize before the synchronization timeout expires, the TE_wait_sync function returns an error code. To set the synchronization timeout, enter a value (in seconds) in the Timeout box of the RTE Run-Time settings tab. The default timeout value is 60 seconds. Stable Time After a Vuser executes a TE_wait_sync function, the Vuser waits until the terminal is no longer in the X-SYSTEM mode. After the terminal returns from the XSYSTEM mode, LoadRunner still monitors the system for a short while longer to ensure that the terminal is fully stable i.e. that the system has nor returned to the X-SYSTEM mode. Only then does the TE_wait_sync function terminate. To set the time that LoadRunner continues to monitor the system after the system has returned from the X-SYSTEM mode, enter a value (in milliseconds) in the Stable time box of the RTE Run-Time settings tab. The default stable time is 1000 milliseconds.
In

Online Function Reference

Find

?

Creating Vuser Scripts

Chapter 6, page 108

Working with VuGen
Running Vuser Scripts in Stand-Alone Mode
7 Running Vuser Scripts in Stand-Alone Mode

After you develop a Vuser script and set its run-time settings, you test the script by running it in stand-alone mode. This chapter describes:

In

• • •

Running a Vuser Script in VuGen Running a Vuser Script from a UNIX Command Line Integrating a Vuser Script into a LoadRunner Scenario This chapter applies to APPC, Baan, Database, Java, RTE (Windows), TUXEDO, Web, and Windows Sockets Vuser scripts only.
Find

?

Creating Vuser Scripts

Chapter 7, page 109

Working with VuGen • Running Vuser Scripts in Stand-Alone Mode

About Running Vuser Scripts in Stand-Alone Mode
In

In order to perform load testing with a Vuser script, you need to incorporate the script into a LoadRunner scenario. Before integrating the script into a scenario, you should check its functionality by running the script in stand-alone mode.

stand-alone mode

Running a script in stand-alone mode means running the script without using a LoadRunner Controller. This is done to establish how the script will execute when run from the Controller. If the script is Windows-based, you use VuGen to run it in stand-alone mode. If the script is UNIX-based, you must run it from a UNIX command line.

Find

?

If the stand-alone execution is successful, then incorporate the script into a LoadRunner scenario. For more information on scenarios, refer to your LoadRunner Controller User’s Guide.

Creating Vuser Scripts

Chapter 7, page 110

Working with VuGen • Running Vuser Scripts in Stand-Alone Mode

Before you run a script in stand-alone mode, you can:

• • •

enhance the script with LoadRunner functions (see Chapter 4, Enhancing Vuser Scripts) parameterize the script (see Chapter 5, Defining Parameters) correlate queries in the script (see Chapter 10, Correlating Database Statements) The above steps are optional and may not apply to all scripts.
Find

Note: You use QuickTest to run Web Vusers in stand-alone mode. For details, see Chapter 21, Running Web Vuser Scripts. To run GUI Vusers in stand-alone mode, use WinRunner (Windows) or VXRunner (UNIX). For details, see Chapter 26, Developing GUI Vuser Scripts.

?

Creating Vuser Scripts

Chapter 7, page 111

Working with VuGen • Running Vuser Scripts in Stand-Alone Mode

Running a Vuser Script in VuGen
After developing a Vuser script, run it using VuGen to ensure that it runs correctly.
In

Note: VuGen runs Vuser scripts on Windows platforms only. To run UNIX-based Vuser scripts, see Running a Vuser Script from a UNIX Command Line on page 117.

You can run a script in animated mode or non-animated mode. When you run in animated mode, the cursor indicates the line of the script being executed at the current time. When you run in non-animated mode, VuGen executes the script faster, but does not indicate the line being executed. To run a script using VuGen: 1 Choose View >Animated Run to run in animated mode. To set the delay for the animated run, choose Tools > Options and select the Replay tab in the General Options dialog box. Specify a time in milliseconds indicating the delay between commands. 2 Choose Vuser > Run, or click the Run button on the VuGen toolbar. VuGen begins executing the Vuser script. The actions of the Vuser are displayed in the Execution log at the bottom of the VuGen window. The information in the Execution log shows you how the script will run when executed in a LoadRunner scenario.

Find

?

Creating Vuser Scripts

Chapter 7, page 112

Working with VuGen • Running Vuser Scripts in Stand-Alone Mode

The following example shows the Execution log for a Web Vuser.

Find

?

Creating Vuser Scripts

Chapter 7, page 113

Working with VuGen • Running Vuser Scripts in Stand-Alone Mode

Using the Debugging Features
VuGen contains two options to help debug Vuser scripts:
In

• •

The Run Step by Step command runs the script one line at a time. This enables you to follow the script execution. You can insert Breakpoints to pause execution at specific points in the script. This enables you to examine the effects of the test on your application at predetermined points during execution.
Find

?

Creating Vuser Scripts

Chapter 7, page 114

Working with VuGen • Running Vuser Scripts in Stand-Alone Mode

To run the test step by step: 1 Select Vuser > Run Step by Step or click the Step button. VuGen executes the first line of the test. 2 Continue test execution by clicking the Step icon until the test run completes. To set breakpoints: Use the Run command to restart the test run. 1 Place the cursor on the line in the test script at which you want test execution to stop. 2 Click the Breakpoint button. The breakpoint symbol appears in the left margin of the script. 3 To remove the breakpoint, place the cursor on the line with the breakpoint symbol and click the breakpoint button. To run the test with breakpoints: 1 Begin running the test as you normally would. VuGen pauses test execution when it reaches a breakpoint. You can examine the effects of the test run up to the breakpoint, make any necessary changes, and then restart the test from the breakpoint. 2 To resume execution, select Vuser > Run. Once restarted, the test continues until the next breakpoint is encountered or the test is completed.
Find

?

Creating Vuser Scripts

Chapter 7, page 115

Working with VuGen • Running Vuser Scripts in Stand-Alone Mode

Working with VuGen Windows
When you create scripts, you may need to view several scripts and windows. Use the following VuGen features:
In

• • •

Show/Hide the Execution Log Press Ctrl+F6 to show and hide the Execution Log beneath the main window. Display Grids Select View > Data Grids to display or hide the grids containing the result data. Close All Windows Select Windows > Close All to close all of the open windows.
Find

?

Creating Vuser Scripts

Chapter 7, page 116

Working with VuGen • Running Vuser Scripts in Stand-Alone Mode

Running a Vuser Script from a UNIX Command Line
When using VuGen to develop UNIX-based Vusers, you must check that the recorded script runs on the UNIX platform. To ensure that your script runs correctly, follow these steps: 1 Test the recorded script from VuGen. Run the recorded script from VuGen to ensure that the script runs correctly on a Windows-based system.

Find

Note: If you are using a UNIX-based LoadRunner Controller, do not add parameterization and correlated queries to the Vuser script, and do not modify the run-time settings. These features are not supported by the UNIX-based Controller.

?

Creating Vuser Scripts

Chapter 7, page 117

Working with VuGen • Running Vuser Scripts in Stand-Alone Mode

2 Copy the Vuser script files to a UNIX drive. Transfer the files to a local UNIX drive.
In

Note: If you have not already done so, check the Vuser setup on the UNIX machine by using vu_verify. For more information about the UNIX Vuser settings, refer to the Installing LoadRunner guide.

3 Test the script from the UNIX command line. Run the script in stand-alone mode from the Vuser script directory, using the run_db_vuser shell script: run_db_vuser.sh script_name.usr

Find

?

Creating Vuser Scripts

Chapter 7, page 118

Working with VuGen • Running Vuser Scripts in Stand-Alone Mode Command Line Options: run_db_vuser Shell Script
The run_db_vuser shell script has the following command line options: --help Display the available options. (This option must be preceded by two dashes.) -cpp_only Run cpp only (pre-processing) on the script. -cci_only Run cci only (pre-compiling) on the script to create a file with a .ci extension. You can run cci only after a successful cpp. -driver driver_path Use a specific driver program. Each database has its own driver program located in the /bin directory. For example, the driver for CtLib located in the /bin directory, is mdrv. This option lets you specify an external driver. -exec_only Execute the Vuser .ci file. This option is available only when a valid .ci file exists. -ci ci_file_name Execute a specific .ci file. -no_verbose Do not run in verbose mode (the default mode is verbose). -out output_path Place the results in a specific directory.

Find

?

Creating Vuser Scripts

Chapter 7, page 119

Working with VuGen • Running Vuser Scripts in Stand-Alone Mode

By default, run_db_vuser.sh runs cpp, cci, and execute in verbose mode. It uses the driver in the LoadRunner installation/bin directory, and saves the results to an output file in the Vuser script directory. You must always specify a .usr file. If you are not in the script directory, specify the full path of the .usr file. For example, the following command line executes a Vuser script called test1, and places the output file in a directory called results1. The results directory must be an existing directory—it will not be created automatically: run_db_vuser.sh -out /u/joe/results1 test1.usr

In

Find

?

Creating Vuser Scripts

Chapter 7, page 120

Working with VuGen • Running Vuser Scripts in Stand-Alone Mode

Integrating a Vuser Script into a LoadRunner Scenario
Once you have successfully run a script in stand-alone mode to verify that it is functional, you incorporate the script into a LoadRunner scenario. This process differs depending on the type of Controller that you are using, and the platform on which the Vuser runs.

Using a Windows-based Controller
To integrate a Vuser script into a scenario when using a Windows-based Controller: 1 Add the script to the script list, and assign the script to a host. 2 If you configured LoadRunner to save the script on a shared network drive, you may need to perform path translation. For more information, refer to the LoadRunner Controller User’s Guide (Windows).
Find

?

Creating Vuser Scripts

Chapter 7, page 121

Working with VuGen • Running Vuser Scripts in Stand-Alone Mode

Using a UNIX-based Controller
When using the UNIX-based LoadRunner Controller, you assign scripts to Vusers through a Scenario script. Designate the Vuser’s .usr file as your Vuser test for the individual Vuser or the entire group. vuser_set( group_name, 0, "vuser_type",DB ); vuser_set( group_name, 0, "test","path_name/file_name.usr" ); sgroup_set( group_name, "vuser",DB ); sgroup_set( group_name, "test","path_name/file_name.usr" ); For more information about Scenario scripts, refer to the LoadRunner Controller User’s Guide (UNIX).
Find
In

?

Creating Vuser Scripts

Chapter 7, page 122

Working with VuGen
Managing Scripts Using TestDirector
8 Managing Scripts Using TestDirector

LoadRunner integration with TestDirector lets you manage LoadRunner Vuser scripts using TestDirector. TestDirector helps you organize and manage all scripts, scenarios, and results using a repository. This chapter describes:

In

• • • •

Opening a Connection to a TestDirector Project Opening a Script using TestDirector Saving Scripts to the TestDirector Project Managing your Script in TestDirector This chapter applies to APPC, Baan, Database, Java, RTE (Windows), TUXEDO, Web, and Windows Sockets Vuser scripts only. For detailed information on using TestDirector to manage your scripts, refer to the TestDirector User’s Guide.
Find

?

Creating Vuser Scripts

Chapter 8, page 123

Working with VuGen • Managing Scripts Using TestDirector

Working with TestDirector
TestDirector is a powerful test management tool that lets you manage and control all phases of software testing. It provides a comprehensive view of the testing process so you can make strategic decisions about the human and material resources needed to test the application and repair defects. TestDirector divides testing into three modes of operation: planning tests, running tests, and tracking defects. In test planning mode, you begin the testing process by dividing your application into test subjects and building a test plan tree. This is a graphical representation of your test plan, displaying your tests according to the hierarchical relationship of their functions.
In

Find

?

Creating Vuser Scripts

Chapter 8, page 124

Working with VuGen • Managing Scripts Using TestDirector

After you build the test plan tree, you plan tests for each subject. You then use VuGen to record business processes and create scripts to save under the test plan tree. In defect tracking mode, you report defects that were detected in the application under test. Information about defects is stored in a defect database. The defects are assigned to developers to be fixed, and then they are tracked until they are corrected. In all stages of test management, you can create detailed reports and graphs to help you analyze testing data and review the progress of testing on your application. For more information on working with TestDirector, refer to the TestDirector User’s Guide.
Find

?

Creating Vuser Scripts

Chapter 8, page 125

Working with VuGen • Managing Scripts Using TestDirector

About Managing Scripts Using TestDirector
In

TestDirector and LoadRunner work together to integrate all aspects of the testing process. In LoadRunner, you can create scripts and save them in your TestDirector project database. After a test has been run, the results are viewed and analyzed in TestDirector. When LoadRunner is connected to TestDirector, you can save a test by associating it with a subject in the test plan tree, instead of assigning the test to a folder in the file system. This makes it easy to organize tests by subject for your application. When you open a test, you search for it according to its position in the test plan tree. You can also save Scenarios from the LoadRunner Controller in your TestDirector project. After you run a scenario from the Controller, results are sent directly to your TestDirector project. The following sections describe how to:

Find

?

• • •

connect to the TestDirector project open scripts from the TestDirector repository save scripts to the TestDirector repository

Creating Vuser Scripts

Chapter 8, page 126

Working with VuGen • Managing Scripts Using TestDirector

Opening a Connection to a TestDirector Project
Before you can work with a TestDirector project, you must open a connection to the server hosting the project. To open a connection to a TestDirector project: 1 Choose Tools > TestDirector from VuGen’s main window.

Find

?

Creating Vuser Scripts

Chapter 8, page 127

Working with VuGen • Managing Scripts Using TestDirector

2 In the Server box, type the name of the TestDirector server and then click Connect. A message appears indicating that LoadRunner is connecting to the server, and the Project list is filled with available projects on the server. 3 In the Project Connection box, select a project.

In

Find

?

4 Provide the user login and password. 5 Select the Reconnect on Startup check box to automatically open the connection to the TestDirector server and project when you start LoadRunner.

Creating Vuser Scripts

Chapter 8, page 128

Working with VuGen • Managing Scripts Using TestDirector

6 If you select Reconnect on Startup, you can save the specified password to the vugen.ini file to automate the login process. Select the Save Password for Reconnection on Startup check box. 7 Click Connect. A message appears indicating that LoadRunner is connecting to the project. 8 Click Close to close the Connection to TestDirector dialog box.

Find

?

Creating Vuser Scripts

Chapter 8, page 129

Working with VuGen • Managing Scripts Using TestDirector

Opening a Script using TestDirector
In

You can open a script through the standard file system or the TestDirector repository. Before opening a script through TestDirector, make sure you have opened a connection to the project. To open a script from the TestDirector repository: 1 Choose File > Open or click the File Open button. The Open from Test Director Project dialog box opens.
Find

?

2 Select a Vuser script from the project. 3 Click OK. VuGen loads the script. The name of the script appears in the VuGen’s banner.

Creating Vuser Scripts

Chapter 8, page 130

Working with VuGen • Managing Scripts Using TestDirector

4 To select a script file from the standard file system, click the File System button in the upper right corner of the dialog box. The Open Test dialog box opens.

Find

?

5 To return to the TestDirector repository, click the TestDirector button in the bottom right corner of the dialog box.

Creating Vuser Scripts

Chapter 8, page 131

Working with VuGen • Managing Scripts Using TestDirector

Saving Scripts to the TestDirector Project
When VuGen is connected to TestDirector, you can create new scripts in VuGen and save them directly to your project. To save a script, you give it a descriptive name and associate it with the relevant subject in the test plan tree. This helps you to keep track of the scripts created for each subject and to quickly view the progress of test planning and creation. To save a script to the TestDirector project: 1 Connect to the TestDirector server (see Opening a Connection to a TestDirector Project on page 127.) 2 Choose File > Save As. The Save Test to TestDirector Project dialog box opens.
In

Find

?

3 Type a script name, select a folder and click OK. 4 To save the script to disk, click File System and save the file as you would on a standard file system.

Creating Vuser Scripts

Chapter 8, page 132

Working with VuGen • Managing Scripts Using TestDirector

Managing your Script in TestDirector
You can further utilize TestDirector to manage script and test information. After you save a script to the TestDirector project, you can enter details about the script and its status. To enter script details, start TestDirector and select a script.

Find

?

Creating Vuser Scripts

Chapter 8, page 133

Working with VuGen • Managing Scripts Using TestDirector

You can enter information about the test level, version, owner, and designer.
In

TestDirector enables you to manage the user access to a Test project. By creating a list of authorized users and assigning each user a password and user type, you control the kinds of additions and modifications each user makes to the project. The user type determines the privileges that the user has within TestDirector. For more information on using TestDirector to manage your scripts, refer to the TestDirector User’s Guide.
Find

?

Creating Vuser Scripts

Chapter 8, page 134

Part III

Database Vuser Scripts
Find

?

Creating Vuser Scripts

135

Database Vuser Scripts
Developing Database Vuser Scripts
9 Developing Database Vuser Scripts

You use VuGen to record communication between a database client application and a server. The resulting script is called a Database Vuser script. This chapter describes:

In

• • • • • • •

Introducing Database Vusers Understanding Database Vuser Technology Getting Started with Database Vuser Scripts Using LRD Functions Understanding Database Vuser Scripts Evaluating Error Codes Handling Errors This chapter applies to Database (CtLib, DbLib, Informix, Oracle, and ODBC) Vuser scripts only.
Find

?

Creating Vuser Scripts

Chapter 9, page 136

Database Vuser Scripts • Developing Database Vuser Scripts

About Recording Database Vuser Scripts
When you record a database application communicating with a server, VuGen generates a Database Vuser script. VuGen supports the following database types: CtLib, DbLib, Informix, Oracle, and ODBC. The resulting Vuser script contains LRD functions that describe the database activity. Each LRD function has and lrd prefix, and represents one or more database functions. For example, the lrd_fetch function represents a fetch operation. Using VuGen, you can parameterize a script, replacing recorded constants with parameters. For more information, see Chapter 5, Defining Parameters. When you run a recorded session, the Vuser script communicates directly with the database server, performing the same operations as the original user. You can set the Vuser behavior (run-time settings) to indicate the number of times to repeat the operation and the interval between the repetitions. For more information, see Chapter 6, Configuring Run-Time Settings. In addition, you can correlate queries or other database statements in a script, linking the results of one query with another. For more information, see Chapter 10, Correlating Database Statements.
Find

?

Creating Vuser Scripts

Chapter 9, page 137

Database Vuser Scripts • Developing Database Vuser Scripts

Introducing Database Vusers
In

Suppose that you have a database of customer information that is accessed by customer service personnel located throughout the country. You use Database Vusers to emulate this scenario in which the database server services many requests for information. A Database Vuser could:

• • • •

connect to the server submit an SQL query retrieve and process the information disconnect from the server You distribute several hundred Database Vusers among the available hosts, each Vuser accessing the database by using the server API. This enables you to measure the performance of your server under the load of many users. The program that contains the calls to the server API is called a Database Vuser script. It emulates the client application and all of the actions performed by it. Using the LoadRunner Controller, you assign the script to multiple Vusers. The Vusers execute the script and emulate user load on the client/server system. LoadRunner generates performance data which you can analyze in report and graph format.
Find

?

Creating Vuser Scripts

Chapter 9, page 138

Database Vuser Scripts • Developing Database Vuser Scripts

Understanding Database Vuser Technology
VuGen creates Database Vuser scripts by recording all the activity between a database client and a server. VuGen monitors the client end of the database and traces all the requests sent to and received from the database server.

o
Find

?
Client running an application VuGen Server

Like all other Vusers created using VuGen, Database Vusers communicate with the server without relying on client software. Instead, each Database Vuser executes a script that executes calls directly to server API functions.

Vuser script

Server

Creating Vuser Scripts

Chapter 9, page 139

Database Vuser Scripts • Developing Database Vuser Scripts

You create Database Vuser scripts in a Windows environment using VuGen. Once you create a script, you can assign it to Vusers in both Windows and UNIX environments. For information about recording scripts, see Chapter 3, Recording with VuGen. Users working in a UNIX only environment can create Database Vuser scripts through programming using LoadRunner templates as the basis for a script. For information about programming Database Vuser scripts on UNIX, see Appendix C, Programming Scripts on UNIX Platforms.

In

Find

?

Creating Vuser Scripts

Chapter 9, page 140

Database Vuser Scripts • Developing Database Vuser Scripts

Getting Started with Database Vuser Scripts
This section provides an overview of the process of developing Database Vuser scripts using VuGen. To develop a Database Vuser script: 1 Record the basic script using VuGen. Invoke VuGen and create a new Vuser script. Specify the type of Vuser (CtLib, DbLib, Informix, Oracle, and ODBC). Choose an application to record. Record typical operations on your application. For details, see Chapter 3, Recording with VuGen. 2 Enhance the script. Enhance the Vuser script by inserting transactions, rendezvous points, and control-flow structures into the script. For details, see Chapter 4, Enhancing Vuser Scripts. 3 Define parameters (optional). Define parameters for the fixed-values recorded into your script. By substituting fixed-values with parameters, you can repeat the same query many times using different values. For details, see Chapter 5, Defining Parameters.

Find

?

Creating Vuser Scripts

Chapter 9, page 141

Database Vuser Scripts • Developing Database Vuser Scripts

4 Correlate queries (optional). Correlating database statements allows you to use the result of a query in a subsequent one. This feature is useful when working on a database with user constraints. For details, see Chapter 10, Correlating Database Statements. 5 Configure the run-time settings. The run-time settings control the Vuser behavior during script execution. These settings include loop, log, and timing information. For details, see Chapter 6, Configuring Run-Time Settings. 6 Run the script from VuGen. Save and run the script from VuGen to verify that it runs correctly. For details, see Chapter 7, Running Vuser Scripts in Stand-Alone Mode. After you create a Database Vuser script, you integrate it into a LoadRunner scenario on either a Windows or UNIX platform. For more information on integrating Vuser scripts in a scenario, refer to your LoadRunner Controller User’s Guide.
In

Find

?

Creating Vuser Scripts

Chapter 9, page 142

Database Vuser Scripts • Developing Database Vuser Scripts

Using LRD Functions
The functions developed to emulate communication between a database client and a server are called LRD Vuser functions. Each LRD Vuser function has an lrd prefix. This section lists the LRD functions that VuGen records during a database session (CtLib, DbLib, Informix, Oracle, and ODBC). For syntax and examples of the LRD functions, see the LoadRunner Online Function Reference (available from the VuGen Help menu).
Find

Online Function Reference

LRD Environment Functions
lrd_msg lrd_option lrd_end lrd_init Issues an output message. Sets an LRD option. Closes the lrd environment. Initializes the lrd environment.

?

Retrieval Handling Functions
lrd_col_data lrd_fetch lrd_fetchx lrd_result_set Sets a pointer indicating the location of data. Fetches the next row in the result set. Fetches the next row in the result set using an extended fetch (ODBC). Prepares the next result set.

Creating Vuser Scripts

Chapter 9, page 143

Database Vuser Scripts • Developing Database Vuser Scripts

Access Management Functions
In

lrd_alloc_connection lrd_close_all_cursors lrd_close_connection lrd_close_context lrd_close_cursor lrd_ctlib_cursor lrd_commit lrd_db_option lrd_free_connection lrd_rollback lrd_open_connection lrd_open_context lrd_open_cursor

Allocates a connection structure. Closes all open cursors. Disconnects (logs out) from the database. Closes a context. Closes a database cursor. Specifies a CtLib cursor command. Commits the current transaction. Sets an option for the current database. Frees a connection structure. Rolls back the current transaction. Connects (logs on) to the database. Opens a context. Opens a database cursor.
Find

?

Creating Vuser Scripts

Chapter 9, page 144

Database Vuser Scripts • Developing Database Vuser Scripts

Statement Handling Functions
lrd_bind_col lrd_bind_cols lrd_bind_cursor lrd_bind_placeholder lrd_cancel lrd_data_info lrd_dynamic lrd_exec lrd_send_data lrd_stmt Binds a host variable to an output column. Binds a host variable array to columns. Binds a cursor to a place holder. Binds a host variable or array to a place holder. Cancels the previous statement. Gets I/O information. (CtLib only) Specifies a dynamic SQL statement to be processed (CtLib only). Executes the previously specified SQL statement. Sends data to the server. Specifies an SQL statement to be processed.
Find

?

Statement Correlating Functions
lrd_save_col lrd_save_value lrd_save_ret_param Saves the value of a table cell to a parameter. Saves a place holder descriptor value to a parameter. Saves the value of a return-parameter to a parameter (CtLib only).

Creating Vuser Scripts

Chapter 9, page 145

Database Vuser Scripts • Developing Database Vuser Scripts

Variable Handling Functions
lrd_assign lrd_assign_ext lrd_assign_literal lrd_assign_bind lrd_assign_bind_ext lrd_assign_bind_literal Assigns a null-terminated string to a variable. Assigns a storage area to a variable. Assigns a literal string (containing nullcharacters) to a variable. Assigns a null-terminated string to a variable and binds it to a place holder. Assigns a storage area value to a variable and binds it to a place holder. Assigns a literal string (containing nullcharacters) to a variable and binds it to a place holder. Converts a variable to a printable string.
Find
In

?

lrd_to_printable

Creating Vuser Scripts

Chapter 9, page 146

Database Vuser Scripts • Developing Database Vuser Scripts

Understanding Database Vuser Scripts
After you record a database session, you can view the recorded code in VuGen’s built-in editor. You can scroll through the script, see the SQL statements that were generated by your application, and examine the data returned by the server. The VuGen window provides you with the following information about the recorded database session:

• • •

the sequence of functions recorded grids displaying the data returned by database queries the number of rows fetched during a query
Find

?

Creating Vuser Scripts

Chapter 9, page 147

Database Vuser Scripts • Developing Database Vuser Scripts

Function Sequence
When you view a Vuser script in the VuGen window, you see the sequence in which VuGen recorded your activities. For example, the following sequence of functions is recorded during a typical Oracle database session: lrd_init lrd_open_connection lrd_open_cursor lrd_stmt lrd_bind_col lrd_exec lrd_fetch lr_commit lr_close_cursor lrd_close_connection lrd_end Initializes the environment. Connects to the database server. Opens a database cursor. Associates an SQL statement with a cursor. Binds a host variable to a column. Executes an SQL statement. Fetches the next record in the result set. Commits a database transaction. Closes a cursor. Disconnects from the database server. Cleans up the environment.
Find
In

?

Creating Vuser Scripts

Chapter 9, page 148

Database Vuser Scripts • Developing Database Vuser Scripts

In the following script, VuGen recorded the actions of an operator who opened a connection to an Oracle server and then performed a query requesting the local settings. lrd_init(&InitInfo, DBTypeVersion); lrd_open_connection(&Con1, LRD_DBTYPE_ORACLE, "s1", "tiger", "hp1", "", 0, 0, 0); lrd_open_cursor(&Csr1, Con1, 0); lrd_stmt(Csr1, "select parameter, value from v$nls_parameters " " where (upper(parameter) in ('NLS_SORT','NLS_CURRENCY'," "'NLS_ISO_CURRENCY', 'NLS_DATE_LANGUAGE'," "'NLS_TERRITORY'))", -1, 0 /*Non deferred*/, 1 /*Dflt Ora Ver*/, 0); lrd_bind_col(Csr1, 1, &D1, 0, 0); lrd_bind_col(Csr1, 2, &D2, 0, 0); lrd_exec(Csr1, 0, 0, 0, 0, 0); lrd_fetch(Csr1, 7, 7, 0, PrintRow2, 0); ... lrd_close_cursor(&Csr1, 0); lrd_commit(0, Con1, 0); lrd_close_connection(&Con1, 0, 0); lrd_end(0);

Find

?

Creating Vuser Scripts

Chapter 9, page 149

Database Vuser Scripts • Developing Database Vuser Scripts Grids
The data returned by a database query during a recording session is displayed in a grid. By viewing the grid you can determine how your application generates SQL statements and the efficiency of your client/server system. In the following example, VuGen displays a grid for a query executed on an employee database. The query retrieves the last name, first name, ID number and department for all employees in the Accounting department.
In

Find

?

Creating Vuser Scripts

Chapter 9, page 150

Database Vuser Scripts • Developing Database Vuser Scripts

The grid columns are adjustable in width. You can scroll up to 100 rows using the scroll bar. To show or hide the grid select View > Data Grids.

Find

?

Creating Vuser Scripts

Chapter 9, page 151

Database Vuser Scripts • Developing Database Vuser Scripts

Row Information
VuGen generates an lrd_fetch function for each SQL query. lrd_fetch(Csr1, -4, 1, 0, PrintRow7, 0); The second parameter of the function indicates the number of rows fetched. This number can be positive or negative. Positive Row Values A positive value shows the number of rows fetched during recording, and indicates that not all rows were fetched. (For example, if the operator cancelled the query before it was completed.) In the following example, four rows were retrieved during the database query, but not all of the data was fetched. lrd_fetch(Csr1, 4, 1, 0, PrintRow7, 0); During execution, the script always retrieves the number of rows indicated by the positive value (provided the rows exist.)
Find
In

?

Creating Vuser Scripts

Chapter 9, page 152

Database Vuser Scripts • Developing Database Vuser Scripts

Negative Row Values A negative row value indicates that all available rows were fetched during recording. The absolute value of the negative number is the number of rows fetched. In the following example, all four rows of the result set were retrieved: lrd_fetch(Csr1, -4, 1, 0, PrintRow7, 0); When you execute an lrd_fetch statement containing a negative row value, it retrieves all of the available rows in the table at the time of the run—not necessarily the number at the time of recording. In the above example, all four rows of the table were retrieved during the recording session. However, if more rows are available during script execution, they are all retrieved. Online Function Reference For more information about lrd_fetch, refer to the LoadRunner Online Function Reference (available from the VuGen Help menu).
Find

?

Creating Vuser Scripts

Chapter 9, page 153

Database Vuser Scripts • Developing Database Vuser Scripts

Evaluating Error Codes
In

When LoadRunner executes an LRD function, the function always generates a return code. A return code of 0 indicates that the function succeeded. For example, a return code of 0 indicates that another row is available from the result set. If an error occurs, the return code indicates the type of error. For example, a return code of 2014 indicates that an error occurred in the initialization. There are four types of return codes, each represented by a numerical range:
Find Type of Return Code Informational Warning Error Internal Error Range 0 to 999 1000 to 1999 2000 to 2999 5000 to 5999

?

Online Function Reference

For more detailed information on the return codes, refer to the LoadRunner Online Function Reference (available from the VuGen Help menu).

Creating Vuser Scripts

Chapter 9, page 154

Database Vuser Scripts • Developing Database Vuser Scripts

You can evaluate the return code of an LRD function to determine if the function succeeded. The following script segment evaluates the return code of an lrd_fetch function: static int rc; rc=lrd_fetch(Csr15, -13, 0, 0, PrintRow4, 0); if (rc==0) lr_output_message("The function succeeded"); else lr_output_message("The function returned an error code:%d",rc);

Find

?

Creating Vuser Scripts

Chapter 9, page 155

Database Vuser Scripts • Developing Database Vuser Scripts

Handling Errors
In

You can control how the Controller and VuGen handle errors when you run a database Vuser script. By default, if an error occurs during script execution, the script execution is terminated. To change the default behavior, you can instruct LoadRunner to continue when an error occurs. You can apply this behavior:

• •

globally—to the entire script, or to a segment of the script locally—to a specific function only
Find

?

Creating Vuser Scripts

Chapter 9, page 156

Database Vuser Scripts • Developing Database Vuser Scripts

Modifying Error Handling Globally
You can change the way that LoadRunner handles errors by issuing an LRD_ON_ERROR_CONTINUE or LRD_ON_ERROR_EXIT statement. By default, LoadRunner aborts the script execution upon any type of error—database, parameter related, etc. To change the default behavior, insert the following line into your script: LRD_ON_ERROR_CONTINUE;
Find

From this point on, LoadRunner continues script execution, even when an error occurs. You can also specify that LoadRunner continues script execution when an error occurs only within a segment of the script. For example, the following code tells LoadRunner to continue script execution even if an error occurs in the lrd_stmt or lrd_exec functions: LRD_ON_ERROR_CONTINUE; lrd_stmt(Csr1, "select…"…); lrd_exec(…); LRD_ON_ERROR_EXIT; Use the LRD_ON_ERROR_CONTINUE statement with caution, as significant and severe errors may be missed.

?

Creating Vuser Scripts

Chapter 9, page 157

Database Vuser Scripts • Developing Database Vuser Scripts

Modifying Error Handling Locally
You can set error handling for a specific function by modifying the severity level. Functions such as lrd_stmt and lrd_exec, which perform database operations, use severity levels. The severity level is indicated by the function's final parameter, miDBErrorSeverity. This parameter tells LoadRunner whether or not to continue script execution when a database error occurs (error code 2009). The default, 0, indicates that LoadRunner should abort the script when an error occurs. For example, if the following database statement fails (e.g., the table does not exist), then the script execution terminates. lrd_stmt(Csr1, "insert into EMP values ('Smith',301)\n", -1, 1 /*Deferred*/, 1 /*Dflt Ora Ver*/, 0); To tell LoadRunner to continue script execution, even when a database operation error occurs for that function, change the statement's severity parameter from 0 to 1. lrd_stmt(Csr1, "insert into EMP values ('Smith',301)\n", -1, 1 /*Deferred*/, 1 /*Dflt Ora Ver*/, 1); When the severity is set to 1 and a database error occurs, a warning is issued. Note that the severity level set for a particular function applies only to that function.
In

Find

?

Creating Vuser Scripts

Chapter 9, page 158

Database Vuser Scripts • Developing Database Vuser Scripts

CtLib Result Set Errors
In CtLib recording, the application retrieves all of the available result sets after executing a statement. If the returned result set contains fetchable data, the application performs bind and fetch operations on the data as indicated in the following example: lrd_stmt(Csr15, "select * from all_types", -1, 148, -99999, 0); lrd_exec(Csr15, 0, 0, 0, 0, 0); lrd_result_set(Csr15, 1 /*Succeed*/, 4040 /*Row*/, 0); lrd_bind_col(Csr15, 1, &tinyint_D41, 0, 0); lrd_bind_col(Csr15, 4, &numeric_D42, 0, 0); ... lrd_fetch(Csr15, -9, 0, 0, PrintRow3, 0); If a result set does not contain fetchable data, bind and fetch operations cannot be performed. When you parametrize your script, result data may become unfetchable (depending on the parameters). Therefore, a CtLib session that recorded bind and fetch operations for a particular statement, may not be able to run, if the new data is unfetchable. If you try to execute an lrd_bind_col or an lrd_fetch operation, an error will occur (LRDRET_E_NO_FETCHABLE_DATA — error code 2064) and LoadRunner will terminate the script execution.

Find

?

Creating Vuser Scripts

Chapter 9, page 159

Database Vuser Scripts • Developing Database Vuser Scripts

You can override the error by telling LoadRunner to continue script execution when this type of error occurs. Insert the following line into your script: LRD_ON_FETCHABLE_SET_ERR_CONT; To return to the default mode of terminating the script execution, type the following line into your script: LRD_ON_FETCHABLE_SET_ERR_EXIT; Use this option with caution, as significant and severe errors may be missed.

In

Find

?

Creating Vuser Scripts

Chapter 9, page 160

Database Vuser Scripts
Correlating Database Statements
10 Correlating Database Statements

You can optimize and simplify Database Vuser scripts by correlating database queries. LoadRunner’s Correlated Query feature allows you to link database statements by using the results of one statement as input to another. This chapter describes:

In

• • • •

Using Correlated Query Functions Correlating a Query Automatically Correlating Queries to Optimize a Script Correlating Queries for Tables with Constraints This chapter applies to Database Vuser scripts only.
Find

?

Creating Vuser Scripts

Chapter 10, page 161

Database Vuser Scripts • Correlating Database Statements

About Correlating Database Statements
In

There are two main reasons for linking (correlating) database queries:

To simplify or optimize your code For example, if you perform a series of dependent queries one after another, your code may become very long. In order to reduce the size of the code, you can nest the queries, but then you lose preciseness and the code becomes complex and difficult to understand. Correlating the queries allows you to link queries without nesting.

Find

To successfully run the script For example, suppose you record the process of opening a new bank account. Each new account is assigned a unique number which is unknown to the user and this account number is inserted into a table with a unique key constraint during recording. If you try to run the script as recorded, it will try to create an account with the recorded number, rather than a new unique number. You will get a database error because the account number already exists. If you encounter an error when running your script, examine the script at the point where the error occurred. In many cases, a correlated query will solve the problem, by allowing you to use the results of one statement as input to another.

?

Creating Vuser Scripts

Chapter 10, page 162

Database Vuser Scripts • Correlating Database Statements

VuGen guides you through the steps of correlating queries. The main steps are: 1 Decide which value to correlate. VuGen helps you decide what to correlate. You can double-click an error message in the execution log to jump to the problematic statement in your script and search for possible values to correlate. You can also select a specific value to correlate directly from the script if you know where you can optimize your script or handle a unique constraint error. 2 Save the results. When VuGen scans your script for values to correlate, it provides a list of all matching values from the results of previous queries. You save the value of a query to a variable using the lrd_save_col function. You save the result of a database procedure using the lrd_save_value function. 3 Reference the saved values. VuGen replaces the constants in the query or database statement with the saved variables.
Find

?

Creating Vuser Scripts

Chapter 10, page 163

Database Vuser Scripts • Correlating Database Statements

Using Correlated Query Functions
In

To correlate statements, you modify your recorded script in the VuGen editor using one or more of the following LRD functions. VuGen inserts these functions for you when you use the automatic correlation process:

lrd_save_col saves the result value of a query which appears in a grid (the specified row and column) to a parameter. Use lrd_save_col when working with lrd_fetch. Place the lrd_save_col function before the fetching of the data. It assigns the value retrieved by the subsequent lrd_fetch to the specified parameter.
Find

?

Note: In general, you see which statement is problematic, and then the correlated query tool searches previous statements to find all possible values to correlate. You could also go straight to the results value of a query (grid) and select the value to save, even if you don’t intend to use it until much later on in your script. For example, suppose the server assigns a session-ID to the client, and you will not need the session-ID until later. You can automatically insert an lrd_save_col statement to save it by highlighting the value in the grid and pressing F8.

Creating Vuser Scripts

Chapter 10, page 164

Database Vuser Scripts • Correlating Database Statements

lrd_save_value saves the current value of a placeholder descriptor to a parameter. Use lrd_save_value when working with database functions that set output placeholders (such as certain stored procedures under Oracle). The lrd_save_value function assigns the current, existing value of the placeholder to a specified parameter.

lrd_save_ret_param saves a stored-procedure’s return parameter to a parameter. Use lrd_save_ret_param when working with database stored procedures in DbLib that generate return parameters. To generate an lrd_save_ret_param function, highlight the parameter in the grid and press F8. VuGen prompts you for a parameter name and places the function before the grid.
Find

?

Creating Vuser Scripts

Chapter 10, page 165

Database Vuser Scripts • Correlating Database Statements

The correlation functions have the following syntax:
In

lrd_save_col (cursor, col_number, row_number, option, "parameter_name"); lrd_save_value (&descriptor, index, 0, "parameter_name"); lrd_save_ret_param (cursor, return_param, option, "parameter_name"); If you specify a row number that does not exist, lrd_save_col retrieves the last row in the result set. To automatically retrieve the final row in the result set, specify 0 for the row_number parameter. The option parameter for lrd_save_col specifies whether to set the specified parameter by the immediately following lrd_fetch only, or by all subsequent calls to lrd_fetch: 0 1
Find

?

Following: Set the parameter by the immediately following lrd_fetch only (default). Any: Set the parameter by all lrd_fetch calls for the current statement (advanced users).

Creating Vuser Scripts

Chapter 10, page 166

Database Vuser Scripts • Correlating Database Statements

When using the second option, Any, follow these guidelines:

• •

lrd_save_col is repeated before every lrd_fetch until it is reset by one of the following functions: lrd_close_cursor, lrd_exec, lrd_stmt. lrd_save_col assigns a new value to the parameter based on the most recent fetch. If lrd_fetch is called several times for the same statement (for the same row and column), lrd_save_col sets the parameter with the values from the latest fetch. Use caution when using the Any option, since subsequent calls to lrd_save_col (for the same row and column), supersede previous ones. If the final fetch retrieves invalid data or no data, the correlation fails.
Find

?

Note: Correlated statements are not supported if the saved value is invalid or NULL (no rows returned).

Creating Vuser Scripts

Chapter 10, page 167

Database Vuser Scripts • Correlating Database Statements

Correlating a Query Automatically
In

When you use the automatic correlation process, VuGen:

• • •

scans for potential correlations inserts the appropriate lrd_save_value or lrd_save_col statement to save the results to a parameter replaces the statement value with the parameter
Find

?

Creating Vuser Scripts

Chapter 10, page 168

Database Vuser Scripts • Correlating Database Statements
To correlate a statement using the automatic correlation process: This procedure correlates an entire statement or the entire script. If you already know which value you want to correlate, proceed to the next section for instructions on correlating a specific value. 1 View the execution output to check for errors. Select View > Output to display the output folders at the bottom of the window. Check for errors in the Execution Log folder. 2 To scan a particular statement, place the cursor on the script statement for correlation.
Find

?
Note: You can double-click an output message to jump to the corresponding statement in the script.

3 Select either Vuser > Scan for Correlations (at cursor) (shortcut: Alt+F8), or Vuser > Scan for Correlations (entire script) (shortcut: Ctrl+F8). VuGen scans the script and lists all possible values to correlate in the selected statement, or the entire script, along with the matching results from previous statements. The correlation values are listed in the Correlated Query folder. The possible values for correlation are graded, based on heuristics, so you can select the best candidate for correlation.

Creating Vuser Scripts

Chapter 10, page 169

Database Vuser Scripts • Correlating Database Statements
In the following example, VuGen found many possible values to correlate for the lrd_stmt (Csr6, 1 “UPDATE...) statement.

In

Find

?

Creating Vuser Scripts

Chapter 10, page 170

Database Vuser Scripts • Correlating Database Statements

4 Begin Automatic Correlation. In the Correlated Query folder, double-click the result value to correlate to the statement value. Select Vuser > Create Correlation (shortcut: F8). VuGen prompts you to enter a name for the parameter to save the result value. 5 Specify a name for the parameter, or accept the default name and click OK to continue. VuGen inserts a statement (lrd_save_value, lrd_save_col, or lrd_save_ret_param) to save the result value to a parameter. 6 Click Yes to confirm the correlation. A message appears asking if you want to replace all occurrences of the value in the script. 7 Click No to replace only the value in the selected statement. 8 To search for additional occurrences click Yes. A Search and Replace dialog box opens. Confirm any replacements, including your original statement. VuGen replaces the statement value with a reference to the parameter. Note that if you choose to cancel the correlation, VuGen also erases the statement created in the previous step.

Find

?

Creating Vuser Scripts

Chapter 10, page 171

Database Vuser Scripts • Correlating Database Statements

To correlate a specific value using the automatic correlation process: Follow these instructions if you already know which value you want to correlate. 1 View the execution output to check for errors. Select View > Output to display the output folders at the bottom of the window. Check for errors in the Execution Log folder. 2 In the Vuser script, highlight a specific value to correlate. You can double-click an output message to jump to the corresponding statement in the script. 3 Select Vuser > Scan for Correlations (at cursor) (shortcut: Alt+F8) or select Scan for Correlations from the right-click menu. VuGen scans the script and list all results from previous statements which match this value. The correlation values are listed in the Correlated Query folder. The possible values for correlation are graded, based on heuristics, so you can select the best candidate for correlation.
Find
In

?

Creating Vuser Scripts

Chapter 10, page 172

Database Vuser Scripts • Correlating Database Statements

In the following example, VuGen found three possible matching result values to correlate to “31”.

Find

?

Creating Vuser Scripts

Chapter 10, page 173

Database Vuser Scripts • Correlating Database Statements
4 Begin Automatic Correlation. In the Correlated Query folder, double-click the result value that you want to correlate to the statement value. Select Vuser > Create Correlation (shortcut: F8). VuGen prompts you to enter a name for the parameter to save the result value. 5 Specify a name for the parameter, or accept the default name and click OK to continue. VuGen inserts a statement (lrd_save_value, lrd_save_col, or lrd_save_ret_param) to save the result value to a parameter. 6 Click Yes to confirm the correlation. A message appears asking if you want to replace all occurrences of the value in the script. 7 Click No to replace only the value in the selected statement. 8 To search for additional occurrences click Yes. A Search and Replace dialog box opens. Confirm any replacements, including your original statement. VuGen replaces the statement value with a reference to the parameter. Note that if you choose to cancel the correlation, VuGen also erases the statement created in the previous step.
Find

In

?

Note: When referencing a correlated parameter within an lrd_stmt function, the date, time, and binary (RAW, VARRAW) data types are not supported.

Creating Vuser Scripts

Chapter 10, page 174

Database Vuser Scripts • Correlating Database Statements

Correlating Queries to Optimize a Script
When performing multiple, dependent queries, you can use correlated queries to optimize your script. Instead of waiting for the result of one query before performing the second, you can link between two queries. This feature is particularly useful in load testing, where you perform similar queries several times, using different parameters. The following sections illustrate linked queries for:

• • •

simple queries (without binding) queries with binding queries using binding with output placeholders
Find

?

Creating Vuser Scripts

Chapter 10, page 175

Database Vuser Scripts • Correlating Database Statements

Simple Correlated Queries — Examples
The following examples use two tables in a database, employees and payment. Employees
id 777 778 779 ... name John Bill Mike ... id 777 778 779 ...
In

Payment:
year 1996 1995 1996 ... salary 15,000 18,000 25,000 ... Find

?

In the first example, a clerk in a company’s personnel department wants to perform a query to retrieve the salary for an employee named John. However, the table that contains the salaries only lists the salaries by employee ID. The clerk does not know John’s ID, therefore, he will have to wait for the result of the first query before performing the second query. The clerk can perform both queries with a single operation by nesting the queries.

Creating Vuser Scripts

Chapter 10, page 176

Database Vuser Scripts • Correlating Database Statements

The script below illustrates a simple correlated query. The user performed a query to retrieve John's ID of 777. A second query on a different table, retrieved the salary of the employee with the above ID. The user waited for the results of the first query, before performing the second query. lrd_stmt(Csr1, "select id from employees where name='John'", ...); lrd_bind_col(Csr1,1,&ID_D1,...); lrd_exec(Csr1, ...); lrd_fetch(Csr1, 1, ...);
Find

lrd_stmt(Csr1, "select salary from payment where id= '777'",...); lrd_exec(Csr1, ...); You can perform an identical operation by nesting the queries. However, the database statements become complex and difficult to understand. lr_think_time(17); lrd_stmt(Csr1, "select salary from sal_j1 where id = (select id from " "emp_j1 where name='John')\n", -1, 1, 1, 0); lrd_bind_col(Csr1, 1, &SALARY_D11, 0, 0); lrd_exec(Csr1, 0, 0, 0, 0, 1); lrd_fetch(Csr1, -1, 1, 0, PrintRow7, 0);

?

Creating Vuser Scripts

Chapter 10, page 177

Database Vuser Scripts • Correlating Database Statements

To correlate the queries, you save the value of a query with the lrd_save_col function. In this example, lrd_save_col saves the value of the first column and first row in the returned table (John’s ID of 777) and assigns it to a newly defined parameter, emp_id. This value is used in the second query. lrd_stmt(Csr1, "select id from employees where name='John'", ...); lrd_bind_col(Csr1,1,&ID_D1,...); lrd_exec(Csr1, ...); lrd_save_col(Csr1, 1, 1, 0, "emp_id"); lrd_fetch(Csr1, 1, ...);

In

Find

lrd_stmt(Csr1,"select salary from payment where id ='<emp_id>'",...); lrd_exec(Csr1, ...);

?

Creating Vuser Scripts

Chapter 10, page 178

Database Vuser Scripts • Correlating Database Statements

Correlating Queries with Binding—Example
The following example illustrates a correlated query that uses binding. The user performs the same query as above, but instead of using a constant, he specifies a placeholder name, id. The lrd_assign_bind statement assigns the retrieved value to a host variable. lrd_stmt(Csr1, "select id from employees where name='John'", ...); lrd_bind_col(Csr1,...); lrd_exec(Csr1, ...); lrd_fetch(Csr1, 1,...);

Find

?

lrd_stmt(Csr1, "select salary from payment where year='1996' and id=:id",...); lrd_assign_bind(Csr1, "id", "777", &id_D4, ...); lrd_exec(Csr1, ...);

Creating Vuser Scripts

Chapter 10, page 179

Database Vuser Scripts • Correlating Database Statements

To correlate the queries, you save the result of the first query to a new variable, emp_id using lrd_save_col. You replace the constant 777 with the new variable name. The saved value is assigned to the placeholder by lrd_assign_bind. lrd_stmt(Csr1, "select id from employees where name='John'", ...); lrd_bind_col(Csr1,...); lrd_exec(Csr1, ...); lrd_save_col(Csr1, 1, 1, 0, "emp_id"); lrd_fetch(Csr1, 1, ...);

In

Find

lrd_stmt(Csr1, "select salary from payment where year='1996' and id=:id",...); lrd_assign_bind(Csr1, "id", "<emp_id>", &id_D4...); lrd_exec(Csr1, ...);

?

Creating Vuser Scripts

Chapter 10, page 180

Database Vuser Scripts • Correlating Database Statements

Correlating Queries with Output Placeholders—Example
The following example illustrates a correlated query using binding with output placeholders set by a stored procedure. A stored procedure, get_emp_id, retrieves John’s id. The lrd_assign_bind function assigns the retrieved value, 777, to a host variable. lrd_stmt(Csr1, "begin :id=get_emp_id('john') end",...); lrd_bind_placeholder(Csr1, "id", &ID_D1, 0, 0); lrd_exec(Csr1, ...); lrd_stmt(Csr1, "select salary from payment where year='1996' and id=:id",...); lrd_assign_bind(Csr1, "id", "777", &id_D2, ...); lrd_exec(Csr1, ...); To correlate the queries, use the lrd_save_value function to save the value of the placeholder descriptor representing John's ID. Use this value in the second query. lrd_stmt(Csr1, "begin :id=get_emp_id('john') end", ...); lrd_bind_placeholder(Csr1, "id", &ID_D1, 0, 0); lrd_exec(Csr1, ...);lrd_save_value(&ID_D1, 0, 0, "emp_id"); lrd_stmt(Csr1, "select salary from payment where year='1996' and id=:id",...); lrd_assign_bind(Csr1, "id", "<emp_id>",&id_D2, ...); lrd_exec(Csr1, ...);

Find

?

Creating Vuser Scripts

Chapter 10, page 181

Database Vuser Scripts • Correlating Database Statements

Correlating Queries for Tables with Constraints
In

In instances where table columns have constraints such as Unique, correlating your script’s queries may be the only way to run the script. For example, if during recording, you inserted a value into a table with a Unique key constraint, you will be unable to insert the same value again. If you try to run the script as recorded, you will get a database error. The following example illustrates a query with a Unique constraint using lrd_save_col and lrd_save_value described in the above section. A company’s personnel department wants to insert a new record into the employee database. The new employee is assigned the next available ID number. In order to insert a complete record for an employee, the operator must know the next available ID number. Two employees cannot have the same ID number—ID numbers must be unique. Therefore, the operator performs a query for the number of records in the employees table. Based on that result, the operator inserts a new employee with

Find

?

Creating Vuser Scripts

Chapter 10, page 182

Database Vuser Scripts • Correlating Database Statements

the next available number, or count + 1. In the example below, the query returned a count of 4 records and therefore assigned the new employee an ID of 5, or newemp=5. The table’s columns are Name, ID, DOB, Dept, and DeptNo. lrd_stmt(Csr2, "select count(*) from employees", -1, 1 /*Deferred*/, 2 /*Ora V7*/, 0); lrd_bind_col(Csr2, 1, &COUNT_D1, 0, 0); lrd_exec(Csr2, 0, 0, 0, 0, 0); lrd_fetch(Csr2, 1, 1, 0, PrintRow2, 0);
Find

?
lrd_stmt(Csr2, "\t\tdeclare\n \tPROCEDURE new_emp (empno in integer, " "newemp out integer) is\n\t\tbegin\n\t\t\tnewemp:=empno+1;\n\t\tend " "new_emp;\n\t begin\n\t\t\tnew_emp(:empno,:newemp);\n\t\tend;", 1, -1 /*Deferred*/, 2 /*Ora V7*/, 0); lrd_assign_bind(Csr2, "empno", "4", &empno_D2, 0, 0, 0); lrd_assign_bind(Csr2, "newemp", "0", &newemp_D3, 0, 0, 0); lrd_exec(Csr2, 0, 0, 0, 0, 0); lrd_stmt(Csr2, "insert into employees values ('TOM JONES',5," "'1-JAN-97','R&D',22)", -1, 0 /*Non deferred*/, 2 /*Ora V7*/, 0); lrd_assign_bind(Csr2, "newemp", "5", &newemp_D4, 0, 0, 0); lrd_exec(Csr2, 0, 0, 0, 0, 0);

Creating Vuser Scripts

Chapter 10, page 183

Database Vuser Scripts • Correlating Database Statements

If you repeat the recorded query in its current form, the script would attempt to insert the new employee with the same employee number, 5. The script would fail, since the empno column has a Unique constraint. To enable the script to run, you need to replace the constant with a variable. This variable, saved dynamically during script execution, is used for the next query. Now, when you get the row count during execution, using select count(*), the current row count is returned, not the count generated during execution. You save the variable dynamically by adding lrd_save_col before the fetch statement.

In

Find

The following changes, indicated in bold, were made to the sample script:

?
/* Retrieve the number of records in the employees table */ lrd_stmt(Csr1, "select count(*) from employees", -1, 1 /*Deferred*/, 2 /*Ora V7*/, 0); lrd_bind_col(Csr1, 1, &COUNT_D1, 0, 0); lrd_exec(Csr1, 0, 0, 0, 0, 0); lrd_save_col(Csr1, 1, 1, 0, "row_cnt"); lrd_fetch(Csr1, 1, 1, 0, PrintRow2, 0);

Creating Vuser Scripts

Chapter 10, page 184

Database Vuser Scripts • Correlating Database Statements

After saving the count value from the first fetch, the script derives the next value with a stored procedure, using the formula newemp=empno+1. The placeholder descriptor, newemp, receives this new value when the stored procedure is executed. To use the newly assigned value of the placeholder, you save it to a variable using the lrd_save_value function. The script below saves the placeholder descriptor to the new_no variable and binds its value to a host variable. The new, dynamically saved value, is inserted into the table with the rest of the elements of the employee record. /* Define next employee's number: newemp = empno +1 */ lrd_stmt(Csr1, "\t\tdeclare\n \tPROCEDURE new_emp (empno in integer, " "newemp out integer) is\n\t\tbegin\n\t\t\tnewemp:=empno+1;\n\t\tend " "new_emp;\n\t begin\n\t\t\tnew_emp(:empno,:newemp);\n\t\tend;", -1, -1 /*Deferred*/, 2 /*Ora V7*/, 0); /* Bind the placeholder values to the variables. */ lrd_assign_bind(Csr1, "empno", "<row_cnt>", &empno_D2, 0, 0, 0); lrd_assign_bind(Csr1, "newemp", "0", &newemp_D3, 0, 0, 0); lrd_exec(Csr1, 0, 0, 0, 0, 0); lrd_save_value(&newemp_D3, 0, 0, "new_no"); lrd_stmt(Csr2, "insert into employees values ('TOM JONES',:newemp," "'1-JAN-97','R&D',22)", -1, 0 /*Non deferred*/, 2 /*Ora V7*/, 0); lrd_assign_bind(Csr2, "newemp", "<new_no>", &newemp_D4, 0, 0, 0); lrd_exec(Csr2, 0, 0, 0, 0, 0);

Find

?

Creating Vuser Scripts

Chapter 10, page 185

Part IV

Tuxedo Vuser Scripts
Find

?

Creating Vuser Scripts

186

Tuxedo Vuser Scripts
Developing TUXEDO Vuser Scripts
11 Developing TUXEDO Vuser Scripts

You use VuGen to record communication between a TUXEDO client application and a TUXEDO application server. The resulting script is called a TUXEDO Vuser script. This chapter describes:

In

• • • • •

Getting Started with TUXEDO Vuser Scripts Using LRT Functions Understanding Tuxedo Vuser Scripts Correlating Queries Defining Environment Settings for TUXEDO Vusers This chapter applies to Tuxedo Vuser scripts only.
Find

?

Creating Vuser Scripts

Chapter 11, page 187

Tuxedo Vuser Scripts • Developing TUXEDO Vuser Scripts

About TUXEDO Vuser Scripts
When you record a TUXEDO application, VuGen generates LRT functions that describe the recorded actions. These functions emulate communication between a TUXEDO client and a server. Each LRT function begins with an lrt prefix. In addition to the lrt prefix, certain functions use an additional prefix of tp, tx or F. These sub-prefixes indicate the function type, similar to the actual TUXEDO functions. The tp sub-prefix indicates a TUXEDO client tp session. For example, lrt_tpcall sends a service request and awaits its reply. The tx sub-prefix indicates a global tx session. For example, lrt_tx_begin begins a global transaction. The F sub-prefix indicates an FML buffer related function. For example, lrt_Finitialize initializes an existing buffer. Functions without an additional prefix emulate standard C functions. For example, lrt_strcpy copies a string, similar to the C function strcpy. You can view and edit the recorded script from VuGen’s main window. The LRT functions that are recorded during the session are displayed in the VuGen window, allowing you to visually track your network activities.
In

Find

?

Before You Record
If the environment variables have changed since the last time you restarted VuGen, LoadRunner may record the original variable value rather than the current value. To avoid any inconsistencies, you should restart VuGen before recording TUXEDO applications.

Creating Vuser Scripts

Chapter 11, page 188

Tuxedo Vuser Scripts • Developing TUXEDO Vuser Scripts

Getting Started with TUXEDO Vuser Scripts
This section provides an overview of the process of developing TUXEDO Vuser scripts using VuGen. To develop a TUXEDO Vuser script: 1 Record the basic script using VuGen. Invoke VuGen and create a new Vuser script. Specify TUXEDO or TUXEDO63 (for recording TUXEDO Version 6.3) as the type of Vuser. Choose an application to record. Record typical operations on your application. For details, see Chapter 3, Recording with VuGen. 2 Enhance the script. Enhance the Vuser script by inserting transactions, rendezvous points, and control-flow structures into the script. For details, see Chapter 4, Enhancing Vuser Scripts. 3 Define parameters (optional). Define parameters for the fixed-values recorded into your script. By substituting fixed-values with parameters, you can repeat the same business process many times using different values. For details, see Chapter 5, Defining Parameters.

Find

?

Creating Vuser Scripts

Chapter 11, page 189

Tuxedo Vuser Scripts • Developing TUXEDO Vuser Scripts

4 Correlate statements (optional). Correlating statements enables you to use the result of one business process in a subsequent one. For details, see Correlating Queries on page 201. 5 Configure the run-time settings. The run-time settings control the Vuser behavior during script execution. These settings include loop, log, and timing information. For details, see Chapter 6, Configuring Run-Time Settings. 6 Run the script from VuGen. Save and run the script from VuGen to verify that it runs correctly. For details, see Chapter 7, Running Vuser Scripts in Stand-Alone Mode. After you create a TUXEDO Vuser script, you integrate it into a LoadRunner scenario on either a Windows or UNIX platform. For more information on integrating Vuser scripts in a scenario, refer to your LoadRunner Controller User’s Guide.
Find
In

?

Creating Vuser Scripts

Chapter 11, page 190

Tuxedo Vuser Scripts • Developing TUXEDO Vuser Scripts

Using LRT Functions
The functions developed to emulate a TUXEDO client communications with a server are called LRT functions. Each LRT Vuser function has an lrt prefix. This section lists the LRT functions that VuGen records during a TUXEDO session. For more information about the LRT functions, refer to the LoadRunner Online Function Reference (available from the VuGen Help menu).

Online Function Reference

Note: Some of the FML buffer functions indicate an optional “32” in the function name. These are the FML32 versions of the functions.

Find

?

Creating Vuser Scripts

Chapter 11, page 191

Tuxedo Vuser Scripts • Developing TUXEDO Vuser Scripts

Buffer Manipulation Functions
lrt_Fadd[32]_fld lrt_Finitialize[32] lrt_Fldid[32] lrt_Fname[32] lrt_Fidnm_unload[32] lrt_CFgetalloc[32] Adds a new field to an FML buffer. Initializes an existing FML buffer fbfr. Maps a field name to a field identifier. Provides a map field identifier to field name. Recovers space allocated for a field identifier to field name. Gets a specified field from a buffer, allocates space, converts the field to the type specified by the user and returns a pointer to its location. Copies the specified amount of bytes from the source to the destination. Returns a pointer to a buffer of type type. Changes the size of a typed buffer. Copies a string like the C function strcpy. Frees a typed buffer. Determines information about a typed buffer.
Find
In

?

lrt_memcpy lrt_tpalloc lrt_tprealloc lrt_strcpy lrt_tpfree lrt_tptype

Creating Vuser Scripts

Chapter 11, page 192

Tuxedo Vuser Scripts • Developing TUXEDO Vuser Scripts Environment Variable Functions
lrt_AEWgetenv lrt_AEWputenv lrt_set_env_list lrt_tuxgetenv lrt_tuxputenv lrt_tuxreadenv Retrieves the return values for an environment name. Changes or adds a value to an environment. Sets a list of environment variables. Returns a value corresponding to an environment name. Modifies an existing environment value or adds a value to the environment. Adds a variable to the environment from a file.
Find

?

Error Processing Functions
lrt_abort_on_error lrt_Fstrerror[32] lrt_getFerror[32] lrt_gettperrno lrt_gettpurcode lrt_tpstrerror Aborts the current transaction, if the previous TUXEDO function call resulted in an error. Retrieves error message string for FML error. Retrieves the error status code for the last FML operation that failed. Retrieves the error status code for the last TUXEDO transaction monitor function. Retrieves the application return code. Retrieves error message string for System/T error.

Creating Vuser Scripts

Chapter 11, page 193

Tuxedo Vuser Scripts • Developing TUXEDO Vuser Scripts Client/Server Session Functions
lrt_tpchkauth lrt_tpinitialize lrt_tpterm Checks if authentication is required by the application. Enables a client to join a System/T application. Removes a client from a System/T application.
In

Blocking Call Handling Functions
lrt_AEWisblocked Enables a Windows task to determine if it is executing while waiting for a previous blocking call to complete. Establishes an application-specific blocking hook function.
Find

lrt_AEWsetblockinghook

?

Correlating Statement Function
lrt_save[32]_fld_val lrt_save_parm lrt_save_searched_string Saves the current value of an FML buffer to a parameter. Saves a character from a STRING or CARRAY buffer to a parameter. Searches for an occurence of a string in a STRING or CARRAY buffer and saves the specified number of characters from the specified string offset to a parameter.

Creating Vuser Scripts

Chapter 11, page 194

Tuxedo Vuser Scripts • Developing TUXEDO Vuser Scripts Communication Functions
lrt_tpacall lrt_tpbroadcast lrt_tpcall lrt_tpcancel lrt_tpchkunsol lrt_tpconnect lrt_tpdiscon lrt_tpenqueue lrt_tpgetrply lrt_tpgprio lrt_tpnotify lrt_tprecv lrt_tpsend lrt_tpsetunsol lrt_tpsprio lrt_tpunsubscribe Sends a service request. Broadcasts notification by name. Sends a service request and awaits its reply. Cancels a call descriptor. Checks for an unsolicited message. Establishes a conversational service connection. Terminates a conversational service connection. Stores a message in the queue. Returns a reply from a previously sent request. Returns the priority for the last request sent or received. Sends notification to a client. Receives a message in a conversational connection. Sends a message in a conversational connection. Sets the method for handling unsolicited messages. Sets the priority for the next request sent or forwarded. Unsubscribes to an event.
Find

?

Creating Vuser Scripts

Chapter 11, page 195

Tuxedo Vuser Scripts • Developing TUXEDO Vuser Scripts Transaction Handling Functions
lrt_tpabort lrt_tpbegin lrt_tpcommit lrt_tpgetlev lrt_tpresume lrt_tpscmt lrt_tpsuspend lrt_tx_begin lrt_tx_close lrt_tx_commit lrt_tx_info lrt_tx_open lrt_tx_rollback lrt_tx_set_commit_return lrt_tx_set_transaction_control lrt_tx_set_transaction_timeout Aborts the current transaction.
In

Begins a transaction. Commits the current transaction. Checks if a transaction is in progress. Resumes a global transaction. Sets when lrt_tpcommit should return. Suspends a global transaction. Begins a global transaction. Closes a set of resource managers. Commits a global transaction. Returns global transaction information. Opens a set of resource managers. Rolls back a global transaction. Sets the commit_return characteristic to the value specified in when_return. Sets the transaction_control characteristic to the value specified in control. Sets the transaction_timeout characteristic to the value specified in timeout.
Find

?

Creating Vuser Scripts

Chapter 11, page 196

Tuxedo Vuser Scripts • Developing TUXEDO Vuser Scripts

Understanding Tuxedo Vuser Scripts
After you record a session, VuGen’s built-in editor lets you view the recorded code. You can scroll through the script, see TUXEDO statements that were generated by your application, and examine the data that was returned by the server. The VuGen window provides you with valuable information about the recorded TUXEDO session. When you view the script in the main window, you see the sequence in which VuGen recorded your activities. In the following example, VuGen recorded a client’s actions in a TUXEDO bank application. The client performed an action of opening a bank account and specifying all the necessary details. The session was aborted when the client specified a zero opening balance. lrt_abort_on_error(); lr_think_time(65); tpresult_int = lrt_tpbegin(30, 0); data_0 = lrt_tpalloc("FML", "", 512); lrt_Finitialize((FBFR*)data_0);
Find

?

Creating Vuser Scripts

Chapter 11, page 197

Tuxedo Vuser Scripts • Developing TUXEDO Vuser Scripts
/* Fill the data buffer data_0 with new account information */ lrt_Fadd_fld((FBFR*)data_0, "name=BRANCH_ID", "value=8", LRT_END_OF_PARMS); lrt_Fadd_fld((FBFR*)data_0, "name=ACCT_TYPE", "value=C", LRT_END_OF_PARMS); lrt_Fadd_fld((FBFR*)data_0, "name=MID_INIT", "value=Q", LRT_END_OF_PARMS); lrt_Fadd_fld((FBFR*)data_0,"name=PHONE","value=123-456-7890", LRT_END_OF_PARMS); lrt_Fadd_fld((FBFR*)data_0, "name=ADDRESS", "value=1 Broadway New York, NY 10000", LRT_END_OF_PARMS); lrt_Fadd_fld((FBFR*)data_0,"name=SSN","value=111111111", LRT_END_OF_PARMS); lrt_Fadd_fld((FBFR*)data_0,"name=LAST_NAME", "value=Doe",LRT_END_OF_PARMS); lrt_Fadd_fld((FBFR*)data_0,"name=FIRST_NAME", "value=BJ",LRT_END_OF_PARMS); lrt_Fadd_fld((FBFR*)data_0, "name=SAMOUNT", "value=0.00",LRT_END_OF_PARMS); /* Open a new account */ tpresult_int = lrt_tpcall("OPEN_ACCT", data_0, 0, &data_0, &olen_2, 0); lrt_tpabort(0); lrt_tpcommit(0); lrt_tpfree(data_0); lrt_tpterm();

In

Find

?

Creating Vuser Scripts

Chapter 11, page 198

Tuxedo Vuser Scripts • Developing TUXEDO Vuser Scripts

Using Parameters in TUXEDO Scripts
You can define parameters in TUXEDO scripts, as described in Chapter 5, Defining Parameters. Note that TUXEDO scripts contain strings of type “name=...” or “value=...”. You can only define parameters for the portion of the string following the equal sign (=). For example: lrt_Fadd_fld((FBFR*)data_0,"name=PHONE","value=<parameter_1>", LRT_END_OF_PARMS);
Find

?

Creating Vuser Scripts

Chapter 11, page 199

Tuxedo Vuser Scripts • Developing TUXEDO Vuser Scripts

Running TUXEDO Scripts
If you encounter problems recording or running TUXEDO applications, check that the TUXEDO application runs without LoadRunner, and that the environment variables have been defined correctly. For more information, see Defining Environment Settings for TUXEDO Vusers on page 206. Note that after you set or modify the TUXEDO variables, you must reboot the machine in order for the changes to take effect. If you experience problems during execution, check the TUXEDO log file on the side of the server for error messages. By default, this file is found in the directory indicated by the environment variable APPDIR. The file name has the form ULOG.mmddyy, where mmddyy indicates the current month, day, and year. The file for March 12, 1997 would be ULOG.031297. The default location of this file can be changed by setting the environment variable ULOGPFX on the server. A log file can also be found on the client side, in the current directory, unless the ULOGPFX variable changes its location.
In

Find

?

Creating Vuser Scripts

Chapter 11, page 200

Tuxedo Vuser Scripts • Developing TUXEDO Vuser Scripts

Correlating Queries
LoadRunner supports correlated queries (and other TUXEDO statements) for Vuser scripts recorded with TUXEDO applications. Correlated queries allow you to link statements by using the output of one statement for another. For example, suppose you record a script where you open a new bank account and deposit money. When you run the script, it will create another new account, but you will not be able to deposit money into the new account because you won’t know the new account number. To solve this, use a correlated query to save the new account number and then use the number as a parameter in the deposit statement.

Find

?

Creating Vuser Scripts

Chapter 11, page 201

Tuxedo Vuser Scripts • Developing TUXEDO Vuser Scripts

To correlate statements, you modify your recorded script within the VuGen editor using one of the following LRT functions:

In

• •

lrt_save_fld_val saves the current value of an FML buffer (a string in the form “name=<NAME>” or “id=<ID>”) to a parameter lrt_save32_fld_val saves the current value of an FML32 buffer (a string in the form “name=<NAME>” or “id=<ID>”) to a parameter These functions have the following syntax: int lrt_save_fld_val(FBFR* fbfr, char* name, FLDOCC occ, char* paramName) int lrt_save32_fld_val(FBFR32* fbfr, char* name, FLDOCC32 occ, char* paramName) The two functions are equivalent, except for the type of FML buffer (FML or FML32). You can use the saved buffer contents in subsequent statements by referencing the parameter name (defined in paramName) in angle brackets.
Find

?

Creating Vuser Scripts

Chapter 11, page 202

Tuxedo Vuser Scripts • Developing TUXEDO Vuser Scripts

To correlate statements using lrt_save_fld_val: 1 Insert the lrt_save_fld_val statement in your script where you want to save the contents of the current FML (or FML32) buffer. Set the function arguments: fbfr name occ paramName Specify the FML buffer whose contents you want to save. Reference the name of the FML buffer, in the form "name=<NAME>" or "id=<ID>". Use this id to reference the buffer by occurrence, rather than by name (0 for 1st occurrence, 1 for 2nd, etc.). Define the parameter name to be used in subsequent lrt statements to reference to the saved information. Enclose the name in double-quotes.
Find

?

2 Reference the parameter. Locate the lrt statements with the recorded values that you want to replace with the contents of the saved buffer. Replace all instances of the recorded values with the parameter name in angle brackets.

Creating Vuser Scripts

Chapter 11, page 203

Tuxedo Vuser Scripts • Developing TUXEDO Vuser Scripts

Sample Correlated Query
In

/* Fill the data_0 buffer with new account information*/ data_0 = lrt_tpalloc("FML", "", 512); lrt_Finitialize((FBFR*)data_0); lrt_Fadd_fld((FBFR*)data_0, "name=BRANCH_ID", "value=1", LRT_END_OF_PARMS); lrt_Fadd_fld((FBFR*)data_0, "name=ACCT_TYPE", "value=S", LRT_END_OF_PARMS); lrt_Fadd_fld((FBFR*)data_0, "name=PHONE", "value=111-111-1111", LRT_END_OF_PARMS); lrt_Fadd_fld((FBFR*)data_0, "name=ADDRESS", "value=1 Broadway New York, NY 11111", LRT_END_OF_PARMS); lrt_Fadd_fld((FBFR*)data_0, "name=SSN", "value=111-11-1111", LRT_END_OF_PARMS); lrt_Fadd_fld((FBFR*)data_0, "name=LAST_NAME", "value=Doe", LRT_END_OF_PARMS); lrt_Fadd_fld((FBFR*)data_0, "name=FIRST_NAME", "value=John", LRT_END_OF_PARMS); lrt_Fadd_fld((FBFR*)data_0, "name=SAMOUNT", "value=234.12", LRT_END_OF_PARMS); /* Open a new account and save the new account number*/ tpresult_int = lrt_tpcall("OPEN_ACCT", data_0, 0,&data_0, &olen_2, 0); lrt_abort_on_error(); lrt_save_fld_val((FBFR*)data_0,"name=ACCOUNT_ID",0,"account_id");

Find

?

Creating Vuser Scripts

Chapter 11, page 204

Tuxedo Vuser Scripts • Developing TUXEDO Vuser Scripts

/* Use result from first query to fill buffer for the deposit*/ lrt_Finitialize((FBFR*)data_0); lrt_Fadd_fld((FBFR*)data_0, "name=ACCOUNT_ID", "value=<account_id>", LRT_END_OF_PARMS); lrt_Fadd_fld((FBFR*)data_0, "name=SAMOUNT", "value=200.11", LRT_END_OF_PARMS); /* Deposit money into the new account */ tpresult_int = lrt_tpcall("DEPOSIT", data_0, 0, &data_0, &olen_7, 0); lrt_abort_on_error(); Some systems represent a field by an id number rather than a field name during recording. You can correlate by field id as follows: lrt_save_fld_val((FBFR*)data_0, "id=8302", 0, "account_id");

Find

?

Creating Vuser Scripts

Chapter 11, page 205

Tuxedo Vuser Scripts • Developing TUXEDO Vuser Scripts

Defining Environment Settings for TUXEDO Vusers
In

The following section describes the system variable settings for TUXEDO Vusers running on Windows and UNIX platforms. You define the system variables in your autoexec.bat (for Windows 3.1), Control Panel/System dialog box (NT), or .cshrc or .login file (UNIX). ROOTDIR TUXDIR FLDTBLDIR the root directory for TUXEDO 4.2 sources. the root directory for TUXEDO 5.x and higher sources. list of directories containing FML buffer information. In Windows, separate the names of directories with semicolons. On UNIX platforms, separate the names of the directories with a colon. list of files containing FML buffer information. On both Windows and UNIX platforms, separate the file names with commas.
Find

?

FIELDTBLS

Creating Vuser Scripts

Chapter 11, page 206

Tuxedo Vuser Scripts • Developing TUXEDO Vuser Scripts

For example: SET FLDTBLDIR=%TUXDIR%\udataobj;%TUXDIR%\APPS\WS (PC) SET FIELDTBLS=bankflds,usysflds (PC) setenv FLDTBLDIR $TUXDIR/udataobj:$TUXDIR/apps/bankapp (Unix) setenv FIELDTBLS bank.flds,Usysflds (Unix) You must define the following system variables for TUXEDO clients using TUXEDO/WS workstation extensions during execution: WSNADDR specifies the network address of the workstation listener process. This enables the client application to access TUXEDO. Note that to define multiple addresses in a WSNADDR statement, each address must be separated by a comma. specifies the device that accesses the network. Note that you do not need to define this variable for some network protocols.

Find

?

WSDEVICE

For example: SET WSNADDR=0x0002ffffc7cb4e4a (PC) setenv WSNADDR 0x0002ffffc7cb4e4a (Unix) setenv WSDEVICE /dev/tcp (Unix)

Creating Vuser Scripts

Chapter 11, page 207

Part V

Windows Sockets Vuser Scripts
Find

?

Creating Vuser Scripts

208

Windows Sockets Vuser Scripts
Developing Windows Sockets Vuser Scripts
12 Developing Windows Sockets Vuser Scripts

You use VuGen to record communication between a client application and a server that communicate using the Windows Sockets protocol. The resulting script is called a Windows Sockets Vuser script. This chapter describes:

In

• • • • • • • • •

Getting Started with Windows Sockets Vuser Scripts Using LRS Functions Understanding Windows Sockets Vuser Scripts Viewing Windows Sockets Data Using Winsock Data Buffers Understanding Data Files Correlating Statements Working with Correlated Scripts Determining Character Offsets for Parameterization This chapter applies to Windows Sockets Vuser scripts only.
Find

?

Creating Vuser Scripts

Chapter 12, page 209

Windows Sockets Vuser Scripts • Developing Windows Sockets Vuser Scripts

About Recording Windows Sockets Vuser Scripts
In

The Windows Sockets protocol is ideal for analyzing the low level code of an application. For example, to check your network, you can use a WinSock Vuser to see the actual data sent and received by the buffers. In addition, using the low level code, you can record and replay applications that are not supported by any of the other Vuser types. When you record an application which uses the Windows Sockets protocol, VuGen generates LRS functions that describe the recorded actions. Each function begins with an lrs prefix. The LRS functions relate to the sockets, data buffers, and the Windows Sockets environment. Using VuGen, you record your application’s API calls to the Winsock.dll or Wsock32.dll. For example, you could create a script by recording the actions of a telnet application. In the following example, lrs_send sends data to a specified socket: lrs_send("socket22", "buf44", LrsLastArg); You can view and edit the recorded script from VuGen’s main window. The Windows Sockets API calls that were recorded during the session are displayed in the window, allowing you to track your network activities.

Find

?

Creating Vuser Scripts

Chapter 12, page 210

Windows Sockets Vuser Scripts • Developing Windows Sockets Vuser Scripts

Getting Started with Windows Sockets Vuser Scripts
This section provides an overview of the process of developing Windows Sockets Vuser scripts using VuGen. To develop a Windows Sockets Vuser script: 1 Record the basic script using VuGen. Invoke VuGen and create a new Vuser script. Specify WINSOCK as the type of Vuser. Choose an application to record. Record typical operations on your application. For details, see Chapter 3, Recording with VuGen. 2 Enhance the script. Enhance the Vuser script by inserting transactions, rendezvous points, and control-flow structures into the script. For details, see Chapter 4, Enhancing Vuser Scripts. 3 Define parameters (optional). Define parameters for the fixed-values recorded into your script. By substituting fixed-values with parameters, you can repeat the same business process many times using different values. For details, see Chapter 5, Defining Parameters.

Find

?

Creating Vuser Scripts

Chapter 12, page 211

Windows Sockets Vuser Scripts • Developing Windows Sockets Vuser Scripts

4 Correlate statements (optional). Correlating statements enables you to use the result of one business process in a subsequent one. For details, see Correlating Statements on page 223. 5 Configure the run-time settings. The run-time settings control the Vuser behavior during script execution. These settings include loop, log, and timing information. For details, see Chapter 6, Configuring Run-Time Settings. 6 Run the script from VuGen. Save and run the script from VuGen to verify that it runs correctly. For details, see Chapter 7, Running Vuser Scripts in Stand-Alone Mode. After you create a Windows Sockets Vuser script, you integrate it into a LoadRunner scenario on either a Windows or UNIX platform. For more information on integrating Vuser scripts in a scenario, refer to your LoadRunner Controller User’s Guide.
Find
In

?

Creating Vuser Scripts

Chapter 12, page 212

Windows Sockets Vuser Scripts • Developing Windows Sockets Vuser Scripts

Using LRS Functions
The functions developed to emulate communication between a client and a server by using the Windows Sockets protocol are called LRS Vuser functions. Each LRS Vuser function has an lrs prefix. This section lists the LRS functions that VuGen generates while recording a Windows Sockets session. You can also manually program any of the functions into your script. For more information about the LRS functions, refer to the LoadRunner Online Function Reference (available from the VuGen Help menu).
Find

Online Function Reference

Socket Functions
lrs_accept_connection lrs_close_socket lrs_create_socket lrs_disable_socket lrs_get_socket_attrib lrs_receive lrs_receive_ex lrs_send lrs_set_socket_options Accepts a connection on a listening socket. Closes an open socket. Initializes a socket. Disables an operation on a socket. Gets a socket’s attributes. Receives data from a datagram or stream socket. Receives data of a specific length from a datagram or stream socket. Sends data on a datagram or to a stream socket. Sets a socket option.

?

Creating Vuser Scripts

Chapter 12, page 213

Windows Sockets Vuser Scripts • Developing Windows Sockets Vuser Scripts

Buffer Functions
lrs_get_buffer_by_name Gets a buffer and its size from the data file.
In

lrs_get_last_received_buffer Gets the last buffer received on the socket and its size. lrs_get_received_buffer lrs_get_static_buffer lrs_get_user_buffer lrs_get_user_buffer_size lrs_free_buffer lrs_set_send_buffer lrs_ascii_to_ebcdic lrs_ebcdic_to_ascii Gets the last received buffer or a part of it. Gets a static buffer or a part of it. Gets the contents of the user data for a socket. Gets the size of the user data for a socket. Frees the memory allocated for the buffer. Specifies a buffer to send on a socket. Converts buffer data from ASCII format to EBCDIC format. Converts buffer data from EBCDIC format to ASCII format.
Find

?

Creating Vuser Scripts

Chapter 12, page 214

Windows Sockets Vuser Scripts • Developing Windows Sockets Vuser Scripts

Environment Functions
lrs_startup lrs_cleanup Initializes the Windows Sockets DLL. Terminates the use of the Windows Sockets DLL.

Correlating Statement Functions
lrs_save_param lrs_save_param_ex Saves a static or received buffer (or part of it) to a parameter. Saves a user, static, or received buffer (or part of it) to a parameter.
Find

?

Timeout Functions
lrs_set_accept_timeout lrs_set_recv_timeout lrs_set_send_timeout Sets a timeout for accepting a socket. Sets a timeout for receiving the expected data on a socket. Sets a timeout for sending data on a socket.

Creating Vuser Scripts

Chapter 12, page 215

Windows Sockets Vuser Scripts • Developing Windows Sockets Vuser Scripts

Understanding Windows Sockets Vuser Scripts
In

After you record a session, VuGen’s built-in editor lets you view the recorded code. You can scroll through the script, view the functions that were generated by your application, and examine the transferred data. When you view the script in the main window, you see the sequence in which VuGen recorded your activities. The following functions are recorded during a typical session: lrs_startup lrs_create_socket lrs_send lrs_receive lrs_disable_socket lrs_close_socket lrs_cleanup Initializes the WinSock DLL. Initializes a socket. Sends data on a datagram or to a stream socket. Receives data from a datagram or stream socket. Disables an operation on a socket. Closes an open socket. Terminates the use of the WinSock DLL.
Find

?

VuGen supports record and run for applications using Windows Socket protocol on Windows, and run only for Windows Socket protocol on UNIX platforms.

Creating Vuser Scripts

Chapter 12, page 216

Windows Sockets Vuser Scripts • Developing Windows Sockets Vuser Scripts

Viewing Windows Sockets Data
When you use VuGen to create a Windows Sockets Vuser script, your actions are recorded into the three sections of the script: vuser_init, Actions, and vuser_end. In addition to the Vuser script, VuGen also creates a data file, data.ws, that contains the data that was transmitted or received during the recording session. You can use VuGen to view the contents of the data file by selecting data.ws in the Data Files box of the main VuGen window.
Find

?

Creating Vuser Scripts

Chapter 12, page 217

Windows Sockets Vuser Scripts • Developing Windows Sockets Vuser Scripts

The option to view a data file is available by default for Windows Sockets Vuser scripts.

In

Find

?

Creating Vuser Scripts

Chapter 12, page 218

Windows Sockets Vuser Scripts • Developing Windows Sockets Vuser Scripts

Using Winsock Data Buffers
Several LRS functions, such as lrs_receive and lrs_send, handle the actual data that is transferred between servers and clients. The data that is received or transmitted is stored in data buffers, which can be very large. In order to simplify the appearance of the script, the actual data is stored in external files—not in the C file. When a data transfer occurs, the data is copied from the external file into a temporary buffer. The external file, data.ws, contains the contents of all the temporary buffers. The buffers’ contents are stored as sequential records. The records are marked by identifiers indicating whether the data was sent or received, and the buffer descriptor. The LRS functions use the buffer descriptors to access the data. The descriptors have one of the following formats: recv bufindex number of bytes received send bufindex The buffer index begins with 0 (zero), and all subsequent buffers are numbered sequentially (1,2,3 etc.) regardless of whether or not they are send or receive buffers.
Find

?

Creating Vuser Scripts

Chapter 12, page 219

Windows Sockets Vuser Scripts • Developing Windows Sockets Vuser Scripts

In the following example, an lrs_receive function was recorded during a Vuser session: lrs_receive("socket1", "buf4", LrsLastArg) In this example, lrs_receive handled data that was received on socket1. The data was stored in the fifth receive record(buf4)—note that the index number is zerobased. The corresponding section of the data.ws file shows the buffer and its contents. recv buf4 39 "\xff\xfb\x01\xff\xfb\x03\xff\xfd\x01" "\r\n" "\r\n" "SunOS UNIX (sunny)\r\n" "\r" "\x0" "\r\n" "\r" "\x0"

In

Find

?

Creating Vuser Scripts

Chapter 12, page 220

Windows Sockets Vuser Scripts • Developing Windows Sockets Vuser Scripts

Understanding Data Files
The data.ws data file has the following format:

• •

File header A list of buffers and their contents The file header includes the version number of the data file format. The current version is 2. If you try to access data from a data file with format version 1, an error is issued. ;WSRData 2 1 An identifier precedes each record, indicating whether the data was received or sent, followed by the buffer descriptor, and the number of bytes received (for lrs_receive only). The buffer descriptor contains a number identifying the buffer. For example, recv buf5 25 indicates that the buffer contains data that was received. The record number is 5, indicating that this receive operation was the sixth data transfer (the index is zero based), and twenty-five bytes of data were received. Each descriptor is followed by the actual data in ascii format.

Find

?

Creating Vuser Scripts

Chapter 12, page 221

Windows Sockets Vuser Scripts • Developing Windows Sockets Vuser Scripts

The following segment shows the header, descriptors, and data in a typical data file: ;WSRData 2 1 send buf0 "\xff\xfd\x01\xff\xfd\x03\xff\xfb\x03\xff\xfb\x18" recv buf1 15 "\xff\xfd\x18\xff\xfd\x1f\xff\xfd" "#" "\xff\xfd" "'" "\xff\xfd" "$" send buf2 "\xff\xfb\x18"

In

Find

?

Creating Vuser Scripts

Chapter 12, page 222

Windows Sockets Vuser Scripts • Developing Windows Sockets Vuser Scripts

Correlating Statements
After you record a Windows Sockets Vuser script, you can run Vusers on several machines. In certain instances, running the recorded code will result in an error. For example, if you record a session where unique values are assigned to the session, such as unique process IDs (PIDs), you will be unable to rerun the script successfully. During execution, the recorded program receives a new PID. If you try to use the old PID, it will have no effect. In such cases, the solution is to correlate the statements—save the actual run-time values and use them within the script. The Correlated Statements feature allows you to link statements by using the output of one statement as input to another statement. For a detailed example, see Working with Correlated Scripts below. The main steps in correlating queries are: 1 Saving the results. You save a recorded or received value to a variable using the lrs_save_param or lrs_save_param_ex functions. You must insert this function into your script manually. 2 Referencing the saved value. Insert the parameter in all the functions or data buffers that need to use the parameter’s run-time value.
Find

?

Creating Vuser Scripts

Chapter 12, page 223

Windows Sockets Vuser Scripts • Developing Windows Sockets Vuser Scripts

Working with Correlated Scripts
In

To correlate statements within your script, you save the run-time value using lrs_save_param or lrs_save_param_ex. Both of the functions save buffer data to a parameter, however lrs_save_param_ex allows you to specify a user buffer and an encoding method. The lrs_save_param function saves data from a buffer to a parameter. This function has the following parameters:

s_desc buf_desc param_name offset

A descriptor identifying a connecting socket. (for example socket6) A descriptor identifying a buffer. (for example buf16) The name of a parameter to hold the buffer value. The offset of the data in the buffer to be saved to the parameter. For example, to begin with the tenth byte of data, specify 10. The length of the data (in bytes) to save to the parameter.

Find

?

length

Creating Vuser Scripts

Chapter 12, page 224

Windows Sockets Vuser Scripts • Developing Windows Sockets Vuser Scripts

The first two parameters specify which buffer to use:

Use the specified buffer when the buffer descriptor has the form “bufxx”. lrs_save_param (“socket2”, “buf47”, “param1”, 67, 5 );

Use the last received buffer when the buffer descriptor is NULL or when LRS_LAST_RECEIVED. lrs_save_param (“socket2”, “NULL”, “param1”, 67, 5 ); lrs_save_param (“socket2”, “LRS_LAST_RECEIVED”, “param1”, 67, 5 ); After specifying an active socket or buffer, you specify a parameter name to store the data. Specify an offset to indicate the offset of the data in the buffer, and a parameter length. Once you save the parameter, you can use it in both the script and data file. Substitute all the appropriate constant values with the parameter. Whenever you reference the parameter after the call to lrs_save_param, enclose it in angle brackets ( < > ).
Find

?

Creating Vuser Scripts

Chapter 12, page 225

Windows Sockets Vuser Scripts • Developing Windows Sockets Vuser Scripts

In the following example, a user performed a telnet session. The user used a ps command to determine the process ID (PID), and killed an application based on its PID. frodo:/u/jay>ps PID TTY TIME CMD 23961 pts/11 0:00 clock 23960 pts/11 0:00 vi 23959 pts/11 0:00 clock 23926 pts/11 0:03 tcsh frodo:/u/jay>kill 23961 [3] Exit 1 clock frodo:/u/jay> The recorded script shows the lrs_receive and lrs_send functions: lrs_receive("socket1", "buf79", LrsLastArg); lrs_send("socket1", "buf80", LrsLastArg); During execution, the PID of the procedure will be different (UNIX assigns unique PIDs for every execution), so killing the recorded PID will be ineffective. To overcome this problem, lrs_save_param saves the value of the new PID to a parameter. This parameter is referenced in the Send buffer which contains the kill command.

In

Find

?

Creating Vuser Scripts

Chapter 12, page 226

Windows Sockets Vuser Scripts • Developing Windows Sockets Vuser Scripts

To correlate the statements: 1 Determine the socket, buffer, offset, and length of the data. Search the data file for the relevant information. In the example below, the Receive buffer, buf79 was received after a ps command. The data was received via socket1. The offset of the PID data is 60 (the sixtieth character), and its length is 5. For information on how to determine the offset, see Determining Character Offsets for Parameterization on page 229. recv buf79 151 "\r" "\x0" "\r\n" " PID TTY TIME CMD\r\n" " 23959 pts/11 0:00 clock\r\n" " 23961 pts/11 0:00 clock\r\n" " 23960 pts/11 0:00 vi\r\n" " 23926 pts/11 0:03 tcsh\r\n" "frodo:/u/jay>" During recording, the user noted the PID of 23961 and then performed a kill operation on that process. This operation is shown in the Send buffer, buf80. send buf80 "\x16" "kill 23961"

Find

?

Creating Vuser Scripts

Chapter 12, page 227

Windows Sockets Vuser Scripts • Developing Windows Sockets Vuser Scripts

2 Insert an lrs_save_param function in the Actions section, after the lrs_receive for the relevant buffer. In this instance, the buffer is buf79. Since no buffer descriptor is specified, it uses the contents of the last received buffer, buf79. The PID is saved to a parameter called param1. Print the parameter to the output using lr_output_message. lrs_receive("socket1", "buf79", LrsLastArg); lrs_save_param("socket1", NULL, "param1", 60, 5); lr_output_message ("param1: %s", lr_eval_string("<param1>")); lr_think_time(10); lrs_send("socket1", "buf80", LrsLastArg); 3 Replace the value in the appropriate Send buffer with the parameter, enclosed in angle brackets. send buf80 "kill <param1>" 4 Save and run the script.

In

Find

?

Creating Vuser Scripts

Chapter 12, page 228

Windows Sockets Vuser Scripts • Developing Windows Sockets Vuser Scripts

Determining Character Offsets for Parameterization
To parameterize data, you need to determine the offset of the data that you want to save to a parameter. VuGen allows you to retrieve the offset of a character and display the data in hexadecimal format. To display the data, its columns, and its offset, select the data and press F7. VuGen displays the data based on its format—ASCII or EDCDIC.

ASCII Format
For data in ASCII format: If the selected text is less than four characters, VuGen displays the data in their hexadecimal, decimal and octal representations. If the selected text is more than four characters, VuGen displays the data in hexadecimal representation with the character offsets. All non-printable characters are represented by points.

Find

?

Creating Vuser Scripts

Chapter 12, page 229

Windows Sockets Vuser Scripts • Developing Windows Sockets Vuser Scripts

For example, if you want to determine the offset of the second PID shown below, select the data from the beginning of the buffer.

In

Find

?

Press F7 to display the data and the character offsets. In the following example, the first column shows the offset of the data from the beginning of the marked area. The second PID, 24280, is the twelfth character on the line that begins with 48;

Creating Vuser Scripts

Chapter 12, page 230

Windows Sockets Vuser Scripts • Developing Windows Sockets Vuser Scripts

therefore its offset is 60 (48+12). The second column shows the hexadecimal data in ASCII format. The third column shows the actual ASCII characters. Nonprintable characters (such as “/n” ) are displayed as dots.

Find

?

Creating Vuser Scripts

Chapter 12, page 231

Windows Sockets Vuser Scripts • Developing Windows Sockets Vuser Scripts

EBCDIC Format
You can only display data in EDCDIC format if you defined a translation table in the vugen.ini file. For more information, see Appendix A, Configuring VuGen. VuGen displays data in EBCDIC format in several columns: If the selected text is less than four characters, VuGen displays the hexadecimal, decimal and octal representations of the data in EBCDIC format. If the selected text is more than four characters, VuGen displays the data in several columns. In the first column it displays the character offsets from the beginning of the marked section. In the second column, it displays the hexadecimal representation of the data in EBCDIC format. In the third column it displays the data in ASCII format. All non-printable ASCII characters are represented by points.
Find
In

?

Creating Vuser Scripts

Chapter 12, page 232

Part VI

APPC Vuser Scripts
Find

?

Creating Vuser Scripts

233

APPC Vuser Scripts
Developing APPC Vuser Scripts
13 Developing APPC Vuser Scripts

You use VuGen to record communication between a client application and a server that are linked using Advanced Program to Program Communication (APPC). The resulting script is called an APPC Vuser script. This chapter describes:

In

• • • • • •

Getting Started with APPC Vuser Scripts Using LRA Functions Understanding APPC Vuser Scripts Viewing APPC Data Using APPC Data Buffers Understanding Data Files This chapter applies to APPC Vuser scripts only.
Find

?

Creating Vuser Scripts

Chapter 13, page 234

APPC Vuser Scripts • Developing APPC Vuser Scripts

About Recording APPC Vuser Scripts
When you record applications connected by APPC, VuGen generates APPC functions that describe the recorded actions. Each APPC function begins with an lra prefix. The LRA functions relate to the APPC conversations and data buffers. Using VuGen, you record your application’s WINAPPC and EHNAPPC API calls. For example, you could create a script by recording the actions of a terminal application. In the following example, lra_send sends a data buffer, buffer3 to a remote computer. The open conversation is Conv33339768. lra_send("Conv33339768", "buffer3"); You can view and edit the recorded script from VuGen’s main window. The APPC API calls that were recorded during the session are displayed in the window, allowing you to visually track your network activities.
Find

?

Creating Vuser Scripts

Chapter 13, page 235

APPC Vuser Scripts • Developing APPC Vuser Scripts

Getting Started with APPC Vuser Scripts
In

This section provides an overview of the process of using VuGen to develop APPC Vuser scripts. To develop an APPC Vuser script: 1 Record the basic script using VuGen. Start VuGen and create a new Vuser script. Specify APPC as the type of Vuser. Choose an application to record. Record typical operations on your application. For details, see Chapter 3, Recording with VuGen. 2 Enhance the script. Enhance the Vuser script by inserting transactions, rendezvous points, and control-flow structures into the script. For details, see Chapter 4, Enhancing Vuser Scripts. 3 Define parameters (optional). Define parameters for the fixed-values recorded into your script. By substituting fixed-values with parameters, you can repeat the same business process many times using different values. For details, see Chapter 5, Defining Parameters.

Find

?

Creating Vuser Scripts

Chapter 13, page 236

APPC Vuser Scripts • Developing APPC Vuser Scripts

4 Configure the run-time settings. The run-time settings control the Vuser behavior during script execution. These settings include loop, log, and timing information. For details, see Chapter 6, Configuring Run-Time Settings. 5 Run the script from VuGen. Save and run the script from VuGen to verify that it runs correctly. For details, see Chapter 7, Running Vuser Scripts in Stand-Alone Mode.
Find

After you create an APPC Vuser script, you integrate it into a LoadRunner scenario on either a Windows or UNIX platform. For more information on integrating Vuser scripts in a scenario, refer to your LoadRunner Controller User’s Guide.

?

Creating Vuser Scripts

Chapter 13, page 237

APPC Vuser Scripts • Developing APPC Vuser Scripts

Using LRA Functions
In

The functions developed to emulate communication using the APPC protocol are called LRA Vuser functions. Each LRA Vuser function has an lra prefix. This section lists the LRA functions that VuGen generates while recording an APPC session. You can also manually program any of the functions into your script. For more information about the LRA functions, refer to the LoadRunner Online Function Reference (available from the VuGen Help menu).

Conversation Functions
lra_allocate lra_deallocate Initializes a conversation with a remote computer. Ends a conversation with a remote computer (destroys the conversation descriptor).

Find

?

Creating Vuser Scripts

Chapter 13, page 238

APPC Vuser Scripts • Developing APPC Vuser Scripts

Buffer Functions
lra_get_received_buffer lra_get_static_buffer lra_get_user_buffer lra_get_user_buffer_size lra_send lra_receive lra_get_buffer_fragment lra_last_received_count lra_ascii_to_ebcdic lra_ebcdic_to_ascii Retrieves a fragment of the last received buffer. Retrieves a fragment of a static buffer. Retrieves the contents of the user data buffer. Retrieves the size of the user data buffer. Sends a buffer over an APPC conversation to a remote computer. Receives a set of buffers over an APPC conversation from a remote computer. Retrieves a fragment of the one of the last received buffers. Returns the number of valid buffers received by the last call to lra_receive(). Converts buffer data from ASCII format to EBCDIC format. Converts buffer data from EBCDIC format to ASCII format.
Find

?

Creating Vuser Scripts

Chapter 13, page 239

APPC Vuser Scripts • Developing APPC Vuser Scripts

Correlating Statement Function
lra_save_param_ex Saves a buffer or a buffer fragment into a parameter.
In

Unique ID Functions
lra_make_id lra_make_id_from_alphanum Creates a unique identifier from alphanumeric characters and stores it in a parameter. Creates a unique identifier and stores it in a parameter.
Find

?

Error Handling Functions
lra_get_error_string lra_get_last_error Returns a constant character string associated with an error code. Returns the last error that occurred during an APPC conversation.

Creating Vuser Scripts

Chapter 13, page 240

APPC Vuser Scripts • Developing APPC Vuser Scripts

Understanding APPC Vuser Scripts
After you record a session, VuGen’s built-in editor lets you view the recorded script. You can scroll through the script, view the functions that were generated, and examine the transferred data. When you view the script, you see the sequence in which VuGen recorded your activities. VuGen supports record and run for APPC applications on Windows NT 4.0 and Windows 95 platforms.
Find

?

Creating Vuser Scripts

Chapter 13, page 241

APPC Vuser Scripts • Developing APPC Vuser Scripts

Viewing APPC Data
In

When you create a new Vuser script with VuGen, the actions are stored in three sections: vuser_init, Actions, and vuser_end. When you record an APPC application, a data file, appc.dt, is created containing the contents of the buffers that were transmitted or received during a recording session. You can view the data from VuGen’s main window by selecting appc.dt.

Find

?

Creating Vuser Scripts

Chapter 13, page 242

APPC Vuser Scripts • Developing APPC Vuser Scripts

Using APPC Data Buffers
Several LRA functions, such as lra_receive and lra_send, handle the actual data that is transferred between servers and clients. The data that is received or transmitted is stored in data buffers, which can be very large. In order to simplify the appearance of the script, the actual data is stored in external files—not in the C file. When a data transfer occurs, the data is copied from the external file into a temporary buffer. In the following example, an lra_receive function was generated during a Vuser session: lra_receive("Conv33339768", "type=11", "buffer8, buffer9"); In this example, lra_receive handled data that was received over the conversational connection, Conv33339768. The data was stored in two buffers, buffer8 and buffer9. The corresponding section of the appc.dt file shows the buffers and their contents. buffer8 "\x00\x0A\x12\xA0\x00\x00\x04\x00\x00\x0C" buffer9 "\x00\x0A\x12\xA0\x00\x00\x04\x00\x00\x0B"
Find

?

Creating Vuser Scripts

Chapter 13, page 243

APPC Vuser Scripts • Developing APPC Vuser Scripts

You can enhance the recorded script with the following buffer handling statements:
In

lra_last_received_count lra_get_buffer_fragment lra_ascii_to_ebcdic lra_ebcdic_to_ascii

Checks the number of valid buffers received in the last call to lra_receive. Retrieves a portion of a buffer’s contents. Reformats a buffer Reformats a buffer.
Find

?

Creating Vuser Scripts

Chapter 13, page 244

APPC Vuser Scripts • Developing APPC Vuser Scripts

Understanding Data Files
The appc.dt file contains a list of temporary buffers and their contents. The contents of the buffers is stored as sequential records, with a blank line at the end of each buffer. String data is stored in ASCII format, and represented in the appc.dt file as a string. All other data is stored as EBCDIC format, and represented in the appc.dt file in hexadecimal.
Find

?

Creating Vuser Scripts

Chapter 13, page 245

APPC Vuser Scripts • Developing APPC Vuser Scripts
The following segment shows the buffers in a typical data file: ; /* APPC data file version 1.0 */
In

buffer3 "\x00\x24\x12\xA0\x00\x00\x04\x00\x80\x03\x06\x07\x39" "1" "\x00\x00\x07\x39" "1" "\x11\x06\x35" "QSECOFR" "\x11\x07\x35" "QSEC" buffer4 "\x00\x24\x12\xA0\x00\x00\x04\x00\x80\x03\x06\x07\x39" "1" "\x00\x00\x07\x39" "1" "\x11\x06\x35" "QSECOFR" "\x11\x07\x35" "QSEC" buffer5 "\x00\x1F\x12\xA0\x00\x00\x04\x00\x80\x03\x0E\x18\x00\x00\x00\x00\x00\ x00\x00\x00\x00\x00\x00\x00\x04" "3" "\x00\x05" "R" "\x70\x00"

Find

?

Creating Vuser Scripts

Chapter 13, page 246

Part VII

RTE Vuser Scripts
Find

?

Creating Vuser Scripts

247

RTE Vuser Scripts
Introducing RTE Vuser Scripts
14 Introducing RTE Vuser Scripts

RTE Vusers operate terminal emulators in both Windows and UNIX environments. This chapter describes the development of Windows-based RTE Vuser scripts only. This chapter describes:

In

• • • • •

Introducing RTE Vusers Understanding RTE Vuser Technology Getting Started with RTE Vuser Scripts Using TE Functions Mapping Terminal Keys to PC Keyboard Keys This chapter applies to RTE (Windows) Vuser scripts only.
Find

?

Creating Vuser Scripts

Chapter 14, page 248

RTE Vuser Scripts • Introducing RTE Vuser Scripts

About Developing RTE Vuser Scripts
RTE Vusers operate terminal emulators in order to load client/server systems. The terminal emulators can be Windows-based or UNIX-based. This chapter describes the development of Windows-based RTE Vuser scripts only. For details on developing UNIX-based RTE Vuser scripts, refer to the Creating RTE Virtual User Scripts (UNIX) guide.

Note: Windows-based RTE Vusers can be controlled by a Windows-based Controller only.

Find

?

Creating Vuser Scripts

Chapter 14, page 249

RTE Vuser Scripts • Introducing RTE Vuser Scripts

Introducing RTE Vusers
An RTE Vuser types character input into a terminal emulator, submits the data to a server, and then waits for the server to respond. For instance, suppose that you have a server that maintains customer information for a maintenance company. Every time a field service representative makes a repair, he accesses the server database by modem using a terminal emulator. The service representative accesses information about the customer and then records the details of the repair that he performs. You could use RTE Vusers to emulate this scenario. An RTE Vuser would: 1 Type “60” at the command line to open an application program. 2 Type “F296”, the field service representative’s number. 3 Type “NY270“, the customer number. 4 Wait for the word “Details” to appear on the screen. The appearance of “Details” indicates that all the customer details are displayed on the screen. 5 Type “Changed gasket P249, and performed Major Service”, the details of the current repair. 6 Type “Q“ to close the application program. You use VuGen to create RTE Vuser scripts. The script generator records the actions of a human user in a terminal emulator. It records the keyboard input from the terminal window, generates the appropriate statements, and inserts them into the Vuser script. While you record, the script generator automatically inserts synchronization functions into the script. For details, see Chapter 16, Synchronizing RTE Vuser Scripts.
Find

In

?

Creating Vuser Scripts

Chapter 14, page 250

RTE Vuser Scripts • Introducing RTE Vuser Scripts

Understanding RTE Vuser Technology
An RTE Vuser emulates the actions of a real user. Human users use terminals or terminal emulators to operate application programs. Application Program Terminal Emulator Human User

In the RTE Vuser environment, LoadRunner replaces the human user with a Vuser. The Vuser operates RTE-Gate, LoadRunner’s terminal emulator. Application Program RTE-Gate Vuser

Find

?

RTE-Gate works like a standard terminal emulator, supporting common protocols such as IBM 3270 & 5250, VT100, and VT220. Since RTE-Gate is specially enhanced for load testing, it enables you to:

• • • •

Replace the human user with a Vuser script that operates an application program by using LoadRunner functions. Record the operations that you perform on the application program, thereby generating Vuser scripts quickly and easily. Run a large number of RTE Vusers on a single workstation. Control the terminal—view, hide, and kill it—using the Controller.

Creating Vuser Scripts

Chapter 14, page 251

RTE Vuser Scripts • Introducing RTE Vuser Scripts

Getting Started with RTE Vuser Scripts
In

This section provides an overview of the process of developing Database Vuser scripts using VuGen. To develop a Database Vuser script: 1 Record the basic script using VuGen. Use the Vuser Script Generator (VuGen) to record the operations that you perform in a terminal emulator. VuGen records the keyboard input from the terminal window, generates the appropriate statements, and then inserts these statements into the Vuser script. For details, see Chapter 15, Recording RTE Vuser Scripts. 2 Enhance the script. Enhance the Vuser script by inserting transactions, rendezvous points, synchronization functions, and control-flow structures into the script. For details, see Chapter 4, Enhancing Vuser Scripts. 3 Define parameters (optional). Define parameters for the fixed-values recorded into your script. By substituting fixed-values with parameters, you can repeat the same business process many times using different values. For details, see Chapter 5, Defining Parameters.

Find

?

Creating Vuser Scripts

Chapter 14, page 252

RTE Vuser Scripts • Introducing RTE Vuser Scripts

4 Configure the run-time settings. The run-time settings control the Vuser behavior during script execution. These settings include loop, log, and timing information. For details, see Chapter 6, Configuring Run-Time Settings. 5 Run the script from VuGen. Run the script from VuGen to verify that it runs correctly. View the standard output to verify that the program is communicating properly with the server. For details, see Chapter 7, Running Vuser Scripts in Stand-Alone Mode. After you successfully create an RTE Vuser script, you integrate it into a LoadRunner scenario. For more information on integrating Vuser scripts in a scenario, refer to your LoadRunner Controller User’s Guide.
Find

?

Creating Vuser Scripts

Chapter 14, page 253

RTE Vuser Scripts • Introducing RTE Vuser Scripts

Using TE Functions
In

Online Function Reference

The functions developed to emulate a terminal communicating with a server are called TE Vuser functions. Each TE Vuser function has a TE prefix. This section lists the TE functions that VuGen records while creating an RTE Vuser script. For syntax and examples of the TE functions, refer to the LoadRunner Online Function Reference (available from the VuGen Help menu).

Terminal Emulator Connection Function
TE_connect Connects the terminal emulator to the specified host.

Find

?

Text Retrieval Functions
TE_find_text TE_get_text_line TE_get_cursor_pos TE_get_line_attribute Searches for text in a designated area of the screen. Reads text from a designated line on the screen. Returns the current location of the cursor. Returns information about text formatting.

System Variable Functions
TE_getvar TE_setvar Returns the value of an RTE system variable. Sets the value of an RTE system variable.

Creating Vuser Scripts

Chapter 14, page 254

RTE Vuser Scripts • Introducing RTE Vuser Scripts

Error Code Functions
TE_perror TE_sperror Prints an error code to the Output window. Translates an error code into a string.

Typing Functions
TE_type TE_typing_style Sends a formatted string to the client application. Determines the way text is typed into the terminal emulator.
Find

Synchronization Functions
TE_wait_cursor TE_wait_silent TE_wait_sync TE_wait_text Waits for the cursor to appear at a specified location in the terminal window. Waits for the client application to be silent for a specified number of seconds. Waits for the system to return from X-SYSTEM or Input Inhibited mode. Waits for a string to appear in a designated location.

?

The following TE functions can be parameterized: TE_connect, TE_find_text, TE_get_text_line, and TE_type. For details on parameterizing function in Vuser scripts, see Chapter 5, Defining Parameters.

Creating Vuser Scripts

Chapter 14, page 255

RTE Vuser Scripts • Introducing RTE Vuser Scripts

Mapping Terminal Keys to PC Keyboard Keys
In

Because you are using a terminal emulator, you will be using a PC keyboard in place of a terminal keyboard. Many keys that are found on the terminal keyboard are not available on a PC keyboard. Examples of such keys are HELP AUTOR, and , PUSH, which are found on the IBM 5250 keyboard. To successfully operate the terminal emulator and any associated application programs, you may have to map certain terminal keys to keys on the PC keyboard.
Find

?

Creating Vuser Scripts

Chapter 14, page 256

RTE Vuser Scripts • Introducing RTE Vuser Scripts

To map a terminal key to a key on the PC keyboard: 1 In the terminal emulator, select Options > Keyboard Map, or click the Keyboard Mapping button. The Keyboard Mapping dialog box opens.

Find

?

2 Click the Keyboard Mapping button on the toolbar. To map a terminal key to a PC key, drag a key from the upper terminal keyboard to a PC key on the lower keyboard.

Creating Vuser Scripts

Chapter 14, page 257

RTE Vuser Scripts • Introducing RTE Vuser Scripts

You can click the Shift and/or Control keys on the upper keyboard to display additional key functions that can be viewed only by first selecting either of these keys. You can then drag the required key from the upper terminal keyboard to a key on the lower PC keyboard. To cancel a definition, drag the PC key definition to the wastebasket. This restores the default function of the PC key. To restore the default mappings, click Defaults.

In

Find

?

Creating Vuser Scripts

Chapter 14, page 258

RTE Vuser Scripts
Recording RTE Vuser Scripts
15 Recording RTE Vuser Scripts

You use VuGen to record Windows-based RTE Vuser scripts.
In

This chapter describes:

• • • • • • • • •

Creating a New RTE Vuser Script Recording the Terminal Setup and Connection Procedure Recording Typical User Actions Recording the Log Off Procedure Recording the Log Off Procedure Setting the Recording Options Using the APPC Protocol in RTE Vuser Scripts Generating Unique Device Names Setting the Field Demarcation Characters This chapter applies to RTE (Windows) Vuser scripts only.
Find

?

Creating Vuser Scripts

Chapter 15, page 259

RTE Vuser Scripts • Recording RTE Vuser Scripts

About Recording RTE Vuser Scripts
In

You use VuGen to record Windows-based RTE Vuser scripts. VuGen uses the PowerTerm terminal emulator to emulate a wide variety of terminal types. You use PowerTerm to perform a typical terminal connection, followed by typical business processes. Thereafter, you perform the log off procedure. While you perform typical user actions in the terminal emulator, VuGen generates the appropriate statements, and inserts them into a Vuser script. You can view and edit the script while recording.
Find

Before recording an RTE Vuser script, ensure that the recording options are set correctly. The recording options allow you to control how VuGen generates certain functions while you record a Vuser script. VuGen applies the recording options during all subsequent recording sessions.

?

Creating Vuser Scripts

Chapter 15, page 260

RTE Vuser Scripts • Recording RTE Vuser Scripts

Creating a New RTE Vuser Script
Before recording a user’s actions into a Vuser script, you must open a script. You can open an existing script, or create a new script. You use VuGen to create a new Vuser script. To create a new RTE Vuser script: 1 Select Start > Programs > LoadRunner > Virtual User Generator to start VuGen. The VuGen window opens.
Find

?

Creating Vuser Scripts

Chapter 15, page 261

RTE Vuser Scripts • Recording RTE Vuser Scripts

2 Click the New button. The New Virtual User dialog box opens, and displays a list of the supported Vuser types.

In

Find

3 Choose RTE and then click OK. VuGen generates and displays a “skeleton” RTE Vuser script, with the cursor positioned to begin recording in the vuser_init section.

?

Creating Vuser Scripts

Chapter 15, page 262

RTE Vuser Scripts • Recording RTE Vuser Scripts

Recording the Terminal Setup and Connection Procedure
After you create a blank Vuser script, you record the terminal setup and connection procedure into the script. VuGen uses the PowerTerm terminal emulator when you record an RTE Vuser script. To record the terminal setup and connection procedure: 1 Open an existing RTE Vuser script, or create a new one. 2 In the Sections box, select the section into which you want VuGen to insert the recorded statements. The available sections are vuser_init, Actions, and vuser_end.

Find

?

Creating Vuser Scripts

Chapter 15, page 263

RTE Vuser Scripts • Recording RTE Vuser Scripts

Note: Always record the terminal setup and connection procedure into the vuser_init section. The vuser_init section is not repeated when you run multiple iterations of a Vuser script—only the Actions section is repeated. For more information on the iteration settings, see Chapter 6, Configuring Run-Time Settings.

In

3 In the Vuser script, place the cursor at the location where you want to begin recording. 4 Click the Record button. The PowerTerm main window appears.

Find

?

Creating Vuser Scripts

Chapter 15, page 264

RTE Vuser Scripts • Recording RTE Vuser Scripts
5 From the PowerTerm menu bar, select Terminal > Setup to display the Terminal Setup dialog box.

Find

?

6 Select the type of emulation from the VT Terminal and IBM Terminal types, and then click OK.

Note: Select an IBM terminal type to connect to an AS400 machine or an IBM mainframe; select a VT terminal type to connect to a UNIX workstation.

Creating Vuser Scripts

Chapter 15, page 265

RTE Vuser Scripts • Recording RTE Vuser Scripts
7 Select Communication > Connect to display the Connect dialog box.

In

Find

?

8 Under Session Type, select the type of communication to use. 9 Under Parameters, specify the required options. The available parameters vary depending on the type of session that you select. For details on the parameters, click Help.

Creating Vuser Scripts

Chapter 15, page 266

RTE Vuser Scripts • Recording RTE Vuser Scripts

Note: You can save the parameters that you define for re-use in the future. To save the parameters, click Save As. The parameter-sets that you save are displayed in the Sessions List box.

10 Click Connect. PowerTerm connects to the specified system, and VuGen inserts a TE_connect function into the script, at the insertion point. The inserted TE_connect statement looks something like the following: /* *** The terminal type is VT220-7. */ TE_connect("comm-type = telnet;host-name = frodo; terminal-type = vt220-7;terminal-model = vt320;", 60000); if (TE_errno != TE_SUCCESS) return -1; The inserted TE_connect statement is always followed by an if statement that checks whether or not the TE_connect function succeeds during replay.
Find

?

Note: Do not record more than one connection to a server (TE_connect) in a Vuser script.

The terminal setup and connection procedure is complete. You are now ready to begin recording typical user actions into the Vuser script, as described below.

Creating Vuser Scripts

Chapter 15, page 267

RTE Vuser Scripts • Recording RTE Vuser Scripts

Recording Typical User Actions
In

After recording the setup procedure, you perform typical user actions or business processes. You record these processes into the Actions section of the Vuser script. Only the Actions section of a Vuser script is repeated when you run multiple iterations of the script. For details on setting iterations, see Chapter 6, Configuring Run-Time Settings. To record user actions: 1 Open an existing RTE Vuser script, and then click Actions in the Section box. 2 Proceed to perform typical user actions in the terminal emulator. VuGen generates the appropriate statements, and inserts them into the Vuser script while you type. If necessary, you can edit the recorded statements while you record the script.
Find

?

Note: By default, VuGen waits a maximum of 5 seconds between successive keystrokes before generating the appropriate TE_type function. To change the waiting time, see Setting the Recording Options on page 270.

When you finish recording the typical user actions, proceed to record the log off procedure, as described in the next section.

Creating Vuser Scripts

Chapter 15, page 268

RTE Vuser Scripts • Recording RTE Vuser Scripts

Recording the Log Off Procedure
You record the Vuser log off process into the vuser_end section of the Vuser script. The vuser_end section is not repeated when you run many iterations of the script. For details on setting iterations, see Chapter 6, Configuring Run-Time Settings. To record the log off procedure: 1 Ensure that you have performed and recorded the typical user actions as described in the previous section. 2 In the VuGen main window, click vuser_end in the Section box. 3 Perform the log off procedure. VuGen records the procedure into the vuser_end section of the script. 4 Click Stop Recording on the Recording toolbar. The main VuGen window displays all the recorded statements. 5 Click Save to save the recorded session. The Save As dialog box opens (for new Vuser scripts only). Specify a script name. After recording a script, you can manually edit the script in VuGen’s main window.
Find

?

Creating Vuser Scripts

Chapter 15, page 269

RTE Vuser Scripts • Recording RTE Vuser Scripts

Setting the Recording Options
In

By setting the recording options, you can customize the code that VuGen generates for RTE functions. You use the Recording Options dialog box to set the recording options. To open the Recording Options dialog box, select Vuser > Recording Options.

Automatic Screen Header Comments (IBM terminals only)
You can instruct VuGen to automatically generate screen header comments while recording a Vuser script, and insert the comments into the script. Generated comments make a recorded script easier to read by identifying each new screen as it is displayed in the terminal emulator. A generated comment contains the text that appears on the first line of the terminal emulator window. The following generated comment shows that the Office Tasks screen was displayed in the terminal emulator: /* OFCTSK Office Tasks */
Find

?

To ensure that VuGen automatically generates comments while you record a script, select the “Generate screen header comments” check box in the Recording Options dialog box. By default, VuGen does not automatically generate screen comments.

Creating Vuser Scripts

Chapter 15, page 270

RTE Vuser Scripts • Recording RTE Vuser Scripts

Note: You can generate comments automatically only when using block-mode terminal emulators such as the IBM 5250.

Automatic Transactions (IBM terminals only)
You can specify that VuGen record the time that the system was in the X SYSTEM mode during a scenario run. To do so, VuGen inserts a TE_wait_sync_transaction function after each TE_wait_sync function. Each TE_wait_sync_transaction function creates a transaction with the name “default”. Each TE_wait_sync_transaction function records the time that the system spent in the previous X SYSTEM state. To instruct VuGen to insert TE_wait_sync_transaction statements while recording, select the “Generate automatic X SYSTEM transactions” check box in the Recording Options dialog box. By default, VuGen does not automatically generate transactions.

Find

?

Creating Vuser Scripts

Chapter 15, page 271

RTE Vuser Scripts • Recording RTE Vuser Scripts Synchronization Functions
VuGen can automatically generate a number of TE-synchronization functions, and insert them into the script while you record. 1 You can specify that VuGen generate a TE_wait_sync function each time a new screen is displayed while recording. To do so, select the “X-System” check box in the Recording Options dialog box. By default, VuGen does automatically generate a TE_wait_sync function each time a new screen is displayed while recording.
Find
In

Note: VuGen generates TE_wait_sync functions when recording IBM block mode terminals only.

?

2 You can specify that VuGen generate a TE_wait_cursor function before each TE_type function. To do so, select the “Cursor” check box in the Recording Options dialog box. By default, VuGen does not automatically generate TE_wait_cursor functions. 3 You can specify that VuGen generate a TE_wait_text function before each TE_type function (where appropriate). To do so, select the “Prompt” check box in the Recording Options dialog box. By default, VuGen does not automatically generate a TE_wait_text function before each TE_type function.

Creating Vuser Scripts

Chapter 15, page 272

RTE Vuser Scripts • Recording RTE Vuser Scripts

Note: VuGen generates meaningful TE_wait_text functions when recording VT type terminals only. Do not use automatic TE_wait_text function generation when recording block-mode (IBM) terminals.

Keyboard Recording Timeout
When you type text into a terminal emulator while recording, VuGen monitors the text input. After each keystroke, VuGen waits up to a specified amount of time for the next key stroke. If there is no subsequent keystroke within the specified time, VuGen assumes that the command is complete. VuGen then generates and inserts the appropriate TE_type function into the Vuser script. To set the maximum amount of time that VuGen waits between successive keystrokes, enter an amount in the “Keyboard record timeout” box. By default, VuGen waits a maximum of 5 seconds between successive keystrokes before generating the appropriate TE_type function.
Find

?

Creating Vuser Scripts

Chapter 15, page 273

RTE Vuser Scripts • Recording RTE Vuser Scripts

Typing Input into a Terminal Emulator
In

Two LoadRunner TE functions enable Vusers to “type” character input into the RTE-GATE terminal emulator:

• •

TE_type sends characters to the terminal emulator. When recording, the Vuser Script Generator automatically generates TE_type functions for keyboard input to the terminal window. For details, see Using the TE_type Function below. TE_typing_style determines the speed at which the Vuser types. You can manually define the typing style by inserting a TE_typing_style function into the Vuser script. For details, see Setting the Typing Style below. Alternatively, you can set the typing style by using the run-time settings. For details, see Setting the RTE Run-Time Settings on page 105.
Find

?

Note: While recording an RTE Vuser script, do not use the mouse to relocate the cursor within the terminal emulator window. VuGen does not record these cursor movements.

Creating Vuser Scripts

Chapter 15, page 274

RTE Vuser Scripts • Recording RTE Vuser Scripts Using the TE_type Function
When you record a script, the Vuser Script Generator records all keyboard input and generates appropriate TE_type functions. During execution, TE_type functions send formatted strings to the terminal emulator. Keyboard input is defined as a regular text string (including blank spaces). For example: TE_type ("hello, world"); Input key names longer than one character are represented by identifiers beginning with the letter k, and are bracketed within greater-than/less-than signs (< >). For example, the function: TE_type("<kReturn><kControl-y>"); depicts the input of the Return key followed by the Control and y keys. Some other examples include: <kF1>, <kUp>, <kF10>, <kHelp>, <kTab>. To determine a key name, record an operation on the key, and then check the recorded statement for its name.
Find

?

Online Function Reference

Note: When you program a TE_type statement (rather than recording it), use the key definitions provided in the LoadRunner Online Function Reference (available from the VuGen Help menu).

Creating Vuser Scripts

Chapter 15, page 275

RTE Vuser Scripts • Recording RTE Vuser Scripts

Setting the Timeout Value for TE_type
In

If a Vuser attempts to submit a TE_type statement while the system is in X SYSTEM (or input inhibited) mode, the Vuser will wait until the X SYSTEM mode ends before typing. If the system stays in X SYSTEM mode for more than TE_XSYSTEM_TIMEOUT milliseconds, then the TE_type function returns a TE_TIMEOUT error. You can set the value of TE_XSYSTEM_TIMEOUT by using TE_setvar. The default value for TE_XSYSTEM_TIMEOUT is 30 seconds. Allowing a Vuser to Type Ahead Under certain circumstances you may want a Vuser to submit a keystroke even though the system is in X SYSTEM (or input inhibited) mode. For example, you may want the Vuser to press the Break key. You use the TE_ALLOW_TYPEAHEAD variable to enable the Vuser to submit a keystroke even though the system is in X SYSTEM mode. Set TE_ALLOW_TYPEAHEAD to zero to disable typing ahead, and to any nonzero number to permit typing ahead. You use TE_setvar to set the value of TE_ALLOW_TYPEAHEAD. By default, TE_ALLOW_TYPEAHEAD is set to zero, preventing keystrokes from being sent during X SYSTEM mode. Online Function Reference For more information about the TE_type function and its conventions, refer to the LoadRunner Online Function Reference (available from the VuGen Help menu).
Find

?

Creating Vuser Scripts

Chapter 15, page 276

RTE Vuser Scripts • Recording RTE Vuser Scripts

Setting the Typing Style
You can set two typing styles for RTE Vusers: FAST and HUMAN. In the FAST style, the Vuser types input into the terminal emulator as quickly as possible. In the HUMAN style, the Vuser pauses after typing each character. In this way, the Vuser more closely emulates a human user typing at the keyboard. You set the typing style using the TE_typing_style function. The syntax of the TE_typing_style function is: int TE_typing_style (char *style ); where style can be FAST or HUMAN. The default typing style is HUMAN. If you select the HUMAN typing style, the format is: HUMAN, delay [,first_delay] The delay indicates the interval (in milliseconds) between keystrokes. The optional parameter first_delay indicates the wait (in milliseconds) before typing the first character in the string. For example, TE_typing_style ("HUMAN, 100, 500"); TE_type ("ABC");
Find

?

Creating Vuser Scripts

Chapter 15, page 277

RTE Vuser Scripts • Recording RTE Vuser Scripts

means that the Vuser will wait 0.5 seconds before typing the letter A; it will then wait 0.1 seconds before typing “B” and then a further 0.1 seconds before typing “C”. Online Function Reference For more information about the TE_typing_style function and its conventions, refer to the LoadRunner Online Function Reference (available from the VuGen Help menu). In addition to setting the typing style by using the TE_typing_style function, you can also use the run-time settings. For details, see Setting the RTE Run-Time Settings on page 105.

In

Find

?

Creating Vuser Scripts

Chapter 15, page 278

RTE Vuser Scripts • Recording RTE Vuser Scripts

Using the APPC Protocol in RTE Vuser Scripts
The APPC protocol does not provide any notification when data is available from the host. Therefore, if your RTE Vusers use the APPC protocol, the terminal must continuously poll the connection state to detect arriving asynchronous data. You can use two RTE system variables to control the polling frequency:

• •

The TE_APPC_X_RATE variable specifies the polling frequency when the terminal is in X SYSTEM (or input inhibited) mode. By default, the terminal polls the connection state every 0.5 seconds. The TE_APPC_NON_X_RATE variable specifies the polling frequency when user input is allowed (i.e. the terminal is not in X SYSTEM mode). By default, the terminal polls the connection state every 2 seconds. The TE_APPC_X_RATE frequency should be higher than the TE_APPC_NON_X_RATE frequency. This is because host output is rarely expected when user input is allowed. You use the TE_getvar and TE_setvar functions to retrieve and set the values of the system variables. The values are specified in milliseconds. In the following example, TE_setvar sets the polling rate of the APPC connection— when the terminal is in X SYSTEM mode—to 0.3 seconds: TE_setvar("TE_APPC_X_RATE", 300);

Find

?

Creating Vuser Scripts

Chapter 15, page 279

RTE Vuser Scripts • Recording RTE Vuser Scripts

Generating Unique Device Names
In

Some protocols, such as APPC, require a unique device name for each terminal that logs on to the system. Using the run-time settings, you can specify that the TE_connect function generate a unique 8-character device name for each Vuser, and connect using this name. Although this solves the requirement for uniqueness, some systems have an additional requirement: The device names must conform to a specific format. For details about the run-time settings, see Chapter 6, Configuring Run-Time Settings.
Find

To define the format of the device names that the TE_connect function uses to connect a Vuser to the system, add an RteGenerateDeviceName function to the Vuser script. The function has the following prototype: void RteGenerateDeviceName(char buf[32]) The device name should be written into buf. If an RteGenerateDeviceName function exists in a Vuser script, the Vuser calls the function each time a new device name is needed. If no RteGenerateDeviceName function is defined in the script—and unique device names are requireed—the TE_connect function generates the required names.

?

Creating Vuser Scripts

Chapter 15, page 280

RTE Vuser Scripts • Recording RTE Vuser Scripts

In the following example, the RteGenerateDeviceName function generates unique device names with the format “TERMx”. The first name is TERM0, followed by TERM1, TERM2 etc. RteGenerateDeviceName(char buf[32]) { static int n=0; sprintf(buf, "TERM%d", n); n=n+1; }

Find

?

Creating Vuser Scripts

Chapter 15, page 281

RTE Vuser Scripts • Recording RTE Vuser Scripts

Setting the Field Demarcation Characters
In

Some terminal emulators use demarcation characters to mark the beginning and the end of each field. These demarcation characters are not visible—appearing on the screen as spaces. In the terminal emulator shown below, the colors in the middle section of the screen have been inverted to display the field demarcation characters. These characters are surrounded by ellipses.

Find

?

Creating Vuser Scripts

Chapter 15, page 282

RTE Vuser Scripts • Recording RTE Vuser Scripts

The TE_wait_text, TE_get_text, and TE_find_text functions operate by identifying the characters in a specified portion of the screen. If a field demarcation character is located within the specified section, you can choose to identify the character either as a space, or as an ASCII character. You use the TE_FIELD_CHARS system variable to specify the method of identification. You can set TE_FIELD_CHARS to 0 or 1:

• •

O specifies that the character in the position of the field demarcation characters is returned as a space. 1 specifies that the character in the position of the field demarcation characters is returned as an ascii code (ascii 0 or ascii 1). By default, TE_FIELD_CHARS is set to 0. You retrieve and set the value of TE_FIELD_CHARS by using the TE_getvar and TE_setvar functions.
Find

?

Creating Vuser Scripts

Chapter 15, page 283

RTE Vuser Scripts
Synchronizing RTE Vuser Scripts
16 Synchronizing RTE Vuser Scripts

Synchronization functions in an RTE Vuser script ensure that the input that a Vuser submits to a terminal emulator is synchronized with the responses from the server. This chapter describes:

In

• •

Synchronizing Block-Mode (IBM) Terminals Synchronizing Character-Mode (VT) Terminals
Find

This chapter applies to RTE (Windows) Vuser scripts only.

?

Creating Vuser Scripts

Chapter 16, page 284

RTE Vuser Scripts • Synchronizing RTE Vuser Scripts

About Synchronizing Vuser Scripts
Depending on the system you are testing, you may need to synchronize the input that a Vuser sends to a terminal emulator with the subsequent responses from the server. When you synchronize input, you instruct LoadRunner to suspend script execution and wait for a cue from the system, before the Vuser performs its next action. For instance, suppose that a human user wants to submit the following sequence of key strokes to a bank application: 1 Type 1 to select “Financial Information” from the menu of a bank application. 2 When the message “What information do you require?” appears, type 3 to select “Dow Jones Industrial Average” from the menu. 3 When the full report has been written to the screen, type 5 to exit the bank application. In this example, the input to the bank application is synchronized because at each step, the human user waits for a visual cue before typing. This cue can be either the appearance of a particular message on the screen, or stability of all the information on the screen.
Find

?

Creating Vuser Scripts

Chapter 16, page 285

RTE Vuser Scripts • Synchronizing RTE Vuser Scripts

You can synchronize the input of a Vuser in the same way by using LoadRunner’s TE-synchronization functions, TE_wait_sync, TE_wait_text, TE_wait_silent, and TE_wait_cursor. These functions effectively emulate a human user who types into a terminal window and then waits for the server to respond, before typing in the next command. The TE_wait_sync function is used to synchronize block-mode (IBM) terminals only. The other TE-synchronization functions are used to synchronize charactermode (VT) terminals.

In

Find

When you record an RTE Vuser script, VuGen can automatically generate and insert TE_wait_sync, TE_wait_text, and TE_wait_cursor statements into the script. You use VuGen’s recording options to specify which synchronization functions VuGen should insert.

?

Note: Do not include any synchronization statements in the Vuser_end section of a Vuser script. Since a Vuser can be aborted at any time, you cannot predict when the Vuser_end section will be executed.

Creating Vuser Scripts

Chapter 16, page 286

RTE Vuser Scripts • Synchronizing RTE Vuser Scripts

Synchronizing Block-Mode (IBM) Terminals
The TE_wait_sync function is used for synchronization RTE Vusers operating block-mode (IBM) terminals. Block-mode terminals display the “X SYSTEM” message to indicate that the system is in Input Inhibited mode. When a system is in the Input Inhibited mode no typing can take place because the terminal emulator is waiting for a transfer of data from the server. When you record a script on a block-mode terminal, by default, VuGen generates and inserts a TE_wait_sync function into the script each time the “X SYSTEM” message appears. You use VuGen’s recording options to specify whether or not VuGen should automatically insert TE_wait_sync functions. When you run a Vuser script, the TE_wait_sync function checks if the system is in the X SYSTEM mode. If the system is in the X SYSTEM mode, the TE_wait_sync function suspends script execution. When the “X SYSTEM” message is removed from the screen, script execution continues.

Find

?

Note: You can use the TE_wait_sync function only with IBM block-mode terminals emulators (5250 and 3270).

Creating Vuser Scripts

Chapter 16, page 287

RTE Vuser Scripts • Synchronizing RTE Vuser Scripts

Online Function Reference

In general, the TE_wait_sync function provides adequate synchronization for all block-mode terminal emulators. However, if the TE_wait_sync function is ineffective in a particular situation, you can enhance the synchronization by including a TE_wait_text function. For more information on the TE_wait_text function, see Waiting for Text to Appear on the Screen on page 296, and the LoadRunner Online Function Reference (available from the VuGen Help menu). The syntax of the TE_wait_sync function is: TE_wait_sync ( ); In the following script segment, the Vuser logs on with the user name “QUSER” and the password “MERCURY“. The Vuser then presses Enter to submit the login details to the server. The terminal emulator displays the X SYSTEM message while the system waits for the server to respond. The TE_wait_sync statement causes the Vuser to wait until the server has responded to the login request i.e. for

In

Find

?

Creating Vuser Scripts

Chapter 16, page 288

RTE Vuser Scripts • Synchronizing RTE Vuser Scripts

the X SYSTEM message to be removed—before executing the next line of the script. TE_type("QUSER"); lr_think_time(2); TE_type("<kTab>MERCURY"); lr_think_time(3); TE_type("<kEnter>"); TE_wait_sync(); .... When a TE_wait_sync function suspends the execution of a script while an X SYSTEM message is displayed, the Vuser continues to monitor the system— waiting for the X SYSTEM message to disappear. If the X SYSTEM message does not disappear before the synchronization timeout expires, the TE_wait_sync function returns an error code. The default timeout is 60 seconds.

Find

?

Creating Vuser Scripts

Chapter 16, page 289

RTE Vuser Scripts • Synchronizing RTE Vuser Scripts
To set the TE_wait_sync synchronization timeout: 1 Select Vuser > Run-Time Options. The Run-Time Options dialog box appears. 2 Ensure that the RTE tab is visible. 3 Under “X SYSTEM Synchronization,” enter a value (in seconds) in the Timeout box. 4 Click OK to close the Run-Time Options dialog box . After a Vuser executes a TE_wait_sync function, the Vuser waits until the terminal is no longer in the X SYSTEM mode. When the terminal returns from the X SYSTEM mode, the Vuser continues to monitor the system for a short period to ensure that the terminal is fully stable i.e that the system does not return to the X SYSTEM mode. Only then does the TE_wait_sync function terminate and allow the Vuser to continue executing its script. The period that the Vuser continues to monitor the system, after the system has returned from the X SYSTEM mode, is known as the stable time. The default stable time is 1000 milliseconds. You may need to increase the stable time if your system exhibits the following behavior: When a system returns from the X SYSTEM mode, some systems “flickers” to and from the X SYSTEM for a short period of time until the system stabilizes. If the system remains out of the X SYSTEM mode for more than one second, and then returns to the X SYSTEM mode, the TE_wait_sync function will assume that the system is stable. If a Vuser then tries to type information to the system, the system will shift into keyboard-locked mode. Alternatively, if your system never flickers when it returns from the X SYSTEM mode, you can reduce the stable time to less than the default value of one second.
In

Find

?

Creating Vuser Scripts

Chapter 16, page 290

RTE Vuser Scripts • Synchronizing RTE Vuser Scripts

To change the stable time for TE_wait_sync functions: 1 Select Vuser > Run-Time Options. The Run-Time Options dialog box appears. 2 Ensure that the RTE tab is visible. 3 Under “X SYSTEM Synchronization,” enter a value (in milliseconds) in the Stable Time box. 4 Click OK to close the Run-Time Options dialog box. Online Function Reference For more information on the TE_wait_sync function, refer to the LoadRunner Online Function Reference (available from the VuGen Help menu). You can instruct VuGen to record the time that the system remains in the X SYSTEM mode each time that the X SYSTEM mode is entered. To do so, VuGen inserts a TE_wait_sync_transaction function after each TE_wait_sync function, as shown in the following script segment: TE_wait_sync(); TE_wait_sync_transaction("default"); Each TE_wait_sync_transaction function creates a transaction with the name “default.” This allows you to analyze how long the terminal emulator waits for responses from the server during a scenario run. You use the recording options to specify whether VuGen should generate and insert TE_wait_sync_transaction statements.
Find

?

Creating Vuser Scripts

Chapter 16, page 291

RTE Vuser Scripts • Synchronizing RTE Vuser Scripts

To instruct VuGen to insert TE_wait_sync_transaction statements: 1 Select Vuser > Recording Options. The Recording Options dialog box appears. 2 Select the “Generate Automatic X SYSTEM transactions” check box, and then click OK.
In

Find

?

Creating Vuser Scripts

Chapter 16, page 292

RTE Vuser Scripts • Synchronizing RTE Vuser Scripts

Synchronizing Character-Mode (VT) Terminals
LoadRunner has three types of synchronization that you can use for charactermode (VT) terminals. The type of synchronization that you select depends on:

• •

the design of the application that is running in the terminal emulator the specific action to be synchronized

Find

?

Creating Vuser Scripts

Chapter 16, page 293

RTE Vuser Scripts • Synchronizing RTE Vuser Scripts

Waiting for the Cursor to Appear at a Specific Location
The preferred method of synchronization for VT type terminals is cursor synchronization. Cursor synchronization is particularly useful with full-screen or form-type applications:, as opposed to scrolling or TTY-type applications. Cursor synchronization uses the TE_wait_cursor function. When you run an RTE Vuser script, the TE_wait_cursor function instructs a Vuser to suspend script execution until the cursor appears at a specified location on the screen. The appearance of the cursor at the specified location means that the application is ready to accept the next input from the terminal emulator. The syntax of the TE_wait_cursor function is: int TE_wait_cursor ( int col, int row, int stable, int timeout ); During script execution, the TE_wait_cursor function waits for the cursor to reach the location specified by col, row. The stable parameter specifies the time (in milliseconds) that the cursor must remain at the specified location. If you record a script using VuGen, stable is set to 100 milliseconds by default. If the client application does not become stable in the time specified by the timeout parameter, the function returns TIMEOUT. If you record a script using the Vuser Script Generator, timeout is set by default to the value of TIMEOUT, which is 90 seconds. You can change the value of both the stable and timeout parameters by directly editing the recorded script.
In

Find

?

Creating Vuser Scripts

Chapter 16, page 294

RTE Vuser Scripts • Synchronizing RTE Vuser Scripts

The following statement waits for the cursor to remain stable for three seconds. If the cursor doesn’t stabilize within 10 seconds, the function returns TIMEOUT. TE_wait_cursor (10, 24, 3000, 10); Online Function Reference For more information on the TE_wait_cursor function, refer to the LoadRunner Online Function Reference (available from the VuGen Help menu). You can instruct VuGen to automatically generate TE_wait_cursor statements, and insert them into a script, while you record the script. The following is an example of a TE_wait_cursor statement that was automatically generated by VuGen: TE_wait_cursor(7, 20, 100, 90); To instruct VuGen to automatically generate TE_wait_cursor statements, and insert them into a script while recording. 1 Select Vuser > Recording Options. The Recording Options dialog box appears. 2 Under “Generate Automatic Synchronization Commands,” select the Cursor check box, and then click OK.
Find

?

Creating Vuser Scripts

Chapter 16, page 295

RTE Vuser Scripts • Synchronizing RTE Vuser Scripts

Waiting for Text to Appear on the Screen
You can use text synchronization to synchronize an RTE Vuser script running on a VT terminal emulator. Text synchronization uses the TE_wait_text function. During script execution, the TE_wait_text function suspends script execution and waits for a specific string to appear in the terminal window before continuing with script execution. Text synchronization is useful with those applications in which the cursor does not consistently appear in a predefined area on the screen.
In

Find

Note: Although text synchronization is designed to be used with character mode (VT) terminals, it can also be used with IBM block-mode terminals. Do not use automatic text synchronization with block-mode terminals.

?

The syntax of the TE_wait_text function is: int TE_wait_text ( char *pattern, int timeout, int col1, int row1, int col2, int row2, int *retcol, int *retrow, char *match ); This function waits for text matching pattern to appear within the rectangle defined by col1, row1, col2, row2. Text matching the pattern is returned to match, and the actual row and column position is returned to retcol and retrow. If the pattern does not appear before the timeout expires, the function returns an error code. The pattern can include a regular expression. Refer to the LoadRunner Online

Online Function Reference

Creating Vuser Scripts

Chapter 16, page 296

RTE Vuser Scripts • Synchronizing RTE Vuser Scripts

Function Reference for details on using regular expressions. Besides the pattern and timeout parameters, all the other parameters are optional. If pattern is passed as an empty string, the function will wait for timeout if it finds any text at all within the rectangle. If there is no text, it returns immediately. If the pattern does appear, then the function waits for the emulator to be stable (finish redrawing, and not display any new characters) for the interval defined by the TE_SILENT_SEC and TE_SILENT_MILLI system variables. This, in effect, allows the terminal to become stable and emulates a human user. If the terminal does not become stable within the interval defined by TE_SILENT_TIMEOUT, script execution continues. The function returns 0 for success, but sets the TE_errno variable to indicate that the terminal was not silent after the text appeared. To modify or retrieve the value of any of the TE_SILENT system variables, use the TE_getvar and TE_setvar functions. For more information, refer to the LoadRunner Online Function Reference (available from the VuGen Help menu).

Find

?

Online Function Reference

Creating Vuser Scripts

Chapter 16, page 297

RTE Vuser Scripts • Synchronizing RTE Vuser Scripts

In the following example, the Vuser types in its name, and then waits for the application to respond. /* Declare variables for TE_wait_text */ int ret_row; int ret_col; char ret_text [80]; /* Type in user name. */ TE_type ( "John" ); /* Wait for teller to respond. */ TE_wait_text ( "Enter secret code:", 30, 29, 13, 1, 13, &ret_col, &ret_row, ret_text ); You can instruct VuGen to automatically generate TE_wait_text statements, and insert them into a script, while you record the script.

In

Find

?

Creating Vuser Scripts

Chapter 16, page 298

RTE Vuser Scripts • Synchronizing RTE Vuser Scripts

To instruct VuGen to automatically generate TE_wait_text statements, and insert them into a script while recording. 1 Select Vuser > Recording Options. The Recording Options dialog box appears. 2 Under “Generate Automatic Synchronization Commands”, select the Prompt check box, and then click OK. The following is an example of a TE_wait_text statement that was automatically generated by VuGen. The function waits up to 20 seconds for the string “keys” to appear anywhere on the screen. Note that VuGen omits all the optional parameters when it generates a TE_wait_text function. TE_wait_text("keys", 20);

Find

?

Creating Vuser Scripts

Chapter 16, page 299

RTE Vuser Scripts • Synchronizing RTE Vuser Scripts

Waiting for the Terminal to be Silent
In instances when neither cursor synchronization nor text synchronization are effective, you can use “silent synchronization” to synchronize the Vuser script. With “silent synchronization,” LoadRunner waits for the terminal emulator to be silent for a specified period of time. The emulator is considered to be silent when it does not receive any input from the server for a specified period of time.
In

Note: Use silent synchronization only when neither cursor synchronization nor text synchronization are effective.

Find

?

Creating Vuser Scripts

Chapter 16, page 300

RTE Vuser Scripts • Synchronizing RTE Vuser Scripts

You use the TE_wait_silent function to instruct a Vuser script to wait for the terminal to be silent. You specify the period for which the terminal must be silent. If the terminal is silent for the specified period, then the TE_wait_silent function assumes that the application has stopped printing text to the terminal screen, and that the screen has stabilized. The syntax of the function is: int TE_wait_silent ( int sec, int milli, int timeout ); The TE_wait_silent function waits for the terminal emulator to be silent for the time specified by sec (seconds) and milli (milliseconds). The emulator is considered silent when it does not receive any input from the server. If the emulator does not become silent (i.e. stop receiving characters) during the time specified by the time timeout variable, then the function returns an error. For example, the following statement waits for the screen to be stable for three seconds. If after ten seconds, the screen has not become stable, the function returns an error. TE_wait_silent (3, 0, 10); Online Function Reference For more information, refer to the LoadRunner Online Function Reference (available from the VuGen Help menu).
Find

?

Creating Vuser Scripts

Chapter 16, page 301

RTE Vuser Scripts
Reading Text from the Terminal Screen
17 Reading Text from the Terminal Screen

RTE Vusers can read text from the user interface of a terminal emulator, and then perform various tasks with the text that is read. This chapter describes:

In

• •

Searching for Text on the Screen Reading Text from the Screen
Find

This chapter applies to RTE (Windows) Vuser scripts only.

?

Creating Vuser Scripts

Chapter 17, page 302

RTE Vuser Scripts • Reading Text from the Terminal Screen

About Reading Text from the Terminal Screen
LoadRunner provides several functions that RTE Vusers can use to read text from the terminal screen. You can use these functions, TE_find_text and TE_get_text_line, to check that the terminal emulator is responding correctly, or to enhance the logic in your scripts. After recording, you can manually insert TE_find_text and TE_get_text_line statements directly into your RTE Vuser scripts.
Find

?

Creating Vuser Scripts

Chapter 17, page 303

RTE Vuser Scripts • Reading Text from the Terminal Screen

Searching for Text on the Screen
In

The TE_find_text function searches for a line of text on the screen. The syntax of the function is: int TE_find_text ( char *pattern, int col1, int row1, int col2, int row2, int *retcol, int *retrow, char *match ); This function searches for text matching pattern within the rectangle defined by col1, row1, col2, row2. Text matching the pattern is returned to match, and the actual row and column position is returned to retcol and retrow. The search begins in the top-left corner. If more than one string matches pattern, the one closest to the top-left corner is returned. Online Function Reference The pattern can include a regular expression. Refer to the LoadRunner Online Function Reference for details on using regular expressions. You must manually type TE_find_text statements into your Vuser scripts. For details on the syntax of the TE_find_text function, refer to the LoadRunner Online Function Reference (available from the VuGen Help menu).

Find

?

Creating Vuser Scripts

Chapter 17, page 304

RTE Vuser Scripts • Reading Text from the Terminal Screen

Reading Text from the Screen
The TE_get_text_line function reads a line of text from the area of the screen that you designate. The syntax of the function is: char *TE_get_text_line ( int col, int row, int width, char *text ); This function copies a line of text from the terminal screen to a buffer text. The first character in the line is defined by col, row. The column coordinate of the last character in the line is indicated by width. The text from the screen is returned to the buffer text. If the line contains tabs or spaces, the equivalent number of spaces is returned. In addition, the TE_get_cursor_position function can be used to retrieve the current position of the cursor on the terminal screen. The TE_get_line_attribute function returns the character formatting (for instance, bold or underline) of a line of text. Online Function Reference You must manually type TE_get_text_line statements into your Vuser scripts. For details on the syntax of the TE_get_text_line function, refer to the LoadRunner Online Function Reference (available from the VuGen Help menu).

Find

?

Creating Vuser Scripts

Chapter 17, page 305

Part VIII

Web Vuser Scripts
Find

?

Creating Vuser Scripts

306

Web Vuser Scripts
Introducing Web Vuser Scripts
18 Introducing Web Vuser Scripts

You use QuickTest to develop Web Vuser scripts. QuickTest creates Vuser scripts by recording your actions while you operate a web browser. This chapter describes:

In

• • • • •

Introducing Web Vusers Understanding Web Vuser Technology Getting Started with Web Vuser Scripts Using the Graphical Representation of a Web Vuser Script Using Text-Based Web Vuser Scripts This chapter applies to Web Vuser scripts only.
Find

?

Creating Vuser Scripts

Chapter 18, page 307

Web Vuser Scripts • Introducing Web Vuser Scripts

About Developing Web Vuser Scripts
You use QuickTest to develop Web Vuser scripts. While you navigate through your web site performing typical user activities, QuickTest records your actions and generates a Vuser script. When you run the Vuser script, the resulting Vuser emulates a user accessing the Internet. QuickTest can display a Web Vuser script in two ways: 1 as a graphical representation of the Vuser script 2 as a text-based representation of the Vuser script While you record a script, QuickTest always displays the graphical representation of the Vuser script. You use QuickTest to view and edit both the graphical view and the text-based view of the Vuser script. You can easily switch between the two views.
Find
In

?

Creating Vuser Scripts

Chapter 18, page 308

Web Vuser Scripts • Introducing Web Vuser Scripts

Graphical representation of a Web Vuser script

Find

?

Creating Vuser Scripts

Chapter 18, page 309

Web Vuser Scripts • Introducing Web Vuser Scripts

In

Text-based representation of a Web Vuser script

Find

?

Note that you can also use VuGen to view and edit the text-based representation of a Web Vuser script. After you create a Vuser script, you run the script in stand-alone mode—using either QuickTest or VuGen. When the execution is successful, you are ready to integrate the Vuser script into a LoadRunner scenario. For details on how to include a Vuser script into a scenario, refer to your LoadRunner Controller User’s Guide.

Creating Vuser Scripts

Chapter 18, page 310

Web Vuser Scripts • Introducing Web Vuser Scripts

Introducing Web Vusers
Suppose you have a web site that displays product information for your company. The site is accessed by potential customers. You want to ensure that the response time for any customer query is less than a specified value (say 20 seconds)—even when a large number of users (say 200) access the site simultaneously. You use Web Vusers to emulate this scenario in which the web server services the numerous simultaneous requests for information. Each Web Vuser could:

• • • •

load your home page navigate to the page containing the product information submit a query wait for a response from the server You can distribute several hundred Web Vusers among the available testing machines, each Vuser accessing the web server by using the server’s API. This enables you to measure the performance of your web server under the load of many users. The program that contains the calls to the server API is called a Web Vuser script. It emulates a browser application and all of the actions performed by the browser. Using the LoadRunner Controller, you assign the script to multiple Vusers. The Vusers execute the script and emulate user load on the client/server system.

Find

?

Creating Vuser Scripts

Chapter 18, page 311

Web Vuser Scripts • Introducing Web Vuser Scripts

Understanding Web Vuser Technology
QuickTest creates Web Vuser scripts by recording the activity between a Web browser application and a Web server. QuickTest monitors the client (browser) end of the system and traces all the requests sent to, and received from, the web server.
In

o

Find
Client running a web browser application QuickTest Web Server

?

Each Web Vuser communicates directly with a web server without relying on client software. Instead, the Web Vuser executes a script that executes calls directly to the web server via API functions.

Web Vuser script

Web Server

Creating Vuser Scripts

Chapter 18, page 312

Web Vuser Scripts • Introducing Web Vuser Scripts

Getting Started with Web Vuser Scripts
This section provides an overview of the process of developing Web Vuser scripts. To develop a Web Vuser script: 1 Record a Vuser script using QuickTest. Start QuickTest and create a new Vuser script. Record your actions while you navigate your web site. For details, see Chapter 19, Recording Web Vuser Scripts. 2 Enhance the recorded Vuser script. Enhance the Vuser script by inserting transactions, rendezvous points, and service steps. For details, see Chapter 19, Recording Web Vuser Scripts,, and Chapter 22, Modifying Web Vuser Scripts. 3 Define parameters (optional). Define parameters for the fixed-values recorded into your script. By substituting fixed-values with parameters, you can repeat the same Vuser action many times using different values. For details, see Chapter 23, Parameterizing a Web Vuser Script.
Find

?

Creating Vuser Scripts

Chapter 18, page 313

Web Vuser Scripts • Introducing Web Vuser Scripts

4 Configure the run-time settings. The run-time settings control the Vuser behavior while executing a Vuser script. These settings include general run-time settings (iteration, log, and timing information), and Web-related settings (performance, HTTP timing, and proxy , details). For details, see Chapter 6, Configuring Run-Time Settings, and Chapter 20, Configuring Web Run-Time Settings. 5 Save and run the Vuser script using QuickTest. Run the Vuser script from QuickTest to verify that it runs correctly. For details, see Chapter 21, Running Web Vuser Scripts. After you create a Web Vuser script, you integrate it into a LoadRunner scenario. For more information on integrating Vuser scripts in a scenario, refer to your LoadRunner Controller User’s Guide.
Find
In

?

Creating Vuser Scripts

Chapter 18, page 314

Web Vuser Scripts • Introducing Web Vuser Scripts

Using the Graphical Representation of a Web Vuser Script
While you record a Web Vuser script, QuickTest displays the graphical representation of the Vuser script. After recording a Web Vuser script, you use QuickTest to view and edit the the graphical representation of the script. You can easily display the text-based representation of the script. To display the graphical representation of a Vuser script:

From the QuickTest main menu, select View > Expert Mode. The Vuser script is displayed in graphical mode. The check mark is removed from next to Expert Mode on the View menu. The graphical representation of a Vuser script is composed of icons. Each icon represents an action of the Vuser. The icons are divided into three categories: actions, controls, and services.

Find

?

Creating Vuser Scripts

Chapter 18, page 315

Web Vuser Scripts • Introducing Web Vuser Scripts

Action Icons
Each action icon in the Vuser script represents a jump to a new web page i,e, a change in the web context. QuickTest adds an action icon to the Vuser script while recording—when you click a hypertext or hypergraphic link, or you submit a form. When you run a Vuser script, each action icon displays a new web page or frame in the browser.
In

Segment of a QuickTest Vuser script showing the five types of Action icons

Find

?

QuickTest uses five different action icons, each one representing a different useraction during recording and playback

Creating Vuser Scripts

Chapter 18, page 316

:

Web Vuser Scripts • Introducing Web Vuser Scripts
Icon Type
URL

Description
A URL icon is always the first icon in a Vuser script. QuickTest also inserts a URL icon when you use a bookmark to access a specific web page, or type in a URL. Each URL icon represents a web_url function in the Vuser script. The default label of a URL icon is the last part of the URL of the target page. A Link icon is added to the Vuser script when you click a hypertext link while recording. Each link icon represents a web_link function in the Vuser script. The default label of the icon is the text string of the hypertext link. An Image icon is added to the Vuser script when you click a hypergraphic link while recording. Each image icon represents a web_image function in the Vuser script. If the image in the HTML code has an ALT attribute, then this attribute is used as the default label of the icon. If the image in the HTML code does not have an ALT attribute, then the last part of the SRC attribute is used as the icon’s label. A Form Submission or Data Submission icon is added to the Vuser script when you submit a form while recording. Each icon represents either a web_submit_form function or a web_submit_data function in the Vuser script. QuickTest adds a Custom Request icon to a Vuser script when you record an action that QuickTest can not recognize as any of the standard actions (i.e. URL, link, image, or form submission). For example, if you record a form submission that includes an attached file, QuickTest represents the form submission with a Custom Request icon. Each custom request icon represents a web_custom_request function in the Vuser script. Find

Link

Image

?

Form/Data Submission

Custom Request

Creating Vuser Scripts

Chapter 18, page 317

Web Vuser Scripts • Introducing Web Vuser Scripts Control Icons
Each control icon in the Vuser script represents a control used during load testing. Controls include transactions and rendezvous points. You can add control icons either while recording, or after recording. QuickTest uses three control icons: Icon Type
Start Transaction
In

Description
A Start Transaction icon is added when you click the Start Transaction button while recording. Each Start Transaction icon represents an lr_start_transaction function in the Vuser script. An End Transaction icon is added when you click the End Transaction button while recording. Each End Transaction icon represents an lr_end_transaction function in the Vuser script. A Rendezvous icon is added when you click the Rendezvous button while recording. Each Rendezvous icon represents an lr_rendezvous function in the Vuser script.

Find

End Transaction

?

Rendezvous

Creating Vuser Scripts

Chapter 18, page 318

Web Vuser Scripts • Introducing Web Vuser Scripts

Service Icons
A Service icon represents a step that does not make any changes in the web application context. Rather, service steps perform customization tasks such as setting proxies, submitting authorization information, and issuing customized headers. Service steps in a Vuser script override any run-time settings that are set for the script. For details on the run-time settings, see Chapter 20, Configuring Web Run-Time Settings.
You can insert service steps into a Vuser script after recording. All service steps are represented by the service icon. Each service icon represents a service function. QuickTest records only a subset of the service functions. You can either manually program them into a script, or use the function generator inside QuickTest to generate the functions and insert them into the script. For a list of service functions, see Service Functions on page 324.
Find

?

Creating Vuser Scripts

Chapter 18, page 319

Web Vuser Scripts • Introducing Web Vuser Scripts

Using Text-Based Web Vuser Scripts
In

After you record a browser session, QuickTest displays the recorded Vuser script in graphical mode. In place of the graphical Vuser script, you can view a textbased version of the Vuser script. To display the text-based representation of the Vuser script:

From the QuickTest main menu, select View > Expert Mode. The Vuser script is displayed in text-based mode. A check mark is displayed next to Expert Mode on the View menu. You can use QuickTest to view and edit the text-based Vuser script. You can scroll through the script and see the web statements that were generated by your browser application, and you can make changes to the script as required.

Find

?

Note: If you make changes to a text-based Vuser script, QuickTest makes the corresponding changes to the graphical view of the Vuser script. In certain circumstances, QuickTest may be unable to update the graphical view of the Vuser script with the changes that you make to the text-based script. In such circumstances, QuickTest displays a warning.

Creating Vuser Scripts

Chapter 18, page 320

Web Vuser Scripts • Introducing Web Vuser Scripts

Online Function Reference

A Web Vuser script is composed of Vuser functions that emulate communication between a web browser and a web server. These functions are called WEB Vuser functions. Each WEB Vuser function has a web prefix. Some WEB functions are generated when you record a script; others you must manually insert into the script. For detailed information on the WEB functions, refer to the LoadRunner Online Function Reference (available from the QuickTest Help menu.

Note: To quickly access information about a specific function in your Vuser script, place the mouse cursor inside the function and press F1.

Find

?

Creating Vuser Scripts

Chapter 18, page 321

Web Vuser Scripts • Introducing Web Vuser Scripts

The following WEB Vuser functions are used in Web Vuser scripts:

• • •

In

Action Functions Control Functions Service Functions

Action Functions
When you record a Web Vuser script, QuickTest generates the following action functions, and inserts them into the script: web_custom_request web_image web_link web_submit_data web_submit_form web_url Allows you to create a custom HTTP request with any method supported by HTTP . Emulates a mouse click on the defined image. Emulates a mouse click on the defined text link. Performs an "unconditional" or "contextless" form submission. Emulates the submission of a form. Loads the URL specified by the "URL" attribute.
Find

?

Creating Vuser Scripts

Chapter 18, page 322

Web Vuser Scripts • Introducing Web Vuser Scripts

Control Functions
Each control icon in the Vuser script represents a control function used during load testing. Controls include transactions and rendezvous points. QuickTest uses three control functions: lr_start_transaction Marks the beginning of a transaction for performance analysis. lr_end_transaction Marks the end of a transaction for performance analysis. lr_rendezvous Sets a rendezvous point in the Vuser program.
Find

?

Creating Vuser Scripts

Chapter 18, page 323

Web Vuser Scripts • Introducing Web Vuser Scripts Service Functions
In addition to the step functions and control functions, the following service functions can be used in Web Vuser scripts. You can manually program them into the script, or you can use the function generator inside QuickTest to generate the functions. Header Functions web_add_header web_add_auto_header Adds a customized header to the next HTTP request. Adds a customized header to all subsequent HTTP requests.
Find
In

web_cleanup_auto_headers Stops adding customized headers to subsequent HTTP requests. Proxy Server Functions web_set_proxy specified proxy server. web_set_secure_proxy specified proxy server. web_set_proxy_bypass Specifies that all subsequent HTTP requests be directed to the Specifies that all subsequent HTTPS requests be directed to the Specifies that all subsequent HTTP requests bypass the proxy server.

?

Creating Vuser Scripts

Chapter 18, page 324

Web Vuser Scripts • Introducing Web Vuser Scripts

Authentication Function web_set_user Specifies a login string and password for a web server or proxy server.

Connection Definition Functions web_set_connections_limit web_enable_keep_alive web_disable_keep_alive Timeout Function web_set_timeout Specifies the maximum amount of time that a Vuser waits to execute a specified task. Sets the maximum number of simultaneous connections that a Vuser can open during script execution. Enables keep alive HTTP connections. Disables keep alive HTTP connections.
Find

?

Cookie Functions web_remove_cookie web_add_cookie web_cleanup_cookies Correlation Functions web_create_html_param Saves dynamic information generated during script replay to a parameter. Used for correlating HTML statements. Sets the maximum length of retrieved dynamic HTML information. Removes the specified cookie. Adds a new cookie or modifies an existing one. Removes all the cookies that are currently stored by the Vuser.

web_set_max_html_param_length

Creating Vuser Scripts

Chapter 18, page 325

Web Vuser Scripts
Recording Web Vuser Scripts
19 Recording Web Vuser Scripts

You use QuickTest to create Web Vuser scripts by recording a web browser session. This chapter describes:

In

• • •

Recording a Browser Session Inserting Transactions Inserting Rendezvous Points This chapter applies to Web Vuser scripts only.
Find

?

Creating Vuser Scripts

Chapter 19, page 326

Web Vuser Scripts • Recording Web Vuser Scripts

About Recording Web Vuser Scripts
QuickTest enables you to generate Web Vuser scripts by recording the typical processes that users perform on your web site. When you run a Web Vuser script, the resulting Vuser emulates activity between a browser application and your web server. While recording a Vuser script, QuickTest displays a graphical representation of the recorded Vuser script. After recording, you can edit the Vuser script—either by making changes directly in the graphical representation, or by modifying the script itself using the expert mode. For more information on the QuickTest viewing modes, see Chapter 18, Introducing Web Vuser Scripts. To record a Vuser script, you can use either your default browser or you can specify any another browser that is installed on your computer. To change the browser used during recording, in QuickTest, select Tools > Options and then click the Browser tab.

Find

?

Creating Vuser Scripts

Chapter 19, page 327

Web Vuser Scripts • Recording Web Vuser Scripts

Recording a Browser Session
QuickTest records all the actions that you perform in your web browser. Your activities can include hyperlink jumps (both hypertext and hypergraphic) and form submissions. QuickTest saves the recorded actions in a Web Vuser script.
In

Note: QuickTest cannot record into an existing Vuser script. For details on how to add a step to a Vuser script after recording, see Chapter 22, Modifying Web Vuser Scripts.
Find

To record a browser session: 1 Choose QuickTest from the LoadRunner program group. The QuickTest main window opens. 2 Click the Start Recording button. The Start Test Recording dialog box opens.

?

Creating Vuser Scripts

Chapter 19, page 328

Web Vuser Scripts • Recording Web Vuser Scripts

3 Type the web location (URL) from which you want to start recording the script, and then click OK. A web browser opens, displaying the web page that you specified in step 3. A URL icon representing the starting web location appears as the first entry in the Vuser script.

Find

Note: To change the browser that QuickTest uses to record a script, select Tools > Options. From the Browser tab, select the required browser.

?

4 Navigate through your web site by clicking hypertext and hypergraphic links, and submitting forms. Each link that you click adds another Action icon to the Vuser script. Each form you submit adds another form submission icon to the Vuser script. 5 While recording, use the QuickTest toolbar to insert transactions and rendezvous points. For details, see Inserting Transactions and Inserting Rendezvous Points below. After performing all the required user processes, stop recording.

Creating Vuser Scripts

Chapter 19, page 329

Web Vuser Scripts • Recording Web Vuser Scripts

6 Click the Stop Recording button on the QuickTest toolbar. The browser closes.
In

Find

?

7 Choose File > Save As, or click the Save button to save the Vuser script. Specify a file name and location in the Save As dialog box, and then click OK. After recording, you can edit the Vuser script. You can use either the graphical view or the text-based view of the Vuser script. For details on the two modes, see Chapter 18, Introducing Web Vuser Scripts.

Creating Vuser Scripts

Chapter 19, page 330

Web Vuser Scripts • Recording Web Vuser Scripts

Inserting Transactions
You insert transactions into a Vuser script to enabe LoadRunner to measure the performance of the server under various load conditions. Each transaction measures the time that it takes for the server to respond to tasks submitted by Vusers. You can create transactions to measure simple tasks, such as accessing a URL, or complex processes, such as submitting several queries and waiting for a response. To define a transaction, you insert a Start Transaction and End Transaction icon into the Vuser script. Within a Vuser script, you can mark an unlimited number of transactions—each with a different name, and starting and ending in different places. You insert LoadRunner transaction statements into your script either during or after the recording session. You can instruct the LoadRunner Controller to handle every step in a Web Vuser script as a transaction. This is called using automatic transactions. The steps that the Controller includes in transactions are URLs, hypertext links, hypergraphic links, and form submissions. LoadRunner assigns the step name as the name of the transaction. By default automatic transactions are enabled. For details on automatic transactions, see Chapter 20, Configuring Web Run-Time Settings. During a scenario execution, the LoadRunner Controller measures the time that it takes to perform each transaction. After a scenario run, you use LoadRunner’s graphs and reports to analyze the server’s performance.
Find

?

Creating Vuser Scripts

Chapter 19, page 331

Web Vuser Scripts • Recording Web Vuser Scripts

To mark the start of a LoadRunner transaction while recording: 1 Click the Start Transaction button on the QuickTest toolbar. The Start Transaction dialog box opens.
In

2 Type a transaction name in the Name box. 3 Click OK to accept the transaction name. QuickTest inserts a Start Transaction icon into the Vuser script.

Find

?

Creating Vuser Scripts

Chapter 19, page 332

Web Vuser Scripts • Recording Web Vuser Scripts

To mark the end of a transaction while recording: 1 Click the End Transaction button on the QuickTest toolbar. The End Transaction dialog box opens.

2 Click the arrow to display a list of open transactions. Select the transaction to close. 3 Click OK to accept the transaction name. QuickTest inserts an End Transaction icon into the Vuser script. Note that you can insert a transaction into your script after you complete the recording session. To do so, right-click the mouse and then select Insert Transaction. For details, see Chapter 22, Modifying Web Vuser Scripts.

Find

?

Creating Vuser Scripts

Chapter 19, page 333

Web Vuser Scripts • Recording Web Vuser Scripts

Inserting Rendezvous Points
In

In order to emulate a specific user load while measuring server performance, you synchronize Vusers to perform a task at exactly the same moment. You ensure that multiple Vusers act simultaneously by creating a meeting place, known as a rendezvous point. When a Vuser arrives at the rendezvous point, it is held by the LoadRunner Controller until all the Vusers participating in the rendezvous arrive. When the rendezvous conditions are met, the Vusers are released by the Controller.
Find

You designate the meeting place by inserting a Rendezvous icon into your Vuser script. When a Vuser executes a Vuser script and encounters the Rendezvous icon, execution is paused and the Vuser waits for permission from the Controller to continue. After the Vuser is released from the rendezvous, it performs the next task in the Vuser script.

?

Creating Vuser Scripts

Chapter 19, page 334

Web Vuser Scripts • Recording Web Vuser Scripts

To insert a rendezvous point while recording: 1 Click the Rendezvous button on the QuickTest toolbar. The Insert Rendezvous dialog box opens.

Find

2 Type a rendezvous name in the Name box. 3 Click OK to accept the rendezvous name. QuickTest inserts a rendezvous icon into the Vuser script. Note that you can insert a rendezvous point into your script after you complete the recording session by right-clicking the mouse and then selecting Insert Rendezvous. For details, see Chapter 22, Modifying Web Vuser Scripts.

?

Creating Vuser Scripts

Chapter 19, page 335

Web Vuser Scripts
Configuring Web Run-Time Settings
20 Configuring Web Run-Time Settings

After creating a Web Vuser script, you set the run-time settings. The run-time settings determine how the script will behave when you run it. This chapter describes the following web-related run-time settings:

In

• • • •

Performance Settings HTTP Settings Timing Settings Server Settings This chapter applies to Web Vuser scripts only.
Find

?

Creating Vuser Scripts

Chapter 20, page 336

Web Vuser Scripts • Configuring Web Run-Time Settings

About Configuring Web Run-Time Settings
After developing a Web Vuser script, you set the run-time settings. The run-time settings define how the Vuser script behaves when you execute it. The run-time settings are divided into general settings and web-related settings. This chapter describes the web-related settings only. For details on the general run-time settings (iteration, log, and think time), see Chapter 6, Configuring Run-Time Settings. You set the web-related run-time settings from the Run-Time Settings dialog box. You can access the Run-Time Settings dialog box from QuickTest, the Controller, and fromVuGen. To display the Run-Time Settings dialog box:
Find

?

• • •

Using QuickTest: Select File > Run-Time Settings, or click the Run-Time Settings button on the toolbar. Using VuGen: Click the Settings button from the main VuGen window. Note that the Web-related run-time settings tabs are enabled only for Web Vuser scripts. Using the Controller: Display the Scripts window, and then select Scripts > Run-Time Settings from the Controller main menu. Note that the web-related run-time settings tabs are enabled only for Web Vuser scripts.

Creating Vuser Scripts

Chapter 20, page 337

Web Vuser Scripts • Configuring Web Run-Time Settings

The Run-Time Settings dialog box has four tabs that contain the Web-related runtime settings:

In

Performance

Determine certain performance related settings such as the speed of the modem to emulate, and whether to use keep-alive conections. Define the HTTP version and the HTTP client identification to use. Allow you to specify automatic transactions, and to set various timeouts. Allow you to set the proxy settings for the Vuser.
Find

HTTP Timing Proxy

?

The following sections describe the web-related run-time settings.

Note: A Run-time seting that is set by using Vuser functions over rides the corresponding setting set via the Run-Time Settings dialog box.

Creating Vuser Scripts

Chapter 20, page 338

Web Vuser Scripts • Configuring Web Run-Time Settings

Performance Settings
You use the Performance tab in the Run-Time Settings dialog box to set the performance-related settings:

Find

?

Creating Vuser Scripts

Chapter 20, page 339

Web Vuser Scripts • Configuring Web Run-Time Settings

Modem Speed
You can specify that each web Vuser emulates a user accessing the web using a modem of a specific speed. You can select any of the available speed options, or you can enter any speed that you require. If you choose not to emulate a modem speed, all web Vusers access the web using the maximum speed that the system allows. By default, the modem speed is unlimited.
In

Connections
Keep-alive
The Keep-Alive extension to HTTP as defined by the , HTTP/1.1 draft, allows persistent connections. These longlived HTTP sessions allow multiple requests to be sent over the same TCP connection. The keep-alive option works only with web servers that support keep-alive connections. You can specify that all Vusers that run the Vuser script have keep-alive HTTP connections enabled. By default, keep-alive is enabled.
Find

?

Simultaneous

You can set the maximum number of simultaneous connections that a Vuser can open during script execution. Multiple connections are opened when loading page resources, or loading the frames in the frameset page, etc. The default limit for any Vuser is 4 simultaneous connections.

Creating Vuser Scripts

Chapter 20, page 340

Web Vuser Scripts • Configuring Web Run-Time Settings

Loading
Loading images
When you record a Web Vuser script, QuickTest does not record any information about the graphics associated with the web pages that you visit. However, you can instruct a Vuser to load the graphics associated with a web page when the Vuser accesses the page during script execution. By default, Vusers do not load the graphics on web pages. A cache is used to keep local copies of frequently accessed documents and thereby reduce the time that the Vuser is connected to the network. You can specify that when a Vuser runs, it simulates a browser with a specific cache size. If you select not to simulate a cache, all Vusers emulate a browser with no cache available.

Cache

Find

?

Note: Unlike a regular browser cache, the cache assigned to a Vuser simulates storage of graphic files only. The cache does not store text or other page contents associated with the web page.

Creating Vuser Scripts

Chapter 20, page 341

Web Vuser Scripts • Configuring Web Run-Time Settings

HTTP Settings
In

You use the HTTP tab in the Run-Time Settings dialog box to set the HTTP- related settings:

Find

?

Creating Vuser Scripts

Chapter 20, page 342

Web Vuser Scripts • Configuring Web Run-Time Settings

HTTP Client Identification
Whenever a Vuser sends a request to a web server, the request always includes an HTTP header. The first line of text contains a verb (usually "GET" or "POST"), the resource name (for example "pclt/default.htm"), and the version of the protocol (for example "HTTP/1.0"). Subsequent lines contain "header information" in the form of an attribute name, a colon, and some value. The request ends with a blank line. All web Vuser headers include a "user-agent" header that identifies the type of browser that is being emulated. For example, User-Agent: Mozilla/3.01Gold (WinNT; I) identifies the Browser as Netscape Navigator 3.01 running under Windows NT on an Intel machine. You can specify that a Web Vuser emulate any of the standard browsers. Alternatively, you can specify that each Vuser emulates an HTTP client that is not in the list of supported browsers. In this case, you must supply a custom user-agent string that is included in all subsequent HTTP headers.
Find

?

Creating Vuser Scripts

Chapter 20, page 343

Web Vuser Scripts • Configuring Web Run-Time Settings

Timing Settings
In

You use the Timing tab in the Run-Time Settings dialog box to set the timing-related web settings:

Find

?

Creating Vuser Scripts

Chapter 20, page 344

Web Vuser Scripts • Configuring Web Run-Time Settings

Automatic Transactions
You can instruct the LoadRunner Controller to handle every step in a Web Vuser script as a transaction. This is called using automatic transactions. The steps that the Controller includes in transactions are jumps to URLs, hypertext links, hypergraphic links, and form submissions. LoadRunner assigns the step name as the name of the transaction. By default, automatic transactions is enabled. If you disable automatic transactions, you can still insert transactions manually during and after recording. For more information on manually inserting transactions, see Chapter 19, Recording Web Vuser Scripts.

Find

?
Automatic Think Time
When you record a Web Vuser script, QuickTest does not record the time that you wait between successive actions. This time is known as your think time. However, you can use the run-time settings to insert a think time between actions when you run the Vuser script. By default, Vusers do not use automatic think times. To insert think times into your script, select the Enable Automatic Think Time check box. Then specify the maximum and minimum values for the Vuser think time (in milliseconds). When you run the Vuser script, LoadRunner randomly assigns a think time within the specified range—between successive actions.

Creating Vuser Scripts

Chapter 20, page 345

Web Vuser Scripts • Configuring Web Run-Time Settings Timeouts
You can set three timeout options:Resolve timeout, Connect timeout, and Receive timeout
In

The Resolve timeout option sets the maximum amount of time that a Vuser waits to resolve the host name into the equivalent IP address when connecting to a server. The default timeout is 120 seconds. The Connect timeout option sets the maximum amount of time that a Vuser waits to connect to a server—after resolving the IP address. The default timeout is 120 seconds.
Find

The Receive timeout option specifies the maximum amount of time that a Web Vuser waits between successive transfers of data—after a connection has been made. If the data transfer time reaches the timeout value, the Vuser skips that request. The default timeout is 120 seconds.

?

For example, suppose you are working with a browser and a message indicates that contact was made with the host and that 30% of a 13K document has being transmitted. If your browser was to freeze at that moment, you would probably terminate the transfer after several minutes. You emulate the action of terminating the transfer by setting a server timeout value. During script execution, the Vuser contacts the server and a data transfer begins. After receiving each packet of data, LoadRunner begins timing while it waits for the next transfer of data. If the data transfer time reaches the timeout value, the Vuser skips that request.

Creating Vuser Scripts

Chapter 20, page 346

Web Vuser Scripts • Configuring Web Run-Time Settings

Server Settings
You use the Proxy tab in the Run-Time Settings dialog box to set the proxy-related settings:

Find

?

Creating Vuser Scripts

Chapter 20, page 347

Web Vuser Scripts • Configuring Web Run-Time Settings

You can choose any one of the following three proxy server run-time options:

• • •

In

All Vusers use the proxy settings from the default browser on the machine on which they are running. All Vusers always use direct connections to the internet. This means that connection is made without using a proxy server. All Vusers use a specified proxy server. You supply the details of the server. You can specify one proxy server for all HTTP sites, and another proxy server for all HTTPS (secure) sites. In addition, you can specify that Vusers do not use the proxy server when they access local (intranet) addresses. If there are any URLs that you want Vusers to access directly i.e. without using the proxy server, click Exceptions and then supply the list of these URLs. If the proxy server requires authentication by each Vuser, click Authentication, and then supply the relevant password and user name.

Find

?

Note: By default, the Vuser proxy settings for any script are the settings from the default browser on the machine on which the script was recorded.

Creating Vuser Scripts

Chapter 20, page 348

Web Vuser Scripts
Running Web Vuser Scripts
21 Running Web Vuser Scripts

After creating a Web Vuser script and setting its run-time settings, you are ready to run the script. This chapter describes:

In

• •

Running a Web Vuser Script Using QuickTest Displaying a Run-Time Browser during Script Execution
Find

This chapter applies to Web Vuser scripts only.

?

Creating Vuser Scripts

Chapter 21, page 349

Web Vuser Scripts • Running Web Vuser Scripts

About Running Web Vuser Scripts
In

When you run a Web Vuser script, the resulting Vuser navigates through your web site, performing the user processes that you recorded. LoadRunner provides three tools to run your Web Vusers: QuickTest, VuGen, and the LoadRunner Controller. Both QuickTest and VuGen allow you to run a Web Vuser script in stand-alone mode. Use stand-alone mode to check that a script functions correctly—before incorporating the script into a LoadRunner scenario. This chapter describes how to use QuickTest to run Web Vuser scripts. For details on using VuGen to run a Web Vuser script, see Chapter 7, Running Vuser Scripts in Stand-Alone Mode. In order to perform load testing with a Web Vuser script, you use the LoadRunner Controller to incorporate the script into a LoadRunner scenario. The scenario defines the events that occur during each web testing session—such as the number of users to emulate, the scripts that the Vusers run, and the host machines on which the Vusers run. Once you have integrated a Web Vuser script into a scenario, you use the LoadRunner Controller to run the script. For details on running Web Vuser scripts from the Controller, refer to your LoadRunner Controller User’s Guide. Before you run a Web Vuser script, you set the run-time settings. For details on the general settings, see Chapter 6, Configuring Run-Time Settings. For details on the web-specific settings, see Chapter 20, Configuring Web Run-Time Settings.

Find

?

Creating Vuser Scripts

Chapter 21, page 350

Web Vuser Scripts • Running Web Vuser Scripts

Running a Web Vuser Script Using QuickTest
In order to perform load testing with a Web Vuser script, you need to incorporate the script into a LoadRunner scenario. Before integrating the script into a scenario, you should check its functionality by running the script in stand-alone mode.

stand-alone mode

Running a script in stand-alone mode means running the script without using a LoadRunner Controller. This is done to establish how the script will execute when run as part of a scenario. You use QuickTest to run a script in stand-alone mode.

Find

If the stand-alone execution is successful, then incorporate the script into a scenario. For more information on LoadRunner scenarios, refer to your LoadRunner Controller User’s Guide. When you run a Web Vuser script using QuickTest, QuickTest navigates through your web site, performing the user processes that you recorded.

?

Creating Vuser Scripts

Chapter 21, page 351

Web Vuser Scripts • Running Web Vuser Scripts
To run a Web Vuser script using QuickTest: 1 From the QuickTest main window, choose File > Open, or click the Open Test button. 2 Select a Vuser script in the Open dialog box and click Open. The Vuser script opens in QuickTest. 3 Choose File > Run, or click the Run button on the QuickTest toolbar. QuickTest begins executing the script. QuickTest always runs a Vuser script from the first icon in the graphical representation of the script, and from the first line of the text-based version. As each step in the script is processed, QuickTest highlights the step. If the Output window is not displayed, QuickTest opens the window at the bottom of the QuickTest main window. The Output window displays messages that describe the actions of the Vuser. To hide the Output window, select View > Output. QuickTest closes the Output window and removes the check mark from next to the Output option on the View menu. To interrupt a Vuser script that is running, click the Stop button on the QuickTest toolbar.
In

Find

?

Creating Vuser Scripts

Chapter 21, page 352

Web Vuser Scripts • Running Web Vuser Scripts

Note: If your Vuser script is parameterized using data-table parmeterization, you can choose to run only certain data sets. To do so, open the data table (View > Data Table) and select the rows that you want to run. The Vuser will execute the Vuser script once for each row that you select. For example, if you select eight rows, the Vuser will perform eight iterations of the Vuser script. For more details on parameterization, see Chapter 23, Parameterizing a Web Vuser Script.
Find

?

Creating Vuser Scripts

Chapter 21, page 353

Web Vuser Scripts • Running Web Vuser Scripts

Displaying a Run-Time Browser during Script Execution
When you use QuickTest to run a Web Vuser script, you can open a run-time browser that shows each web page as it is accessed by the Vuser. This is useful for debugging scripts and for viewing Vuser actions during a scenario run. You can display a run-time browser only if you have enabled functional mode.
In

Note: To display a run-time browser during script execution, you must have Microsoft Internet Explorer 3.0 or higher installed.

Find

To use the QuickTest user interface to enable a run-time browser: 1 Choose Tools > Options from the QuickTest menu. The Options dialog box opens.

?

2 Click the Misc tab. 3 Select the Show Run-Time Browser check box.

Creating Vuser Scripts

Chapter 21, page 354

Web Vuser Scripts
Modifying Web Vuser Scripts
22 Modifying Web Vuser Scripts

After recording a Web Vuser script, you can use QuickTest to modify the recorded script. You can add new steps, and edit, rename, and delete existing steps. This chapter describes:

In

• • • •

Modifying Step Properties Adding a Step to a Vuser Script Renaming a Step in a Vuser Script Deleting a Step from a Vuser Script This chapter applies to creating Web Vuser scripts only.
Find

?

Creating Vuser Scripts

Chapter 22, page 355

Web Vuser Scripts • Modifying Web Vuser Scripts

About Modifying a Web Vuser Script
In

After recording a Web Vuser script, you can modify the recorded script. You can edit the properties of any step in the Vuser script, and you can add steps to, and delete steps from, the Vuser script. You can do the modifications either in the graphical representation of the script, or the text-based version. For details on the two display modes, see Chapter 18, Introducing Web Vuser Scripts. This chapter describes how to use QuickTest to modify only the graphical representation of the script. For information about modifying a text-based Web Vuser script, see the LoadRunner Online Function Reference.

Find

?

Creating Vuser Scripts

Chapter 22, page 356

Web Vuser Scripts • Modifying Web Vuser Scripts

Modifying Step Properties
You can modify the properties of any step in the graphical Vuser script. This section describes the following:

• • • • • • •

Modifying a URL Step Modifying a Hypertext Link Step Modifying a Hypergraphic Link Step Modifying a Form Submission Step Modifying a Custom Request Step Modifying a Submit Data Step Modifying a Service Step
Find

?

Creating Vuser Scripts

Chapter 22, page 357

Web Vuser Scripts • Modifying Web Vuser Scripts

Modifying a URL Step
You can modify the properties of a URL step in the graphical representation of a Vuser script. The properties that you can modify are the name of the step, and the address of the URL. To modify the properties of a URL step: 1 In the graphical Vuser script, select the icon for the URL step that you want to edit. 2 Click the Parameters button on the QuickTest toolbar. The URL Step Properties dialog box opens.
Find
In

?

Creating Vuser Scripts

Chapter 22, page 358

Web Vuser Scripts • Modifying Web Vuser Scripts

3 In the Step Name box, type a name for the URL step. The default name during recording is the last part of the URL. 4 In the URL box, type the address (URL) of the web page that is accessed by the URL step. An ABC icon indicates that the URL has not been assigned a parameter. To assign a parameter, see Chapter 23, Parameterizing a Web Vuser Script. 5 In the Target Frame box, select one of the following values: Target Frame: _BLANK: Opens a new window. _PARENT: Replaces the parent of the last (changed) frame. _SELF: Replaces the last (changed) frame. _TOP: Replaces the whole page. 6 Click OK to close the URL Step Properties dialog box.
Find

?

Creating Vuser Scripts

Chapter 22, page 359

Web Vuser Scripts • Modifying Web Vuser Scripts

Modifying a Hypertext Link Step
You can modify the properties of a hypertext link step in the graphical representation of a Vuser script. The properties that you can modify are the name of the step, and the text of the hypertext link. To modify the properties of a hypertext link step: 1 In the graphical Vuser script, select the icon for the hypertext link step that you want to edit. 2 Click the Parameters button on the QuickTest toolbar. The Link Step Properties dialog box opens. Ensure that the General tab is visible.
Find
In

?

3 In the Step Name box, type a name for the hypertext link step. The default name during recording is the text string of the hypertext link.

Creating Vuser Scripts

Chapter 22, page 360

Web Vuser Scripts • Modifying Web Vuser Scripts

4 The Active properties table displays the property or properties that identify the link. Clear the “View all the available properties” check box to view active and non active properties. To enable a property, click the cell to the left of the property name. Edit the property by typing in the Value column: Link Property: Text: The exact string of the hypertext link. Frame: The name of the frame where the link is located. Target: The target frame: _TOP: Replaces the whole page. _BLANK: Opens a new window. _PARENT: Replaces the parent of the last (changed) frame. _SELF: Replaces the last (changed) frame. Ordinal: A number which uniquely identifies the link when all other attributes are identical to one or more other links on the web page. See the LoadRunner Online Function Reference for details. An ABC icon indicates that the URL has not been assigned a parameter. To assign a parameter, see Chapter 23, Parameterizing a Web Vuser Script. 5 Click OK to close the Link Step Properties dialog box.
Find

?

Creating Vuser Scripts

Chapter 22, page 361

Web Vuser Scripts • Modifying Web Vuser Scripts

Modifying a Hypergraphic Link Step
You can modify the properties of a hypergraphic link step in the graphical representation of a Vuser script. The properties that you can modify are the name of the step, and how the hypergraphic link is identified. To modify the properties of a hypergraphic link step: 1 In the graphical Vuser script, select the icon for the hypergraphic link step that you want to edit. 2 Click the Parameters button on the QuickTest toolbar. The Image Step Properties dialog box opens. Ensure that the General tab is visible.
Find
In

?

3 The Active properties box displays the property or properties that identify the link. Clear the “View all the available properties” check box to view active and non active properties. To enable a property, click the cell to the left of the property name. Edit the property by typing in the Value column:

Creating Vuser Scripts

Chapter 22, page 362

Web Vuser Scripts • Modifying Web Vuser Scripts

Image Property: ALT: The ALT attribute of the image. SRC: The SRC attribute of the image. Map Name: The name of the map related to the image. Applies to client-side image
maps only.

Area Alt: The ALT attribute of the area to click. Applies to client-side image maps
only.

Area Ordinal: The serial number of the area to click. Applies to client-side image
maps only.

Find

Frame: The name of the frame where the image is located. Target: The target frame: _TOP: Replaces the whole page. _BLANK: Opens a new window. _PARENT: Replaces the parent of the last (changed) frame. _SELF: Replaces the last (changed) frame. Ordinal: A number which uniquely identifies the image when all other attributes are identical to one or more other images on the web page. See the LoadRunner Online Function Reference for details. An ABC icon indicates that a link property value has not been assigned a parameter. To assign a parameter, see Chapter 23, Parameterizing a Web Vuser Script. 4 Click OK to close the Image Step Properties dialog box.

?

Creating Vuser Scripts

Chapter 22, page 363

Web Vuser Scripts • Modifying Web Vuser Scripts

Modifying a Form Submission Step
You can modify the properties of a form submission step in the graphical representation of a Vuser script. The properties that you can modify are the name of the step, and how the form submission is identified. To modify the properties of a form submission step: 1 In the graphical Vuser script, select the icon for the form submission step that you want to edit. 2 Click the Parameters button on the QuickTest toolbar. The Submit Form Step Properties dialog box opens. Ensure that the Data tab is visible.
Find
In

?

Creating Vuser Scripts

Chapter 22, page 364

Web Vuser Scripts • Modifying Web Vuser Scripts

• • •

The Name column lists all the data arguments on the form. The Value column displays the corresponding value input for a data argument. The Type column contains an icon. Initially, all values are constants or nonparameterized values and have an ABC icon. If you assign a parameter to the data value, as described in Chapter 23, Parameterizing a Web Vuser Script, the ABC icon changes to a table icon.

3 To add a new data argument to the form submission, click the Add button. The Add Argument dialog box opens. Type a Name and Value for the data argument. Click OK. 4 To delete an argument, click the Delete button and click Yes to the warning message. 5 To change the name of the submit form step, click the General tab.
Find

?

Creating Vuser Scripts

Chapter 22, page 365

Web Vuser Scripts • Modifying Web Vuser Scripts
6 In the Step name box, type a name for the submit form step. The default name during recording is the name of the executable program used to process the form. 7 The Active properties box displays the property or properties that identify the form submission. Clear the View all the available properties check box to view active and non active properties. To enable a property, click the cell to the left of the property name. Edit the property by typing in the Value column: Submit Form Property:
Find
In

Action: The address to be used to carry out the action of the form. Frame: The name of the frame where the form submission is located. Target: The target frame: _TOP: Replaces the whole page. _BLANK: Opens a new window. _PARENT: Replaces the parent of the last (changed) frame. _SELF: Replaces the last (changed) frame. Ordinal: A number which uniquely identifies the form when all other attributes are identical to one or more other forms on the same web page. See the LoadRunner Online Function Reference for details. Hidden: Lists the hidden fields in a form. To add a hidden field, click Show list, and then click the Add button on the Form Hidden Fields dialog box. An ABC icon indicates that an image property value has not been assigned a parameter. To assign a parameter, see Chapter 23, Parameterizing a Web Vuser Script.

?

Creating Vuser Scripts

Chapter 22, page 366

Web Vuser Scripts • Modifying Web Vuser Scripts

8 To add or remove a hidden field, enable the Hidden property and click the Show List button. The Form Hidden Fields dialog box opens. Click the Add button to add a hidden field. Type a name and value. Click OK. Click the Remove button to remove a hidden field, and click Yes to the warning message. An ABC icon indicates that a hidden field has not been assigned a parameter. To assign a parameter, see Chapter 6, Parameterizing a Test. Click OK to close the Form Hidden Fields dialog box. 9 Click OK to close the Submit Form Step Properties dialog box.
Find

?

Creating Vuser Scripts

Chapter 22, page 367

Web Vuser Scripts • Modifying Web Vuser Scripts

Modifying a Custom Request Step
A custom request represents a custom HTTP request for a URL, with any method supported by HTTP A custom request step is contextless. The properties that you . can modify are the name of the step, method, URL, body, and target frame. To modify the properties of a custom request step: 1 In the graphical Vuser script, select the icon for the custom request step that you want to modify.
Find
In

?

Creating Vuser Scripts

Chapter 22, page 368

Web Vuser Scripts • Modifying Web Vuser Scripts

2 Click the Parameters button on the QuickTest toolbar. The Custom Request Properties dialog box opens.

Find

?

3 In the Step name box, type a name for the custom request step.

Creating Vuser Scripts

Chapter 22, page 369

Web Vuser Scripts • Modifying Web Vuser Scripts

4 In the Method box, type any method supported by HTTP For example, GET, . POST and HEAD. 5 In the URL box, type the URL being requested. 6 In the Body box, type the body of the request. If you check the Binary data check box, the text is treated as binary, and not as ASCII. For details on using binary data, see the LoadRunner Online Function Reference. 7 Select a Target Frame from the list: Target Frame: _BLANK: Opens a new window. _PARENT: Replaces the parent of the last (changed) frame. _SELF: Replaces the last (changed) frame. _TOP: Replaces the whole page. 8 Click OK.

In

Find

?

Creating Vuser Scripts

Chapter 22, page 370

Web Vuser Scripts • Modifying Web Vuser Scripts

Modifying a Submit Data Step
A submit data step represents the submission of a form of data to your web site for processing. This is different to a Submit Form step because you don’t need to have a form context to execute this request. The properties that you can modify are the name of the step, the data items on the form, the method, action and target frame. To modify the properties of a submit data step: 1 In the graphical Vuser script, select the icon for the submit data step you want to modify. 2 Click the Parameters button on the QuickTest toolbar. The Submit Data Step Properties dialog box opens and displays the Data tab.

Find

?

Creating Vuser Scripts

Chapter 22, page 371

Web Vuser Scripts • Modifying Web Vuser Scripts

• • •

The Name column lists all the data arguments on the form. This includes all hidden fields. The Value column displays the corresponding value input for a data argument. The Type column contains an icon. Initially, all values are constants or nonparameterized values and have an ABC icon. If you assign a parameter to the data value, as described in Chapter 23, Parameterizing a Web Vuser Script, the ABC icon changes to a table icon.

In

3 To add a new data argument to the data submission, click Add. The Add Argument dialog box opens. Type a Name and Value for the data argument. Click OK. 4 To delete an argument, click Delete and then click Yes to the warning message.

Find

?

Creating Vuser Scripts

Chapter 22, page 372

Web Vuser Scripts • Modifying Web Vuser Scripts

5 To change the name of the submit data step, click the General tab.

Find

?

6 In the Step name box, type a name for the submit data step. 7 Select an HTTP Method - Post or Get. The default method is Post. 8 In the Action box, type the address to be used to carry out the action of the data submission. To assign a parameter, see Chapter 23, Parameterizing a Web Vuser Script.

Creating Vuser Scripts

Chapter 22, page 373

Web Vuser Scripts • Modifying Web Vuser Scripts

9 Select a Target Frame from the list:
In

Target Frame: _BLANK: Opens a new window. _PARENT: Replaces the parent of the last (changed) frame. _SELF: Replaces the last (changed) frame. _TOP: Replaces the whole page. 10 Click OK.

Find

?

Creating Vuser Scripts

Chapter 22, page 374

Web Vuser Scripts • Modifying Web Vuser Scripts Modifying a Service Step
A service step is a function which performs customization tasks such as setting proxies, submitting authorization information, and issuing customized headers. Service steps do not make any changes in the web site context. To modify the properties of a service step: 1 In the graphical Vuser script, select the icon for the service step that you want to modify. 2 Click the Parameters button on the Test Toolbar. The Service Step Properties dialog box opens.

Find

?

3 Select a service function from the Type list. See the LoadRunner Online Function Reference for details of each function. 4 In the Arguments box, type the arguments required for the selected service step. Use the hint displayed to help you format the arguments used by the step. 5 Click OK to close the Service Step Properties dialog box and to insert a service step icon into the Vuser script.

Creating Vuser Scripts

Chapter 22, page 375

Web Vuser Scripts • Modifying Web Vuser Scripts

Adding a Step to a Vuser Script
In

You can add steps to a recorded Web Vuser script. To add a step to a Vuser script: 1 In the graphical Vuser script, select the icon at the location where you want to add a step. 2 Click the right mouse button and then click Add Step. The Add Test Step dialog box opens.
Find

?

3 In the Step Type box, select the type of step that you want to add. 4 In the Step Name box, type a name for the new step, and then click OK.

Creating Vuser Scripts

Chapter 22, page 376

Web Vuser Scripts • Modifying Web Vuser Scripts

An additional dialog box opens, prompting for information about the step to add. This dialog box varies, depending on the type of step that you are adding. For details on using these dialog boxes, see the appropriate section as listed below:
To add a... URL step Hypertext step Hypergraphic step Form submission step Custom Request step Data submission step Transaction Rendezvous Service step See...

Modifying a URL Step on page 358 Modifying a Hypertext Link Step on page 360 Modifying a Hypergraphic Link Step on page 362 Modifying a Form Submission Step on page 364 Modifying a Custom Request Step on page 368 Modifying a Submit Data Step on page 371 Adding a Transaction after Recording on
page 379 Find

?

Adding a Rendezvous after Recording on
page 378

Modifying a Service Step on page 375

Creating Vuser Scripts

Chapter 22, page 377

Web Vuser Scripts • Modifying Web Vuser Scripts Adding a Rendezvous after Recording
After recording a Web Vuser script, you can use QuickTest to add a rendezvous to the Vuser script. To add a rendezvous to a Vuser script: 1 In the graphical Vuser script, select the icon at the location where you want to insert the new rendezvous. 2 Click the right mouse button and then click Add Step. The Add Test Step dialog box opens.
Find
In

?

3 In the Step Type box, select rendezvous. 4 In the Step Name box, type a name for the new rendezvous, and then click OK. The Add Test Step dialog box closes, and a rendezvous icon is inserted into the Vuser script.

Creating Vuser Scripts

Chapter 22, page 378

Web Vuser Scripts • Modifying Web Vuser Scripts

Adding a Transaction after Recording
After recording a Web Vuser script, you can use QuickTest to add a transaction to the Vuser script. To add a transaction to a Web-Vuser script: 1 In the graphical Vuser script, select the icon at the location where you want to start the new transaction. 2 Click the right mouse button and then click Add Step. The Add Test Step dialog box opens.

Find

?

3 In the Step Type box, select Transaction.

Creating Vuser Scripts

Chapter 22, page 379

Web Vuser Scripts • Modifying Web Vuser Scripts

4 In the Step Name box, type a name for the new transaction, and then click Next. A Start Transaction icon is inserted into the Vuser script. 5 Use the green down-arrow button to move the highlight in the Vuser script to where you want to end the transaction. 6 Click Finish to close the Add Test Step dialog box and to insert an End Transaction icon into the Vuser script.

In

Find

?

Creating Vuser Scripts

Chapter 22, page 380

Web Vuser Scripts • Modifying Web Vuser Scripts

Renaming a Step in a Vuser Script
You can change the name of a step in your Vuser script. To rename a step: 1 In the graphical Vuser script, select the step that you want to rename. 2 Select Step > Rename. 3 Type a new step name and then click Enter.
Find

?

Creating Vuser Scripts

Chapter 22, page 381

Web Vuser Scripts • Modifying Web Vuser Scripts

Deleting a Step from a Vuser Script
In

After recording a Web Vuser script, you can use QuickTest to delete any step from the Vuser script. To delete a step from a Web Vuser script: 1 In the graphical Vuser script, select the icon that you want to delete. 2 Click the right mouse button and then click Delete. 3 Click Yes to confirm that you want to delete the step. 4 The icon is deleted from the graphical representation of the Vuser script.
Find

?

Creating Vuser Scripts

Chapter 22, page 382

Web Vuser Scripts
Parameterizing a Web Vuser Script
23 Parameterizing a Web Vuser Script

QuickTest lets you modify your recorded Vuser scripts by replacing fixed values with parameters. This process, known as parameterization, greatly increases the power and flexibility of your scripts. This chapter describes:

In

• • • •

Specifying the Arguments to Parameterize Replacing Parameterized Arguments with Constants Automatically Specifying Parameterized Arguments Editing Information in the Data Table This chapter applies to Web Vuser scripts only.
Find

?

Creating Vuser Scripts

Chapter 23, page 383

Web Vuser Scripts • Parameterizing a Web Vuser Script

About Parameterizing a Script
In

You start by recording a Web Vuser script that performs a single business process. After you finish recording, you can “parameterize” certain arguments in the script so that the script runs the same business process numerous times. In each run, the Vuser changes the values of the parameterized arguments. You supply the list of values. For example, consider a web site that allows you to request information on any product in the company’s catalog. To submit a request, the user types in the product name and clicks the Submit button. In order to test the web server under the load of many users, you create a number of Web Vusers. Each Vuser requests information about ten different products. To create the required Vuser scripts, you have two options:

Find

?

• •

You could record a process where the user submits ten requests. To have different Vusers submit requests for different products, you would have to record different scripts. This is a slow, laborious, and inefficient solution. You could use parameterization. To use parameterization, you record a script that accesses the web site and submits just a single request. Then you parameterize the script, and supply the Vuser with a list of the products to query. When you run the script, the Vuser submits a separate query for each product in the list.

Creating Vuser Scripts

Chapter 23, page 384

Web Vuser Scripts • Parameterizing a Web Vuser Script

With QuickTest, there are two ways in which you can convert the fixed-value arguments in a Web Vuser script into parameters: 1 Data-table parameterization Data-table parameterization is a simplified type of parameterization. With datatable parameterization, you assign values from an Excel-based data file to the parameters in the Vuser script. Data-table parameterization is discussed in depth in this chapter. 2 Enhanced parameterization Enhanced parameterization is the same type of parameterization that is available through VuGen. When you use enhanced parameterization, you can assign values from a file, or use data generated internally by QuickTest: A data file can be an existing file, or you can use QuickTest to create a new one. Internal data is data that is generated automatically during scenario execution. The available internal data types are: group name, host name, Vuser ID, iteration number, date/time, random number, or unique number. For an in-depth description of enhanced parameterization, see Chapter 5, Defining Parameters.
Find

?

Creating Vuser Scripts

Chapter 23, page 385

Web Vuser Scripts • Parameterizing a Web Vuser Script

Introducing Data-table Parameterization
In

With data-table parameterization you use a data table to assign values to your parameterized arguments. Each Vuser script has an associated data table.

Find

?

• •

Each row in the data table represents the values that QuickTest submits for all the parameterized arguments during a single iteration of the script. For example, a script associated with a table that has ten rows, can run ten iterations. Each column in the table represents the list of values for a single parameterized argument. Working directly in the data table, you can edit and delete existing values, as well as add additional rows of arguments. You can also import data directly into a data table. For more details, see Editing Information in the Data Table on page 395.

Creating Vuser Scripts

Chapter 23, page 386

Web Vuser Scripts • Parameterizing a Web Vuser Script

Using data table parameterization to parameterize a script involves three main steps: 1 Record a basic script as described in Chapter 19, Recording Web Vuser Scripts. 2 Specify which arguments in the script are parameters and which are constants (not parameterized). For details, see Specifying the Arguments to Parameterize below. 3 Create data sets in the data table. For details, see Editing Information in the Data Table on page 395.
Find

?

Creating Vuser Scripts

Chapter 23, page 387

Web Vuser Scripts • Parameterizing a Web Vuser Script

Specifying the Arguments to Parameterize
You can parameterize arguments for any step in a Vuser script. You can specify arguments to be parameterized either individually as described below, or automatically as described in Automatically Specifying Parameterized Arguments on page 393. To parameterize arguments for any step in a Vuser script: 1 In the test tree, right-click the icon for the step and then click Parameters. The appropriate properties dialog box opens.
Find
In

?

2 Select the argument to be parameterized:

Creating Vuser Scripts

Chapter 23, page 388

Web Vuser Scripts • Parameterizing a Web Vuser Script

For a Form Submission step: Ensure that the Data tab is visible. All the arguments contained in the form are listed in the Name column. The corresponding value for each argument is shown in the Value column. All arguments in the data set are initially displayed as constant or non-parameterized values. This is indicated by the ABC icon appearing in the Type column. For example, the “author” argument above is defined by the constant value “Tolkien.” Select the argument to be parameterized. For a URL step or a link step: The argument is initially displayed as a constant or non-parameterized value. This is indicated by the ABC icon appearing to the side of the parameter. Select the argument to be parameterized. 3 Click Assign Parameter. The Assign Parameter dialog box opens.
Find

?

4 To use an existing parameter, click Existing parameter and then select a column name from the list.

Creating Vuser Scripts

Chapter 23, page 389

Web Vuser Scripts • Parameterizing a Web Vuser Script

5 To define a new parameter, click New parameter and then type a name in the adjacent box. To assign a value to the newly defined parameter, select the Add Data check box and then type a value in the adjacent box. 6 Click OK. In the appropriate properties dialog box, the argument appears as parameterized. This is indicated by the Table icon appearing to the side of the argument. 7 Repeat for steps 2 to 6 for any additional arguments. 8 Click Close.

In

Find

?

Creating Vuser Scripts

Chapter 23, page 390

Web Vuser Scripts • Parameterizing a Web Vuser Script

Replacing Parameterized Arguments with Constants
After parametrizing an argument, you may decide to use the argument as a constant. You can change parameterized arguments back to constants, and you can remove arguments from the data table. To replace a parameterized argument with a constant: 1 In the test tree, right-click the icon for any step that contains a parameterized argument, and then click Parameters. The appropriate properties dialog box opens You can easily identify all the arguments that have been parameterized. Each one has a Table icon appearing to the right of the argument value. 2 Select the argument to convert from a parameter to a fixed value, and then click Undo Parameter. The Undo Parameter dialog box opens.
Find

?

Creating Vuser Scripts

Chapter 23, page 391

Web Vuser Scripts • Parameterizing a Web Vuser Script

3 Type a name for the string in the Replace it with string box. 4 To remove the argument from the data table, select the Delete Parameter from Data Table check box. 5 Click OK. The argument appears in the appropriate properties dialog box as a constant. This is indicated by the ABC icon appearing to the side of the parameter. 6 Click Close in the Properties dialog box. When you run the script, QuickTest handles the argument as a constant.
Find
In

?

Creating Vuser Scripts

Chapter 23, page 392

Web Vuser Scripts • Parameterizing a Web Vuser Script

Automatically Specifying Parameterized Arguments
Instead of parameterizing individual arguments, you can define groups of arguments to be parameterized. The groups that you can select are:

• • •

all the checks in the script all the Link steps (both hypertext and hypergraphic) in the script all the form submission steps in the script You can parameterize any combination of the above three groups. To define groups of arguments to be parameterized:
Find

?

1 Click Tools > Parameterize.

Creating Vuser Scripts

Chapter 23, page 393

Web Vuser Scripts • Parameterizing a Web Vuser Script

2 Select the check boxes for the categories that you want to convert to parameterized arguments. For each category that you select, QuickTest creates a column for each argument in the data table. Text checks: Converts all checks in the QuickTest script into parameterized arguments. Form arguments: Converts all form submission steps in the QuickTest script into parameterized arguments. Links: Converts all hypertext steps in the QuickTest script into parameterized arguments. 3 Click OK. A message appears listing the columns that QuickTest added to the data table. 4 If the data table is not currently displayed, choose View > Data Table to see the table.

In

Find

?

Creating Vuser Scripts

Chapter 23, page 394

Web Vuser Scripts • Parameterizing a Web Vuser Script

Editing Information in the Data Table
The data table contains the values that QuickTest assigns to parameterized arguments when you run the Vuser script. You edit information in the data table by typing directly in the table. To edit the data table: 1 Choose View > Data Table. The data table for the project opens.
Find

?

2 Make the necessary changes by typing directly in the table, and by using the data table’s menu options. 3 From the data table menu, select File > Save to save your changes to the table.

Creating Vuser Scripts

Chapter 23, page 395

Part IX

Baan Vuser Scripts
Find

?

Creating Vuser Scripts

396

Baan Vuser Scripts
Creating Baan Vuser Scripts
24 Creating Baan Vuser Scripts

You use VuGen to develop Baan Vuser scripts. You record Baan sessions in WinRunner and run them in VuGen and LoadRunner. This chapter describes:

In

• • • • •

Getting Started with Baan Vusers Baan Functions Creating a Baan Vuser Script Understanding Baan Vuser Scripts Customizing Baan Vuser Scripts This chapter applies to Baan Vuser scripts only.
Find

?

Creating Vuser Scripts

Chapter 24, page 397

Baan Vuser Scripts • Creating Baan Vuser Scripts

About Developing Baan Vuser Scripts
In

The Baan type Vuser lets you test your Baan application and test your system under load. Vugen records your entire Baan session, including the login information to the Baan server. When you record actions, VuGen creates a script using Context Sensitive functions. Context Sensitive functions depict actions in the application under test in terms of GUI objects (such as windows, lists, and buttons). Each time you record an operation, a function is generated which describes the object selected and the action performed.

Find

?

Creating Vuser Scripts

Chapter 24, page 398

Baan Vuser Scripts • Creating Baan Vuser Scripts

Getting Started with Baan Vusers
Before recording a Baan Vuser script in VuGen, make sure that your machine can open a Baan session. To create a Baan Vuser script, follow these steps: 1 Create a Baan Vuser in VuGen. Create a new Baan Vuser template. 2 Record user actions. Record typical user actions. 3 Add transactions, rendezvous, comments, and messages. Use the Insert menu to add transactions, rendezvous, comments, and messages in order to enhance your script. 4 Add exception handling and set run-time properties. Add functions to handle exceptions, set think time, and specify timeout periods. Configure run-time settings for logging and iterations. 5 Perform parameterizationon your script. Replace recorded constants with parameters. 6 Save and run the Vuser script. Run the script from VuGen and view the execution log for run-time information.
Find

?

Creating Vuser Scripts

Chapter 24, page 399

Baan Vuser Scripts • Creating Baan Vuser Scripts

Baan Functions
In

Online Function Reference

This section lists the functions that VuGen generates while recording a Baan user session. You can also manually program any of the functions into your script. For more information about the Baan Vuser functions, refer to the LoadRunner Online Function Reference (available from the VuGen Help menu).

Baan Specific Functions
init_session close_session start_session set_exception set_think_time set_default_timeout Initializes a Baan session. Closes all Baan sessions and windows. Begins a specific Baan session. Specifies how to handle exceptions. Sets the think time range. Sets the default timeout.
Find

?

Button Object Functions
button_press button_set Activates a pushbutton. Sets the state of the specified radio or check button.

Creating Vuser Scripts

Chapter 24, page 400

Baan Vuser Scripts • Creating Baan Vuser Scripts

Edit Object Functions
edit_get_text edit_set edit_set_insert_pos edit_set_selection edit_type Returns the text in an edit object. Replaces the entire contents of an edit object. Places the cursor at the specified point. Selects text in an edit object. Types a string in an edit object.
Find

List Object Functions
list_activate_item list_select_item list_get_selected Activates items in a list. Selects a list item. Returns the currently selected item in a list.

?

Menu Object Functions
menu_select_item Selects an item from a menu.

Tab and Toolbar Functions
tab_select_item toolbar_button_press Selects a tab in the active window. Clicks a toolbar button.

Creating Vuser Scripts

Chapter 24, page 401

Baan Vuser Scripts • Creating Baan Vuser Scripts

Object Functions
obj_get_info obj_get_text obj_mouse_click obj_mouse_dbl_click obj_mouse_drag obj_type Returns the value of an object attribute. Reads text from an object. Clicks within an object. Double-clicks within an object. Drags the mouse within an object. Sends keyboard input to an object.
Find
In

Scroll Object Functions
scroll_drag_from_min scroll_line scroll_page Drags a scroll object to the specified distance from the minimum position. Scrolls the specified number of lines. Moves a scroll object the specified number of pages.

?

Static Object Functions
static_get_text Returns the contents of a static text object.

Creating Vuser Scripts

Chapter 24, page 402

Baan Vuser Scripts • Creating Baan Vuser Scripts

Synchronization Functions
obj_wait_info tbl_wait_selected_cell win_wait_info Waits for the value of an object attribute. Waits for the specified cell to appear in focus. Waits for the value of an window attribute.

Table Functions
tbl_activate_cell tbl_get_cell_data tbl_get_selected_cell tbl_press_zoom_button tbl_set_cell_data tbl_set_selected_cell Clicks Enter in the specified cell. Retrieves the contents of the specified cell from a table. Returns the cell currently in focus in a table. Clicks the table's zoom button. Sets the contents of a cell to the specified text in a table. Selects a table cell.
Find

?

Miscellaneous Functions
type wait Specifies keyboard input. Causes script execution to pause for a specified amount of time.

Creating Vuser Scripts

Chapter 24, page 403

Baan Vuser Scripts • Creating Baan Vuser Scripts Window Object Functions
set_window win_activate win_close win_get_text win_get_info win_max win_min win_mouse_click win_mouse_dbl_click win_mouse_drag win_move win_resize win_restore win_type Specifies the window that receives subsequent input. Activates a window. Closes a window. Reads text from a window. Returns the value of a window attribute. Maximizes a window to fill the entire screen. Minimizes a window to an icon. Clicks within a window. Double-clicks within a window. Drags the mouse within a window. Moves a window to a new absolute location. Resizes a window. Restores a window from an iconized or maximized state to its previous size. Send keyboard input to a window.
Find
In

?

You can further enhance your script with general LoadRunner functions such as lr_output_message and lr_rendezvous. For information on the LoadRunner functions, refer to the LoadRunner Online Function Reference.

Creating Vuser Scripts

Chapter 24, page 404

Baan Vuser Scripts • Creating Baan Vuser Scripts

Creating a Baan Vuser Script
After you create a new Baan Vuser script you begin recording user actions. To create a new Baan Vuser script: 1 Select the vuser_init section, in order to record the login procedure into that section. 2 Click the Record button and specify the location of the Baan application in the Start Recording dialog box.
Find

3 Switch to the Actions section and record typical user actions. 4 Insert Baan Vuser functions for think time, handling exceptions, and setting timeouts. set_think_time(MINTHINK,MAXTHINK); set_window ("Menu browser [User: bsp ] [812]", 10); menu_select_item ("File;Run Program..."); ...

?

Creating Vuser Scripts

Chapter 24, page 405

Baan Vuser Scripts • Creating Baan Vuser Scripts

5 Add transactions to the script. Choose Insert > Start Transaction to specify the beginning of a transaction, and Insert > End Transaction to specify the end of a transaction. lr_start_transaction("all_str_ses"); button_press0 ("F1_OK"); set_window ("tdpur4101m000 : Maintain Purchase Orders [812]", 300); lr_end_transaction("all_str_ses", LR_PASS); 6 Use the Insert menu to add rendezvous points, comments or messages to the script. 7 Parameterize your script. Click the sring (in quotation marks) that you want to replace with a parameter, perform a right-click and choose Replace with Parameter. For more information see Chapter 5, Defining Parameters. 8 Set the appropriate Run Time settings for iterations and logging. 9 Save the script and run it from VuGen.

In

Find

?

Creating Vuser Scripts

Chapter 24, page 406

Baan Vuser Scripts • Creating Baan Vuser Scripts

Understanding Baan Vuser Scripts
The recorded script shows all the actions performed by the user during recording. The Context Sensitive functions show all the actions performed on the application’s objects. In the following example, VuGen recorded the focus to a window, the selection of a menu item, and the clicking of a button. In addition, a transaction was marked to analyze the time it takes for the object Form1 to become in focus. set_window ("tccom1501m000 : Display Customers [550]", 30); menu_select_item ("Edit;Find... Ctrl+F"); set_window ("Display Customers - Find", 300); type ("100004"); lr_start_transaction("rses_find"); button_press0 ("F1_OK"); set_window ("tccom1501m000 : Display Customers [550]", 30); obj_wait_info("Form 1","focused","1",100); lr_end_transaction("rses_find", LR_PASS);

Find

?

Creating Vuser Scripts

Chapter 24, page 407

Baan Vuser Scripts • Creating Baan Vuser Scripts

You can add control flow logic to create loops within your script, instead of performing an iteration on the entire script. for (loop = 0 ; loop < READLOOP; loop++) { set_window ("tccom1501m000 : Display Customers [550]", 30); menu_select_item ("Edit;Find... Ctrl+F"); set_window ("Display Customers - Find", 300); type ("100004"); lr_start_transaction("rses_find"); button_press0 ("F1_OK"); set_window ("tccom1501m000 : Display Customers [550]", 30); obj_wait_info("Form 1","focused","1",100); lr_end_transaction("rses_find", LR_PASS); .... Note that you may need to parameterize statements, in order to avoid duplicating data to a database. For more information, see Chapter 5, Defining Parameters.

In

Find

?

Creating Vuser Scripts

Chapter 24, page 408

Baan Vuser Scripts • Creating Baan Vuser Scripts

Customizing Baan Vuser Scripts
You can view and edit your script from VuGen at any time. You can use the Baanspecific functions to customize the script execution in the following areas:

• • •

Think Time Exception Handling Timeouts
Find

?

Creating Vuser Scripts

Chapter 24, page 409

Baan Vuser Scripts • Creating Baan Vuser Scripts

Think Time
You can set the think time range for script execution. The think time emulates the work pattern of an actual user—the time the user pauses between actions. You set the beginning and end of a think time range using the set_think_time function. After each statement LoadRunner pauses for the duration of the think time, a random value within the specified range. If your desired think time range is constant throughout the script, you can define the beginning and end ranges as constants as shown in the example below. In the following example, the think time range was set from 500 to 1000 milliseconds: #define MINTHINK 500 #define MAXTHINK 1000 int LR_FUNC Actions(LR_PARAM p) { set_think_time(MINTHINK,MAXTHINK); set_window ("Menu browser [User: bsp ] [812]", 10); ...
In

Find

?

Creating Vuser Scripts

Chapter 24, page 410

Baan Vuser Scripts • Creating Baan Vuser Scripts

Handling Exceptions
You can instruct a Baan Vuser how to handle exceptions that occur during replay, such as a message or error windows. Using the set_exception function, you specify a function to be executed when the exception is encountered. In the following example, the set_exception function instructs the Vuser to execute the close function when the Print Sales Invoices window opens. The close function is defined earlier in the script. int close(char title[]) { win_close(title); } Actions( ) { set_exception("ttstps0014 : Print Sales Invoices",close); set_window ("Menu browser [User: bsp ] [812]", 10); menu_select_item ("File;Run Program..."); set_window ("ttdsk2080m000 : Run Program [812]", 10); type ("tdsls4101m000"); ...;

Find

?

Creating Vuser Scripts

Chapter 24, page 411

Baan Vuser Scripts • Creating Baan Vuser Scripts

Setting Timeouts
You can set the default timeout period for your functions. This timeout is applied to all functions using synchronization, such as obj_wait_info, win_wait_info, etc. In functions containing a parameter specifying a timeout period (such as set_window), the specified timeout overrides the default timeout. button_press ("F3_Continue"); win_wait_info("ttstpsplopen : Select Device [000]","displayed","0",10);
Find
In

?

Creating Vuser Scripts

Chapter 24, page 412

Part X

Java Vuser Scripts
Find

?

Creating Vuser Scripts

413

Java Vuser Scripts
Creating Java Vuser Scripts
25 Creating Java Vuser Scripts

You can use Java based applets and applications to test your system under load.
In

This chapter describes:

• • • • • •

Getting Started with Java Vusers Java Functions Creating a Java Vuser Script Understanding Java Vuser Scripts Replaying Java Vuser Scripts Understanding the GUI Map This chapter applies to Java Vuser scripts only.
Find

?

Creating Vuser Scripts

Chapter 25, page 414

Java Vuser Scripts • Creating Java Vuser Scripts

About Developing Java Vuser Scripts
Java is an object-oriented, portable, and secure multi-threaded language. It has become increasingly popular in environments such as the World Wide Web, client/server systems, and packaged applications. The Java type Vuser lets you test Java applets and applications on different platforms and test your system under load. When you record actions in a Java applet or application through VuGen, LoadRunner creates a script using Context Sensitive functions. Context Sensitive functions depict actions on the application under test in terms of GUI objects (such as windows, lists, and buttons). Each time you record an operation, a function is generated which describes the object selected and the action performed.

Find

?

Creating Vuser Scripts

Chapter 25, page 415

Java Vuser Scripts • Creating Java Vuser Scripts

Getting Started with Java Vusers
In

Before recording a Java Vuser script in VuGen, make sure that your environment variables (path and classpath) are properly set and that you have classes.zip or rt.jar in the classpath. Verify that you can start your Java applet or application in standalone mode, and that the message “Loading Mercury Support” appears. To create a Java Vuser script, follow these steps: 1 Ensure that the machine is configured properly. Make sure that WinRunner 5.0 is installed on the machine upon which you want to record, and that its arch directory is in the path. 2 Create a Java Vuser in VuGen. Create a new Java Vuser template. 3 Set the Java recording options. Prepare a batch file with Java Mercury support and configure the VuGen recording options for Java Vusers. 4 Record Vuser actions. Record typical Vuser actions. 5 Add transactions, rendezvous, comments, and messages. Use the Insert menu to add transactions, rendezvous, comments, and messages in order to enhance your script.
Find

?

Creating Vuser Scripts

Chapter 25, page 416

Java Vuser Scripts • Creating Java Vuser Scripts

6 Set run-time properties. Configure run-time settings for the applet url or application name, run mode, logging, think time, and iterations. 7 Enhance your script with parameters. Replace recorded constants with parameters. 8 Save and run the Vuser script. Run the script from VuGen and view the execution log for run-time information.
Find

?

Creating Vuser Scripts

Chapter 25, page 417

Java Vuser Scripts • Creating Java Vuser Scripts

Java Functions
Online Function Reference This section lists the functions that VuGen generates while recording a Java applet or application. You can also manually program any of the functions into your script. For more information about the Java Vuser functions, refer to the LoadRunner Online Function Reference (available from the VuGen Help menu).

In

AUT Functions
set_aut_var Sets a variable for the AUT (Application Under Test).

Find

?

Button Object Functions
button_press button_set Activates a pushbutton. Sets the state of the specified radio or check button.

Creating Vuser Scripts

Chapter 25, page 418

Java Vuser Scripts • Creating Java Vuser Scripts Edit Object Functions
edit_activate edit_delete_block edit_insert_block edit_replace edit_replace_block edit_set edit_set_selection edit_set_insert_pos Activates an edit object. Deletes a text block from an edit object. Inserts text in a multi-line edit object. Replaces the specified contents of a one-line edit object. Replaces a block of text in a multi-line edit object. Replaces the entire contents of an edit object. Selects text in an edit object. Places the cursor at the specified point.
Find

?

List Item Functions
list_activate_item list_collapse_item list_deselect_item list_deselect_range list_expand_item list_extend_item list_select_item list_select_range Activates items in a list. Hides items in a list. Deselects an item in a list. Deselects all items between two specified items in a list. Shows hidden items in a list. Adds an item to a list. Selects a list item. Selects a range of items from a list.

Creating Vuser Scripts

Chapter 25, page 419

Java Vuser Scripts • Creating Java Vuser Scripts

Menu Object Functions
menu_select_item Selects an item from a menu.
In

Object Functions
obj_exists obj_get_info obj_key_type obj_mouse_click obj_mouse_dbl_click obj_mouse_drag obj_wait_info Checks if an object is displayed. Returns an object attribute value Types input within an object. Clicks within an object. Double-clicks within an object. Drags the mouse within an object. Waits for the value of an object attribute.
Find

?

Scroll Object Functions
scroll_drag Drags a scroll to the specified position.

Tab Object Functions
tab_select_item Selects a tab in the active window.

Creating Vuser Scripts

Chapter 25, page 420

Java Vuser Scripts • Creating Java Vuser Scripts

Spin Object Functions
spin_max spin_min spin_next spin_prev spin_set Sets a spin to its maximum value. Sets a spin to its minimum value. Sets a spin to its next value. Sets a spin to its previous value. Sets a spin to the specified value.
Find

Table Functions
tbl_activate_cell tbl_activate_col tbl_activate_row tbl_deselect_col tbl_deselect_cols_range tbl_deselect_row tbl_deselect_rows_range tbl_extend_col Clicks Enter in the specified cell. Double-clicks on the specified column. Double-clicks on the specified row. Deselects the specified column in a table. Deselects the specified range of columns. Deselects the specified row in a table. Deselects the specified range of rows. Adds a column to previously selected columns.

?

Creating Vuser Scripts

Chapter 25, page 421

Java Vuser Scripts • Creating Java Vuser Scripts
tbl_extend_cols_range tbl_extend_row tbl_extend_rows_range tbl_select_cells_range tbl_select_col_header tbl_select_cols_range tbl_select_rows_range tbl_set_cell_data tbl_set_selected_cell tbl_set_selected_col tbl_set_selected_row Adds columns to previously selected columns. Adds a row to previously selected rows. Adds rows to previously selected rows. Selects a range of cells. Selects a column header. Selects a range of columns. Selects a range of rows. Sets the contents of a cell to the specified text in a table. Selects a table cell. Selects a table column. Selects the specified row in a table.
Find
In

?

Creating Vuser Scripts

Chapter 25, page 422

Java Vuser Scripts • Creating Java Vuser Scripts

Window Object Functions
set_window win_close win_exists win_max win_min win_move win_mouse_click win_mouse_dbl_click win_mouse_drag win_resize win_restore Specifies the window that receives subsequent input. Closes a window. Checks whether a window is displayed. Maximizes a window to fill the entire screen. Minimizes a window to an icon. Moves a window to a new absolute location. Clicks within a window. Double-clicks within a window. Drags the mouse within a window. Resizes a window. Restores a window from an iconized or maximized state to its previous size.
Find

?

You can further enhance your script with general LoadRunner functions such as lr_output_message and lr_rendezvous. For information on using these functions, see Understanding Java Vuser Scripts on page 426.

Creating Vuser Scripts

Chapter 25, page 423

Java Vuser Scripts • Creating Java Vuser Scripts

Creating a Java Vuser Script
In

1 Start VuGen and create a new Vuser script. Choose File > New, and select Java from the menu list. Click OK. VuGen creates a Java template. 2 Prepare a batch file with Java Mercury support. For Java applications, make sure that the first line of the batch file is: java -Dawt.toolkit=mercuty.awt.awt <application> For Java applets, make sure that the first line of the batch file is: java LoadApp <urt> 3 Before you begin recording, you can set the Java recording settings. 4 After you create a new Java Vuser script and configure the Java recording settings, you begin recording user actions within the applet or application. Specify the path to the batch file which you created in the Program To Record field of the Start Recording dialog box. For more information about recording, see Chapter 3, Recording with VuGen.
Find

?

Creating Vuser Scripts

Chapter 25, page 424

Java Vuser Scripts • Creating Java Vuser Scripts

5 Add transactions to the script. Choose Insert > Start Transaction to specify the beginning of a transaction, and Insert > End Transaction to specify the end of a transaction. It is recommended to mark the first set_window statement as a transaction to verify that the applet or application loaded correctly. lr_start_transaction("first_win"); set_window("FIRST_WINDOW"); button_set("RadioCheckbox_12",ON); lr_end_transaction("first_win", LR_PASS); 6 Use the Insert menu to add rendezvous points, comments, or messages to the script. 7 Enhance your script with synchronization points (win_exists, obj_exists, obj_wait_info), and add lr_think_time statements to emulate user think time. 8 Parameterize your script. Click the constant you want to replace with a parameter, perform a right-click and choose Replace with Parameter. For more information see Chapter 5, Defining Parameters. 9 Set the appropriate Run Time settings for applet url or application name, run mode, think time, iterations and logging. 10 Save the script and test it as a standalone script from VuGen.

Find

?

Creating Vuser Scripts

Chapter 25, page 425

Java Vuser Scripts • Creating Java Vuser Scripts

Understanding Java Vuser Scripts
In

When you create a Java Vuser script, VuGen records all of the context sensitive actions you performed in your script. The recorded functions reflect the actions you performed on your applet or application’s objects. In the following example, the user focused on the periodic.html window, set several buttons, selected an item from a list, and dragged a scrollbar. Actions() { set_window("periodic.html", 3); button_set("Charge", ON); lr_think_time(1); button_set("Economy", ON); lr_think_time(2); list_select_item("Fly To:", "Barneveld"); scroll_drag("Seat", 65); ... You can modify the functions in your script, or add additional functions to enhance the script. For a list of the available functions, see the LoadRunner Online Function Reference.
Find

?

Creating Vuser Scripts

Chapter 25, page 426

Java Vuser Scripts • Creating Java Vuser Scripts

Replaying Java Vuser Scripts
Before you begin replay, you must set the Java run time settings to indicate the applet or application and the mode of replay. 1 Select > Vuser > Run Time Settings to open the Run-Time settings dialog box. Click the Java tab.

Find

?

2 Select Applet or Application in the Java Type section, depending on what you want to replay. 3 In the Name box, enter the URL or full path of the applet or application. For applications, do not include the .class extension, and make sure that the application exists in the classpath.

Creating Vuser Scripts

Chapter 25, page 427

Java Vuser Scripts • Creating Java Vuser Scripts

4 In the Parameters box, enter any optional parameters used by the application. 5 Select a Run Mode: Hidden runs the applet or application in the background. Debug writes all applet output to a file called javalog.# in the user directory. Select No Archives if you usually run your applet or application in the JDK noarchives mode. 6 Click OK to accept the settings and close the dialog box.
Find
In

?

Creating Vuser Scripts

Chapter 25, page 428

Java Vuser Scripts • Creating Java Vuser Scripts

Understanding the GUI Map
When you record your applet or application, VuGen creates a GUI (Graphical User Interface) map file which includes details about the objects within the applet or application. For each object, VuGen lists the object’s logical name, its class, and some of its attributes (e.g., label or attached_text). To view the GUI file, select the map.gui in the Data Files section in VuGen.
Find

?

Creating Vuser Scripts

Chapter 25, page 429

Java Vuser Scripts • Creating Java Vuser Scripts

In the following example, the GUI map lists a window, radio buttons, a list item, and a scroll object. ... } "periodic.html".Charge: { class: radio_button, label: Charge } "periodic.html".Economy: { class: radio_button, label: Economy } "periodic.html"."Fly To:": { class: list, attached_text: "Fly To:" } "periodic.html".Seat: { class: scroll, attached_text: Seat

In

Find

?

Creating Vuser Scripts

Chapter 25, page 430

Part XI

GUI Vuser Scripts
Find

?

Creating Vuser Scripts

431

GUI Vuser Scripts
Developing GUI Vuser Scripts
26 Developing GUI Vuser Scripts

GUI Vusers operate graphical user interface (GUI) applications in both Windowsbased and UNIX-based environments. You create GUI Vuser scripts by using WinRunner and XRunner, Mercury Interactive’s automated testing tools for GUI applications. This chapter describes:

In

• • • • • • • • • •

Introducing GUI Vusers Understanding GUI Vuser Technology Getting Started with GUI Vusers Using WinRunner and VXRunner to Create GUI Vuser Scripts Measuring Server Performance: Transactions Generating Heavy User Load: Rendezvous Points Understanding GUI Vuser Scripts Using LoadRunner Functions in GUI Vuser Scripts Sending Messages to the Controller Obtaining Information about Vusers and Hosts This chapter applies to GUI (Windows) and GUI (UNIX) Vuser scripts only.

Find

?

Creating Vuser Scripts

Chapter 26, page 432

GUI Vuser Scripts • Developing GUI Vuser Scripts

About Developing GUI Vuser Scripts
GUI Vusers enable you to measure and monitor end-to-end user response times while your client/server system is under load. A GUI Vuser emulates the complete environment of a human user. For example, a human user sits at a machine, operates applications using the keyboard and the mouse, and reads information on the machine’s monitor. Similarly, a GUI Vuser runs on its own machine and operates applications. A Vuser can be programmed to read and act on information that appears on its machine’s display.
Find
GUI Vuser Scripts

The actions of each GUI Vuser are described in a GUI Vuser script. You use WinRunner to create Windows-based GUI Vuser scripts. You use VXRunner to create UNIX-based GUI Vuser scripts. VXRunner and WinRunner are automated GUI testing tools that allow you to create, edit, and debug GUI Vuser scripts. GUI Vuser scripts are created using Mercury Interactive’s Test Script Language (TSL). TSL is a C-like programming language that is high-level and easy to use. It combines the power and flexibility of a conventional programming language with functions designed for testing client/server systems. After recording a basic Vuser script, you insert statements into the script that measure the performance of the server (transactions), and ensure that specific user load is emulated (rendezvous points). For more details about GUI Vusers, refer to your LoadRunner Controller User’s Guide.

?

Creating Vuser Scripts

Chapter 26, page 433

GUI Vuser Scripts • Developing GUI Vuser Scripts

Introducing GUI Vusers
In

Suppose that you have a bank server that services many automatic teller machines (ATMs). You could create a GUI Vuser script that:

• • • • • • •

opens the ATM application enters an account number enters the amount of cash to be withdrawn withdraws cash from the account checks the balance of the account closes the ATM application repeats the process You monitor and manage GUI Vusers using a LoadRunner Controller only. For instance, you can use the Controller to run, pause, or view Vusers, and to monitor scenario status.
Find

?

Creating Vuser Scripts

Chapter 26, page 434

GUI Vuser Scripts • Developing GUI Vuser Scripts

Understanding GUI Vuser Technology
There are two types of GUI Vusers: Windows-based and UNIX-based. This section outlines how to create Vuser scripts for both types of Vusers. For details on creating Windows-based Vuser scripts, refer to the WinRunner User’s Guide. For details on creating UNIX-based Vuser scripts, refer to the Creating GUI Virtual User Scripts (UNIX) guide.

Note: You cannot use VuGen to run a GUI Vuser script. You use the LoadRunner Controller to run a GUI Vuser script as part of a scenario; you use WinRunner or XRunner to run a GUI Vuser script in stand-alone mode.

Find

?

Creating Vuser Scripts

Chapter 26, page 435

GUI Vuser Scripts • Developing GUI Vuser Scripts

GUI Vusers measure real end-to-end response times. End-to-end response times represent the total time that a user waits for a response after submitting a request. End-to-end response times include GUI response times as well as network and server response times.

In

End-to-End response time (including GUI)

Network and Server response times

Find

?
GUI Server

UI

Logic

API

Client

Network

Server

Creating Vuser Scripts

Chapter 26, page 436

GUI Vuser Scripts • Developing GUI Vuser Scripts

Windows-Based GUI Vusers
A Windows-based GUI Vuser consists of a copy of WinRunner—Mercury Interactive’s GUI testing tool for Windows-based applications—and a GUI-based application.

Input

Find

?
GUI-based application WinRunner A GUI Vuser

WinRunner replaces the human user and operates the application. For example, WinRunner can select a command from a menu, click an icon, or type text. The application that WinRunner operates can be any application that accesses a server.

Creating Vuser Scripts

Chapter 26, page 437

GUI Vuser Scripts • Developing GUI Vuser Scripts

UNIX-Based GUI Vusers
A UNIX-based Vuser emulates the complete UNIX/X environment of a real user. The actual environment for a human user would consist of:
In

• • •

an X Server a client application a window manager
Find

Input Input Output

?

Human User

X Server Client Application The UNIX environment of a human user.

Creating Vuser Scripts

Chapter 26, page 438

GUI Vuser Scripts • Developing GUI Vuser Scripts

The virtual user environment consists of:

• • • •

VXRunner, an enhanced XRunner, which operates the client application a “virtual X Server,” which emulates an X server the client application a window manager (optional)

Find
Input Input Output

?
Client Application

VXRunner Virtual X Server

A LoadRunner GUI Vuser

Creating Vuser Scripts

Chapter 26, page 439

GUI Vuser Scripts • Developing GUI Vuser Scripts

In the virtual user environment, the person using the client application is replaced by VXRunner, which runs a Vuser script. VXRunner has no user interface; it is controlled remotely from LoadRunner. The Virtual X Server is the server on which the client application is activated. The Virtual X Server is an optimized X server that offers a background mode of operation. In this mode, the Virtual X server receives input from VXRunner only, and none of its X clients appear on the display. Mercury Interactive’s X server technology enables you to run several Vusers simultaneously on a single machine—independent from, and without disturbing one another—while leaving your current display, keyboard and mouse free for regular work. Any time you wish to view a Vuser, LoadRunner can display it on your local host, regardless of the machine on which the Vuser is actually running.

In

Find

?

Creating Vuser Scripts

Chapter 26, page 440

GUI Vuser Scripts • Developing GUI Vuser Scripts

Getting Started with GUI Vusers
This section outlines how to create a GUI Vuser script and then integrate it into a LoadRunner scenario. 1 Create a GUI Vuser script using WinRunner or VXRunner. Use WinRunner or VXRunner to record your keyboard and mouse operations on a GUI based application. For details, refer to the WinRunner User’s Guide or the Creating GUI Virtual User Scripts (UNIX) guide. 2 Program additional TSL statements into the script. Enhance the Vuser script by using loops and other control-flow structures. For details about editing scripts, refer to the WinRunner User’s Guide or the Creating GUI Virtual User Scripts (UNIX) guide. For details about TSL, refer to the TSL Online Reference. Insert transactions to measure system performance. Measure the performance of the server by inserting transactions into your Vuser scripts. Insert Rendezvous points to generate intense user load on the server. Rendezvous points instruct multiple Vusers to perform tasks at exactly the same time.
Find

?

Creating Vuser Scripts

Chapter 26, page 441

GUI Vuser Scripts • Developing GUI Vuser Scripts

3 Run the Vuser script. Run the script to make sure it works correctly. If necessary, debug the script. For more information, refer to the WinRunner User’s Guide or the Creating GUI Virtual User Scripts (UNIX) guide. After you create a GUI Vuser script, you integrate it into a LoadRunner scenario on either a Windows or UNIX platform. For more information on integrating Vuser scripts in a scenario, refer to your LoadRunner Controller User’s Guide.
Find
In

?

Creating Vuser Scripts

Chapter 26, page 442

GUI Vuser Scripts • Developing GUI Vuser Scripts

Using WinRunner and VXRunner to Create GUI Vuser Scripts
You use WinRunner to create Windows-based GUI Vuser scripts, and VXRunner to create UNIX-based GUI Vuser scripts. After recording a basic Vuser script using WinRunner or VXRunner, you manually insert:

• •

transaction statements into the script to measure the performance of the server. For details, see Measuring Server Performance: Transactions on page 445. rendezvous statements into the script to ensure that specific user load is emulated. For details, see Generating Heavy User Load: Rendezvous Points on page 447.
Find

Creating Windows-based GUI Vuser Scripts
WinRunner is a complete development environment for creating, editing, and debugging Windows-based GUI Vuser scripts. Using WinRunner, you record the actions of a human user on an application. For example, you could record a user entering an account number into an ATM and then withdrawing fifty dollars. These actions are automatically transcribed into a script in Mercury Interactive’s Test Script Language (TSL).

?

Creating UNIX-based GUI Vuser Scripts
VXRunner is a complete development environment for creating, editing, and debugging UNIX-based GUI Vuser scripts. VXRunner incorporates a Virtual User Development Environment (VUDE). The VUDE is a completely independent environment that runs in a separate window on your display, and provides all of the benefits offered by Mercury Interactive’s Virtual X Server. In this way you can develop Vuser scripts in the same environment in which you run them.

Creating Vuser Scripts

Chapter 26, page 443

GUI Vuser Scripts • Developing GUI Vuser Scripts

In

Find

?

The Virtual User Development Environment contains VXRunner, an enhanced version of XRunner, Mercury Interactive’s single-user testing tool. In addition to all of the basic test development tools such as recording, programming, and debugging, VXRunner also supports functions designed especially for multi-user testing.

Creating Vuser Scripts

Chapter 26, page 444

GUI Vuser Scripts • Developing GUI Vuser Scripts

Measuring Server Performance: Transactions
transactions

You define transactions to measure the performance of the server. Each transaction measures the time it takes for the server to respond to specified Vuser requests. These requests can be simple tasks such as waiting for a response for a single query, or complex tasks, such as submitting several queries and generating a report. To measure a transaction, you insert LoadRunner functions to mark the beginning and end of a task. Within a script, you can mark an unlimited number of transactions for analysis, each with a different name, and starting and ending in different places. During scenario execution, LoadRunner measures the time that it takes to perform each transaction. For instance, you could define a transaction to measure the time it takes for a bank server to process a Vuser’s request to view the balance of an account. After the scenario run, you analyze the server’s performance per transaction using LoadRunner’s graphs and reports. Once you have defined a transaction, you use it to measure how the server performs under different loads. For example, you can measure how the server performs under the load of a single user, a hundred users, or a thousand users. While the scenario runs, LoadRunner accumulates performance data for the transactions. Later, you use this information to generate performance analysis reports and graphs.

Find

?

Creating Vuser Scripts

Chapter 26, page 445

GUI Vuser Scripts • Developing GUI Vuser Scripts

To mark the start of a LoadRunner transaction:

• •

Insert a start_transaction statement into the Vuser script. To mark the end of a transaction: Insert a end_transaction statement into the Vuser script. For the syntax of the start_transaction and end_transaction functions, refer to the TSL Online Reference (available from the WinRunner Help menu) or the Creating GUI Virtual User Scripts (UNIX) guide.

In

Find

?

Creating Vuser Scripts

Chapter 26, page 446

GUI Vuser Scripts • Developing GUI Vuser Scripts

Generating Heavy User Load: Rendezvous Points
rendezvous points

In order to emulate heavy user load and measure server performance, you synchronize Vusers to perform a query at exactly the same moment. You ensure that multiple Vusers act simultaneously by creating a meeting place, known as a rendezvous point. When a Vuser arrives at the rendezvous point, it is held by the Controller until all Vusers participating in the rendezvous arrive. When the rendezvous conditions are met, the Vusers are released by the Controller. You designate the meeting place by inserting a rendezvous point into your Vuser script. When a Vuser executes a script and encounters the rendezvous point, script execution is paused and the Vuser waits for permission from the Controller to continue. After the Vuser is released from the rendezvous, it performs the next task in the script. For example, to generate peak load on a bank server, you could insert rendezvous points into the Vuser scripts to instruct all the Vusers to simultaneously deposit cash into their accounts. To insert a rendezvous point:
Find

?

Insert a rendezvous statement into the Vuser script. For the syntax of the rendezvous function, refer to the TSL Online Reference (available from the WinRunner Help menu) or the Creating GUI Virtual User Scripts (UNIX) guide.

Creating Vuser Scripts

Chapter 26, page 447

GUI Vuser Scripts • Developing GUI Vuser Scripts

Understanding GUI Vuser Scripts
In

GUI Vuser scripts are written in TSL—Mercury Interactive’s Test Script Language. TSL is a C-like programming language that is high-level and easy to use. It combines the power and flexibility of a conventional programming language with functions designed specifically for testing. For additional information about TSL, refer to the TSL Online Reference. This section presents a simple Vuser script, created in WinRunner. Note that this script will not work on a Unix machine. The script starts an ATM application (mratm.exe), enters an account number, deposits fifty dollars, and then closes the application. The first section of the script starts an application and moves it to a new location on the screen. The system function starts the ATM application. The win_move function moves the ATM application to a specified location on the screen. # Initialize and invoke ATM client application. system ( "mratm.exe" ); win_move ( "Mercury ATM", 325, 0 );

Find

?

Creating Vuser Scripts

Chapter 26, page 448

GUI Vuser Scripts • Developing GUI Vuser Scripts
Next, the Vuser enters an account number into the ATM. The set_window function activates the ATM window. The edit_set function instructs the Vuser to enter the account number into the ATM’s account field. # Type in account number in the Account field. account = 100; set_window ( "Mercury ATM" ); edit_set ( "Account", account ); After entering the account number, the Vuser enters the amount it wants to deposit and presses the deposit button. The edit_set function enters the amount to be deposited in the amount field. The button_press function tells the Vuser to press the ATM’s Deposit button. # Enter the amount to be deposited in the amount field. amount = 50; set_window ( "Mercury ATM" ); edit_set ( "Amount", amount ); # Press the Deposit button. button_press ( "Deposit" ); The final section of the test tells the Vuser to close the ATM application. The menu_select_item function selects the Exit command from the File menu. # Close client application. menu_select_item ( "File; Exit" );

Find

?

Creating Vuser Scripts

Chapter 26, page 449

GUI Vuser Scripts • Developing GUI Vuser Scripts

Using LoadRunner Functions in GUI Vuser Scripts
In

This section lists the LoadRunner functions that you can use to enhance your GUI Vuser scripts. For syntax and examples of the functions, refer to the sections that follow, the TSL Online Reference (available from the WinRunner Help menu) or the Creating GUI Virtual User Scripts (UNIX) guide. declare_rendezvous declare_transaction end_transaction error_message get_host_name get_master_host_name lr_whoami output_message rendezvous start_transaction user_data_point Declares a rendezvous. Declares a transaction. Marks the end of a transaction for performance analysis. Sends an error message to the Controller. Returns the name of a host. Returns the name of the Controller host. Returns information about the Vuser executing the script. Sends a message to the Controller. Sets a rendezvous point in a Vuser script. Marks the beginning of a transaction for performance analysis. Records a user-defined data sample.
Find

?

Creating Vuser Scripts

Chapter 26, page 450

GUI Vuser Scripts • Developing GUI Vuser Scripts

Sending Messages to the Controller
When you run a scenario, the Controller’s Output window displays valuable information about script execution. In addition to the messages automatically sent by WinRunner and VXRunner, you can include statements in each script that send error and notification messages to the Controller. For example, you could insert a message that displays the current state of an application. After scenario execution, you can save these messages to a file. The error_message function sends an error message to the Controller’s Output window. The syntax of this function is: error_message ( message ); where message is a text string. In the following example, the Vuser script sends a message when a fatal error occurs during script execution. if ( fatal_error < 0 ){ mess = sprintf ( "fatal error - Exiting." ); error_message ( mess ); texit (1); }
Find

?

Creating Vuser Scripts

Chapter 26, page 451

GUI Vuser Scripts • Developing GUI Vuser Scripts

The output_message function is used to send a special notification that is not an error message. The syntax of this function is: output_message ( message ); where message is a text string. For the further information on the error_message and the output_message functions, refer to the TSL Online Reference (available from the WinRunner Help menu) or the Creating GUI Virtual User Scripts (UNIX) guide.

In

Find

?

Creating Vuser Scripts

Chapter 26, page 452

GUI Vuser Scripts • Developing GUI Vuser Scripts

Obtaining Information about Vusers and Hosts
During scenario execution, you can obtain the identity of:

• • •

the Vusers performing a task at a particular moment in the scenario the host executing a script the machine running the Controller For example, you could program statements into a Vuser script to return the ID of each active Vuser currently using an application, and print this information to a file. The following functions obtain information about Vusers and hosts: lr_whoami get_host_name get_master_host_name returns the name of a Vuser and the Vuser group it belongs to. returns the name of the machine executing the script. returns the name of the machine running the Controller.

Find

?

Creating Vuser Scripts

Chapter 26, page 453

GUI Vuser Scripts • Developing GUI Vuser Scripts

In the following example, the get_host_name function returns the name of the host currently running the script. The print statement saves the information to a file. my_host_name = get_host_name(); print( "my local host name is:" & my_host_name ) > vuser_file; For more information about these functions, refer to the TSL Online Reference (available from the WinRunner Help menu) or the Creating GUI Virtual User Scripts (UNIX) guide.

In

Find

?

Creating Vuser Scripts

Chapter 26, page 454

0

Appendixes
Find

?

Creating Vuser Scripts

455

Configuring VuGen
A
Configuring VuGen

By setting variation the appropriate variables in vugen.ini, you can customize the code generated by VuGen for database Vuser scripts. The vugen.ini file is located in your Windows directory. The customization applies to the following areas:

• • • • • • • • • •

Automatic Transactions Think Time
Find

C Compiler Function Splitting Line Formatting Progress Bar Settings Script Comments Error Handling Translation Table Excluding Sockets All of the customization settings are stored in the [LRDCodeGeneration] section of the vugen.ini file unless otherwise stated. If the specified section does not exist in the vugen.ini file, you need to add it manually. For example, you could add a line to start the code generation section: [LRDCodeGeneration].

?

Creating Vuser Scripts

456

Configuring VuGen

Automatic Transactions
You can instruct VuGen to insert a transaction around every lrd_exec and lrd_fetch function that it inserts into a script. AutoLrExecTrans=OFF/ON AutoLrFetchTrans=OFF/ON When these options are set to ON, VuGen inserts an lr_start_transaction and lr_end_transaction statement around every lrd_exec or lrd_fetch function. The default value is OFF.

Find

?

Think Time
VuGen automatically records the operator’s think time. You can set a threshold level, below which the recorded think time will be ignored. LrThinkTimeThreshold=5 If the recorded think time exceeds the threshold level, VuGen places an lr_think_time statement before LRD functions. If the recorded think time is below the threshold level, an lr_think_time statement is not generated. The default value is five seconds.

Creating Vuser Scripts

457

Configuring VuGen

C Compiler
VuGen generates a script with LRD functions. You can compile the script using VuGen’s code interpreter, or a standard C compiler. CompileC=NO/YES To compile the script using a standard compiler, set CompileC to YES. The default value is NO.
Find

Function Splitting
To optimize compilation time, VuGen allows you to set the script size. If the script’s Action section exceeds the maximum size, the function is split into several sections, with no section greater than MaxFunctionLines. MaxFunctionLines=500 (a positive integer value) GenActionsContProto=NO/YES The default value is five hundred lines. VuGen generates a function prototype in vdf.h for each of the "continued" functions when the GenActionsContProto variable is set to YES. You do not have to set this variable when using the VuGen interpreter. The default value for GenActionsContProto is NO.

?

Creating Vuser Scripts

458

Configuring VuGen

Line Formatting
You can specify the maximum length of a line in a generated Vuser script. MaxLineLen=80 /*(a positive integer value)*/ The available range for MaxLineLen is 60 to 255. The default value is 80.

Progress Bar Settings
You can set the rate at which the code generation progress bar is updated. ProgressBarGranularity=100 /*(a positive integer value)*/ The lower the specified granularity, the higher the update frequency. The default value is 100.
Find

?

Script Comments
You can instruct VuGen to insert comments into recorded scripts, describing the lrd_stmt option values. GenStmtOptionsComments=NO/YES The default value is NO.

Creating Vuser Scripts

459

Configuring VuGen

Error Handling
You can instruct VuGen to ignore database errors that occur while recording by setting the following entry to YES: IgnoreApplicationErrors=NO/YES By default, this entry is set to NO. Therefore, if database errors occur during execution, the script execution would be terminated.
Find

Translation Table
The Translation Table setting lets you set the format for recording sessions. This applies to users running on mainframe machines or AS/400 servers. Both the server and client machines determine the format of the data from translation tables installed on your system. In the following example the names of the translation table files are 002501b5.tbl and 01b50025.tbl. [TranslationTable] ServerFormat=0025 ClientFormat=01b5 The translation tables are located in the ebcdic directory under the LoadRunner installation directory. If your system uses different transaltion tables, copy them to the ebcdic directory.

?

Creating Vuser Scripts

460

Configuring VuGen

Excluding Sockets
For WinSock Vusers, VuGen supports the Exclude Socket feature, allowing you to exclude a specific socket from your recording session. To exclude all actions on a socket from your script, you specify the socket address in the ExcludeSock section. The available formats are:
Value host:port host :port *:port Meaning Exclude only the specified port on the specified host. Exclude all ports for the specifed host Exclude the specified port number on the local host. Exclude the specified port number on all hosts. Find

?

You can exclude multiple hosts and ports. For each subsequent excluded socket, increment the index number of the SocketAddress parameter. To exclude the specifeid socket actions from the recording log file, ws.log, set the LogExcludeMsgFlag to no. [ExcludeSock] SocketAddress1=frodo:23 SocketAddress2=:80 SocketAddress3=tears LogExcludeMsgFlag=no

Creating Vuser Scripts

461

Configuring VuGen

If you omit this flag, or if you set it to yes, VuGen logs the actions of the socket in the ws.log file, but does not include it in the Vuser script. The actions of the excluded socket are preceded by “excluded” in the log file. Exclude : /* recv(): 15 bytes were received from socket 116 using flags 0 */

Find

?

Creating Vuser Scripts

462

Calling External Functions

B
Calling External Functions

When working with VuGen, you can call functions that are defined in external DLLs. By calling external functions from your script, you can reduce the memory footprint of your script and the overall run-time. To call the external function, you load the DLL in which the function is defined. You can load a DLL:
Find

• •

locally—for one script, using the lr_load_dll function globally—for all scripts, by adding statements to the vugen.dat file

?

Creating Vuser Scripts

463

Calling External Functions

Loading a DLL—Locally
You use the lr_load_dll function to load the DLL in your Vuser script. Once the DLL is loaded, you can call any function defined within the DLL, without having to declare it in your script. To call a function defined in a DLL: 1 Use the lr_load_dll function to load the DLL at the beginning of your script. Place the statement at the beginning of the vuser_init section. lr_load_dll replaces the ci_load_dll function. Use the following syntax: lr_load_dll(library_name); Note that for UNIX platforms, DLLs are known as shared libraries. The extension of the libraries is platform dependent. 2 Call the function defined in the DLL in the appropriate place within your script.

Find

?

Creating Vuser Scripts

464

Calling External Functions
In the following example, the insert_vals function, defined in orac1.dll, is called, after the creation of the Test_1 table. int LR_FUNC Actions(LR_PARAM p) { lr_load_dll("orac1.dll"); lrd_stmt(Csr1, "create table Test_1 (name char(15), id integer)\n", -1, 1 /*Deferred*/, 1 /*Dflt Ora Ver*/, 0); lrd_exec(Csr1, 0, 0, 0, 0, 0); /* Call the insert_vals function to insert values into the table. */ insert_vals(); lrd_stmt(Csr1, "select * from Test_1\n", -1, 1 /*Deferred*/, 1 /*Dflt Ora Ver*/, 0); lrd_bind_col(Csr1, 1, &NAME_D11, 0, 0); lrd_bind_col(Csr1, 2, &ID_D12, 0, 0); lrd_exec(Csr1, 0, 0, 0, 0, 0); lrd_fetch(Csr1, -4, 15, 0, PrintRow14, 0); ...

Find

?

Note: You can specify a full path for the DLL. If you do not specify a path, lr_load_library searches for the DLL using the standard sequence used by the C++ function, LoadLibrary on Windows platforms. On UNIX platforms you can set the LD_LIBRARY_PATH environment variable (or the platform equivalent). The lr_load_dll function uses the same search rules as dlopen. For more information, see the man pages for dlopen or its equivalent.

Creating Vuser Scripts

465

Calling External Functions

Loading a DLL—Globally
You can load a DLL globally, to make its functions available to all your Vuser scripts. Once the DLL is loaded, you can call any function defined within the DLL, without having to declare it in your script. To call a function defined in a DLL: 1 Add a list of the DLLs you want to load to the appropriate section of the vugen.dat file, located in the LoadRunner/dat directory. Use the following syntax:
Find

PLATFORM_DLLS=my_dll1.dll, my_dll2.dll, ...

?

Creating Vuser Scripts

466

Calling External Functions

For example, to load DLLs for Winsocket Vusers on an NT platform, add the following statement to the vugen.dat file: [winsock] DLL=insp_gen.dll CFG_TAB_DLL= ExtraSectionsExt=.ws 32BitRecord=TRUE 16BitRecord=TRUE Insp32DLL=vugsck32.dll Insp16DLL=vugsock.dll TemplateDir=winsock WIN16=wsdrv16.exe WINNT=wsdrv32.exe WIN95=wsdrv32.exe WINNT_DLLS=user_dll1.dll, user_dll2.dll, ... 2 Call the function defined in the DLL in the appropriate place within your script.

Find

?

Creating Vuser Scripts

467

Appendixes
Programming Scripts on UNIX Platforms

C
Programming Scripts on UNIX Platforms

In

LoadRunner users on UNIX platforms can create Vuser scripts through programming. To create a script through programming, you use a LoadRunner template. This appendix describes:
Find

• • • • •

Generating Templates Programming Vuser Actions into a Script Configuring Vuser Run-Time Settings Defining Transactions and Rendezvous Points Compiling Scripts

?

Creating Vuser Scripts

Chapter C, page 468

Appendixes • Programming Scripts on UNIX Platforms

About Programming Vuser Scripts to Run on UNIX Platforms
There are two ways to create Vuser scripts that run on UNIX platforms: by using VuGen, or by programming.

VuGen

You can use VuGen to create Vuser scripts that run on UNIX platforms. You record your application in a Windows environment and run it in UNIX—recording is not supported on UNIX (excluding UNIX RTE and GUI Vusers). Users working in UNIX-only environments can program Vuser scripts. Scripts can be programmed in C or C++ and they must be compiled into a dynamic library.
Find

programming

?

This appendix describes how to develop a Vuser script by programming. To create a script through programming, you can use a LoadRunner template as a basis for a larger Vuser script. The template provides:

• • •

correct program structure LoadRunner API calls source code and makefiles for creating a dynamic library After creating a basic script from a template, you can enhance the script to provide run-time Vuser information and statistics. For more information, see Chapter 4, Enhancing Vuser Scripts.

Creating Vuser Scripts

Chapter C, page 469

Appendixes • Programming Scripts on UNIX Platforms

Generating Templates
LoadRunner includes a utility that copies a template into your working directory. The utility is called mkdbtest, and is located in $M_LROOT/bin. You run the utility by typing: mkdbtest name When you run mkdbtest, it creates a directory called name, which contains the template file, name.c. For example, if you type
Find
In

mkdbtest test1

?

mkdbtest creates a directory called test1, which contains the template script, test1.c.
When you run the mkdbtest utility, a directory is created containing four files test.c , test.usr, test.cfg and Makefile, where test is the test name you specified for mkdbtest.

test.c test.usr Template Files test.cfg
makefile

Creating Vuser Scripts

Chapter C, page 470

Appendixes • Programming Scripts on UNIX Platforms

Programming Vuser Actions into a Script
The Vuser script files, test.c, test.usr, and test.cfg, can be customized for your Vuser. You program the actual Vuser actions into the test.c file. This file has the required structure for a programmed Vuser script. The Vuser script contains three sections: vuser_init, Actions, and vuser_end.
Find

?

Creating Vuser Scripts

Chapter C, page 471

Appendixes • Programming Scripts on UNIX Platforms

Note that the template defines extern C for users of C++. This definition is required for all C++ users, to ensure that none of the exported functions are inadvertantly modified. #include “lrun.h” #if defined(__cplusplus) || defined(cplusplus) extern “C” { #endif int LR_FUNC vuser_init(LR_PARAM p) { lr_message(“vuser_init done\n”); return 0; } int Actions(LR_PARAM p) { lr_message(“Actions done\n”); return 0; } int vuser_end(LR_PARAM p) { lr_message(“vuser_end done\n”); return 0 ; } #if defined(__cplusplus) || defined(cplusplus) } #endif

In

Find

?

Creating Vuser Scripts

Chapter C, page 472

Appendixes • Programming Scripts on UNIX Platforms

You program Vuser actions directly into the empty script, before the lr_message function of each section. The vuser_init section is executed first, during initialization. In this section, include the connection information and the logon procedure. The vuser_init section is only performed once each time you run the script. The Actions section is executed after the initialization. In this section, include the actual operations performed by the Vuser. You can set up the Vuser to repeat the Actions section (in the test.cfg file). The vuser_end section is executed last, after the all of the Vuser’s actions. In this section, include the clean-up and logoff procedures. The vuser_end section is only performed once each time you run the script.

Find

?

Note: LoadRunner controls the Vuser by sending SIGHUP SIGUSR1, and , SIGUSR2 UNIX signals. Do not use these signals in your Vuser programs.

Creating Vuser Scripts

Chapter C, page 473

Appendixes • Programming Scripts on UNIX Platforms

Configuring Vuser Run-Time Settings
In

To configure Vuser run-time settings, you modify the test.cfg file created with the template. These run-time settings correspond to VuGen’s run-time settings. ( see Configuring Run-Time Settings on page 86.) The test.cfg contains four sections General, Think Time, Iterations, and Log.

General Options
There is one General options for Unix Vuser scripts:
Find

ContinueOnError instructs the Vuser to continue when an error occurs. To activate the option, specify 1. To disable the option, specify 0. In the following example, the Vuser will continue on an error. [General] ContinueOnError=1

?

Creating Vuser Scripts

Chapter C, page 474

Appendixes • Programming Scripts on UNIX Platforms Think Time Options
You can set the think time options to control how the Vuser uses think time during script execution. [ThinkTime] Options=NOTHINK Factor=1 LimitFlag=0 Limit=1 You set the parameters Options, Factor, LimitFlag, and Limit parameters according to the following chart.
Option Ignore think time Use recorded think time Multiply the recorded think time by... Limit the recorded think time to... Options NOTHINK RECORDE D Factor N/A 1.000 LimitFlag N/A N/A Limit N/A N/A Find

?

MULTIPLY

number

N/A

N/A

RECORDE D/ MULTIPLY

number (for MULTIPLY)

1

value in seconds

Creating Vuser Scripts

Chapter C, page 475

Appendixes • Programming Scripts on UNIX Platforms

To limit the think time used during execution, set the LimitFlag variable to 1 and specify the think time Limit, in seconds. In the following example, the settings tell the Vuser to use the recorded think time, but to limit it to 30 seconds. [ThinkTime] Options=RECORDED Factor=1 LimitFlag=1 Limit=30

In

Find

?

Creating Vuser Scripts

Chapter C, page 476

Appendixes • Programming Scripts on UNIX Platforms

Log Options
You can set the log options to create a brief or detailed log file for the script’s execution. [Log] LogOptions=LogBrief MsgClassData=0 MsgClassParameters=0 MsgClassFull=0
Find

?

Creating Vuser Scripts

Chapter C, page 477

Appendixes • Programming Scripts on UNIX Platforms

You set the parameters LogOptions, MsGClassData, MsgClassParameters, and MsgClassFull variables according to the following chart.
MsgClassD ata N/A N/A 0 MsgClassParam eters N/A N/A 1 MsgClassF ull N/A N/A

In

Logging Type Disable Logging Standard Log Parameter Substitution (only) Data Returned by Server (only) Advanced Trace (only) All

LogOptions LogDisable d LogBrief LogExtende d LogExtende d LogExtende d LogExtende d

Find 0

?

1

0

0

0 1

0 1

1 1

Creating Vuser Scripts

Chapter C, page 478

Appendixes • Programming Scripts on UNIX Platforms

In the following example, the settings tell the Vuser to log all data returned by the server and the parameters used for substitution. [Log] LogOptions=LogExtended MsgClassData=1 MsgClassParameters=1 MsgClassFull=0
Find

?

Creating Vuser Scripts

Chapter C, page 479

Appendixes • Programming Scripts on UNIX Platforms

Iterations
You can set the Iteration options to perform multiple iterations and control the pacing between the iterations. [Iterations] NumOfIterations=5 IterationPace=IterationASAP StartEvery=60 RandomMin=60 RandomMax=90 To instruct the Vuser to perform multiple iterations of the Actions section, set NumOfIterations to the appropriate value.
In

Find

?

Creating Vuser Scripts

Chapter C, page 480

Appendixes • Programming Scripts on UNIX Platforms
To control the pacing between the iterations, set the IterationPace variable according to the following chart.
RandomMi n N/A RandomM ax N/A

Pacing As soon as possible Wait between Iterations for a set time Wait between iterations for a random time

IterationPace

StartEvery

IterationASAP

N/A value in seconds

IterationMinWait

N/A

N/A Find

IterationRandomWait

N/A

value in seconds

value in seconds

?

In the following example, the settings tell the Vuser to perform six iterations, while waiting a random number of seconds between iterations. The range of the random number is from 60 to 90 seconds. [Iterations] NumOfIterations=6 IterationPace=IterationRandomWait StartEvery=50 RandomMin=60 RandomMax=90

Creating Vuser Scripts

Chapter C, page 481

Appendixes • Programming Scripts on UNIX Platforms

Defining Transactions and Rendezvous Points
When programming a Vuser script without VuGen, you must manually configure the Vuser file in order to enable transactions and rendezvous. The configuration settings are listed in the test.usr file. [General] Type=any DefaultCfg=Test.cfg BinVuser=libtest.libsuffix RunType=Binary [Actions] vuser_init= Actions= vuser_end= [Transactions] transaction1= [Rendezvous] Meeting= Each transaction and rendezvous must be defined in the usr file. Add the transaction name to the Transactions section (followed by an “=”). Add each rendezvous name to the Rendezvous section (followed by an “=”). If the sections are not present, add them to the usr file as shown above.
In

Find

?

Creating Vuser Scripts

Chapter C, page 482

Appendixes • Programming Scripts on UNIX Platforms

Compiling Scripts
After you modify the template, you compile it with the appropriate Makefile in the script’s directory. Note that for C++ compiling, you must use the native compiler (not gnu). The compiler creates a dynamic library called:

• • •

libtest.so (solaris) libtest.a (AIX) libtest.sl (HP) You can modify the Makefile and assign additional compiler flags and libraries by modifying the appropriate sections. If you are working with a general template, you must include your application’s libraries and header files. For example, if your application uses a library called testlib, include it in the LIBS section. LIBS =\ -testlib \ -lLrun50 \ -lm
Find

?

After you modify the makefile, type Make from the command line in the working directory to create the dynamic library files for the Vuser script.

Creating Vuser Scripts

Chapter C, page 483

Appendixes • Programming Scripts on UNIX Platforms

You can now run the script from the LoadRunner Controller. The Vuser script is the test.usr file located in the script’s directory. For information on how to integrate a Vuser script into a LoadRunner scenario, refer to the appropriate LoadRunner Controller User’s Guide Before integrating a script into a LoadRunner scenario, you should run it from the command line to verify that it works properly. To run a Vuser script from the UNIX command line, type:

In

Find

mdrv -usr ‘pwd’ test.usr

?
where pwd is the full path to the directory containing the Vuser script and test.usr is the name of the Vuser file. Check that your script communicates with the server and performs all the required tasks.

Creating Vuser Scripts

Chapter C, page 484

Index
0
Index

A
Animated mode 112 ANSI C support 52 APPC Vuser scripts data buffers 243 data files 245 developing 234–246 getting started 236 understanding 241 using LRA functions 238 viewing data files 242 ASCII format 229 Automatic transactions Database Vuser scripts 457 Web Vuser scripts 345

C
C functions enhancing scripts 20, 52 using in Vuser scripts 20, 52 C support 52 Command line arguments 50 Comments inserting automatically 459 inserting into Vuser scripts 45 Compiler flags 483 Compiling Vuser scripts 483 Configuring Web Run Time Settings 336–348 Connecting to To TestDirector server 127 Continue on error 100 Controller defined 434 Output window 451 sending messages to 451 sending output messages 452 Correlating statements in Database Vuser scripts 161–174 in TUXEDO Vuser scripts 201 in Windows Sockets Vuser scripts 223 CtLib logging server messages 98 result set errors 159

Find

?

B
Baan Vusers creating scripts 397–410 functions 400 think time 410 Breakpoints 114 Brief log run-time setting 96

Click a page

A B C D E F GH I J K L MNO P QR S T U V WX Y Z
Creating Vuser Scripts 485

Index
D
Data files 72 Database Vuser scripts developing 136–160 error codes 154 getting started 141 handling errors 156 return codes 154 row information 152 using LRD functions 143 viewing grids 150 Date/Time, parameter values 67 Debug messages 97, 105, 106, 107, 108 Debugging animated run 112 step by step run 114 using breakpoints 114 declare_rendezvous function 450 declare_transaction function 450 Delimiters, in data tables 73 DLLs, calling from a Vuser script 463 Error handling 100 modifying 156–158 severity levels 156 vugen.ini 460 error_message function 450, 451 Exception handling for Baan Vusers 411 External functions 463

F
Fetching data 152 Field Demarcation Characters 282 Full run-time trace 96 Function synchronization 403 Functions APPC 238 Baan Vuser 400 Database 143 external, user defined 463 GUI Vuser 450 Java Vuser 418 TE 254 TUXEDO 191 Web 322 Windows Sockets 213
Find

?

E
Ebcdic translation 232 end_transaction function 450 Error codes 154

Click a page

A B C D E F GH I J K L MNO P QR S T U V WX Y Z
Creating Vuser Scripts 486

Index
G
get_host_name function 450, 453 get_master_host_name function 450, 453 Grids hiding 116 viewing 150 Group name, parameter values 63 GUI Vuser scripts developing 432–454 getting started 441 overview 433 using GUI functions 450

L
libc functions calling from Vuser program 53 Line formatting 459, 460 Loading DLLs globally 466 locally 464 overview 463 Log run-time settings 95, 477 lr_end_transaction function 42, 318, 323 lr_get_attrib_double function 50 lr_get_attrib_long function 50 lr_get_attrib_string function 47 lr_get_host_name function 47 lr_get_master_host_name function 47 lr_log_message function 49 lr_rendezvous function 44, 318, 323 lr_start_transaction function 41, 318, 323 lr_whoami function 47, 450, 453 LRA (APPC) functions 238 LRD (Database) functions 143 LRD_ON_ERROR_CONTINUE 157 LRD_ON_FETCHABLE_SET_ERR_CONT 160 lrd_stmt function 459 LRS functions 213 LRT functions 191

Find

I
Iteration settings 91

?

J
Java Vusers creating scripts 414–430 functions 418

K
Keyboard mapping 256

Click a page

A B C D E F GH I J K L MNO P QR S T U V WX Y Z
Creating Vuser Scripts 487

Index
M
Messages error 48, 451 sending 451 sending to output 48 mkdbtmpl script 470 Multithreading 104 Parameters brace style 84 data files 72 date/time 67 defining 55 global directory 85 in TUXEDO scripts 199 maintaining 82 options 83 random values 68 restoring original value 82 unique ID 70 Privileges 134 Programming Vuser actions 471 Progress bar settings 459, 461

O
Offset, determining 229 Options parameters 83 replay 112 Output window 48 output_message function 450, 452

Find

?

Q P
Parameterization 54–82 Queries, correlating for Database Vusers 161–174

R
Random number, parameter values 68 Random update method 78, 80 Reading Text 302–305

Click a page

A B C D E F GH I J K L MNO P QR S T U V WX Y Z
Creating Vuser Scripts 488

Index
Recording Vuser scripts Database 136–160 RTE 259–283 TUXEDO 187–200 using QuickTest 326–335 using VuGen 24–?? Web 326–335 Window Sockets 209–223 rendezvous function 450 Rendezvous points defined 43, 447 inserting 44, 334, 335, 447 Return codes 154 Row information, in Database Vuser scripts 152 RTE Vuser scripts overview 249 steps in creating 252 using TE functions 254 Running Vuser scripts animated mode 112 step by step 114 using QuickTest 349–354 using VuGen 109–122 Run-Time settings configuring manually 474 General 99 HTTP Settings (Web only) 341 Iterations 91 Log 93 overview 86 Performance Settings (Web only) 339 Think time 89

S
Script Generator, see Vuser Script Generator Searching for text on the screen 304 Sending messages 451 Sequential, parameter assignment 77 Server timeout 346 Settings, see run-time settings start_transaction function 450 Synchronization functions 403 Synchronizing Vusers overview 285 using rendezvous points 43, 334, 447 waiting for the cursor to appear 294 waiting for the terminal to be silent 300

Find

?

Click a page

A B C D E F GH I J K L MNO P QR S T U V WX Y Z
Creating Vuser Scripts 489

Index
System variables TE_SILENT_MILLI 297 TE_SILENT_SEC 297 TE_SILENT_TIMEOUT 297 TestDirector integration 123–134 connecting to TestDirector server 127 opening scripts 130 saving scripts 132 Text reading text from the screen 305 searching for text on the screen 304 Think time function 22 run-time settings 89 threshold 457 Web Vusers 345 Timeout Baan Vusers 412 Web Vusers 346 Transactions automatic, for LRD functions 457 automatic, for Web Vuser scripts 345 defined 445 inserting 40, 331 Web Vusers 345 Translation table settings 460 TSL, defined 443, 448 TUXEDO Vuser scripts log file 200 recording 187–200 using LRT (TUXEDO) functions 191 Typing style 277

T
TE (RTE) functions 254 TE_find_text function 304 TE_get_cursor_position function 305 TE_get_line_attribute function 305 TE_get_text_line function 305 TE_SILENT_MILLI system variable 297 TE_SILENT_SEC system variable 297 TE_SILENT_TIMEOUT system variable 297 TE_type function 274, 275 TE_typing_style function 274, 277 TE_wait_cursor function 294 TE_wait_silent function 301 TE_wait_sync function 287 TE_wait_text function 288, 294, 296 Templates for programming 470 Test plan tree (TestDirector) 125 Test Script Language, see TSL TestDirector Test plan tree 125

Find

?

Click a page

A B C D E F GH I J K L MNO P QR S T U V WX Y Z
Creating Vuser Scripts 490

Index
U
Unique ID, parameter values 70 Unique update method 79 Unique, parameter assignment 79 UNIX command line 117 Update methods 76, 81 User privileges 134 User types 134 user_data_point function 450 Vuser functions GUI 450 LRA (APPC) 238 LRD (Database) 143 LRS (Windows Sockets) 213 LRT (TUXEDO) 191 TE (RTE) 254 Vuser Generator, see Vuser Script Generator Vuser ID, parameter values 65 Vuser information, obtaining 47 Vuser Script Generator, see VuGen Vuser scripts 4 adding functions 38–51 compiling 483 creating on UNIX 468–484 creation steps 313 developing 443 enhancing 38–51 inserting comments 45 inserting rendezvous points 43, 44 inserting transactions 40 maximum length of line 459, 460 obtaining Vuser information 453 opening from TestDirector 130 programming 468–484 replaying on UNIX 117 running 109–122, 349–354 sample 448

V
Verification, see reading text Virtual User 2 Virtual X Server 440 Virtual XRunner, see VXRunner VuGen configuring 456 introducing 13–23 parameters 54–82 recording Vuser scripts 24–37 toolbar 30 Vugen.ini file 456 Vuser Development Environment 444

Find

?

Click a page

A B C D E F GH I J K L MNO P QR S T U V WX Y Z
Creating Vuser Scripts 491

Index
sending messages to the controller 451 size 458 TSL 443 verifying 484 Vuser tests, see Vuser scripts Vusers GUI Vusers 433 run-time settings 86 synchronizing 284, 285 Vuser technology 438 VXRunner 440 Windows Sockets Vuser scripts getting started 211 understanding 216 using LRS(Windows Sockets) functions 213 WinRunner automated GUI testing tool 433 creating GUI Vuser scripts 443 editing scripts 441 Vuser technology 448 Winsock data buffers 219 data files 221 excluding sockets 461 recording 209–223 viewing data files 217

Find

W
Waiting for the terminal to stabilize 300 Web run-time settings 336–348 Web Vuser scripts control icons 318 introducing 307–325 modifying 355–382 recording 326–335 running 349–354 service icons 319 step icons 316 web_image function 317 web_link function 317 web_submit_form function 317 web_url function 317

?

X
X SYSTEM message 287

Click a page

A B C D E F GH I J K L MNO P QR S T U V WX Y Z
Creating Vuser Scripts 492

C-Interpreter Copyright Agreement
The Virtual User Generator generates standard C code which can be compiled with any ANSI C compiler. However, for the convenience of our customers we have provided a C Interpreter for running the generated code, without charge. The cci executable which is the front end of the interpreter is based on the freely available "lcc Retargetable C Compiler" by Christopher Fraser and David Hanson, and is covered by the lcc Copyright included below. Any bugs in cci should be reported to Mercury Interactive. The author's copyright notice is below. THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED WARRANTY. IN PARTICULAR, NEITHER THE AUTHORS NOR MERCURY INTERACTIVE MAKE ANY REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. The authors of this software are Christopher W. Fraser and David R. Hanson. Copyright (c) 1991,1992,1993,1994,1995 by AT&T, Christopher W. Fraser, and David R. Hanson. All Rights Reserved. Permission to use, copy, modify, and distribute this software for any purpose, subject to the provisions described below, without fee is hereby granted, provided that this entire notice is included in all copies of any software that is or includes a copy or modification of this software and in all copies of the supporting documentation for such software. THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED WARRANTY. IN PARTICULAR, NEITHER THE AUTHORS NOR AT&T MAKE ANY REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. lcc is not public-domain software, shareware, and it is not protected by a `copyleft` agreement, like the code from the Free Software Foundation. lcc is available free for your personal research and instructional use under the `fair use' provisions of the copyright law. You may, however, redistribute the lcc in whole or in part provided you acknowledge its source and include this COPYRIGHT file. You may not sell lcc or any product derived from it in which it is a significant part of the value of the product. Using the lcc front end to build a C syntax checker is an example of this kind of product. You may use parts of lcc in products as long as you charge for only those components that are entirely your own and you acknowledge the use of lcc clearly in all product documentation and distribution media. You must state clearly that your product uses or is based on parts of lcc and that lcc is available free of charge. You must also request that bug reports on your product be reported to you. Using the lcc front end to build a C compiler for the Motorola 88000 chip and charging for and distributing only the 88000 code generator is an example of this kind of product. Using parts of lcc in other products is more problematic. For example, using parts of lcc in a C++ compiler could save substantial time and effort and therefore contribute significantly to the profitability of the product. This kind of use, or any use where others stand to make a profit from what is primarily our work, is subject to negotiation. Chris Fraser / cwf@research.att.comDavid Hanson / drh@cs.princeton.edu

In

Find

?

Creating Vuser Scripts

493

LoadRunner—Creating Vuser Scripts—Version 5.0 © Copyright 1995-1998 by Mercury Interactive Corporation
In

All rights reserved. All text and figures included in this publication are the exclusive property of Mercury Interactive Corporation, and may not be copied, reproduced, or used in any way without the express permission in writing of Mercury Interactive. Information in this document is subject to change without notice and does not represent a commitment on the part of Mercury Interactive. Patents pending. WinRunner, XRunner, and LoadRunner are registered trademarks of Mercury Interactive Corporation. TestSuite, Astra, Astra SiteManager, Astra SiteTest, RapidTest, TestDirector, QuickTest, Visual Testing, WebTest, Action Tracker, Link Doctor, Change Viewer, Dynamic Scan, Fast Scan and Visual Web Display are trademarks of Mercury Interactive Corporation. This document also contains Registered Trademarks, Trademarks and Service Marks that are owned by their respective companies or organizations. Mercury Interactive Corporation disclaims any responsibility for specifying which marks are owned by which companies or organizations. If you have any comments or suggestions regarding this document, please send them via e-mail to documentation@mercury.co.il. Mercury Interactive Corporation 1325 Borregas Avenue Sunnyvale, CA 94089 Tel. (408)822-5200 (800) TEST-911 Fax. (408)822-5300
LRDBUG5.0/01

Find

?

Sign up to vote on this title
UsefulNot useful