SilkPerformer® - Borland Technical Publications

SilkPerformer® - Borland Technical Publications SilkPerformer® - Borland Technical Publications

techpubs.borland.com
from techpubs.borland.com More from this publisher
15.11.2014 Views

User Guide SilkPerformer ® 2008

User Guide<br />

SilkPerformer ®<br />

2008


<strong>Borland</strong> Software Corporation<br />

8303 N. Mopac Expressway, Suite A-300<br />

Austin, TX 78759-8374<br />

http://www.borland.com<br />

<strong>Borland</strong> Software Corporation may have patents and/or pending patent applications covering subject<br />

matter in this document. Please refer to the product CD or the About dialog box for the list of applicable<br />

patents. The furnishing of this document does not give you any license to these patents.<br />

Copyright © 1992-2008 <strong>Borland</strong> Software Corporation and/or its subsidiaries. All <strong>Borland</strong> brand and<br />

product names are trademarks or registered trademarks of <strong>Borland</strong> Software Corporation in the United<br />

States and other countries. All other marks are the property of their respective owners.<br />

March 2008<br />

PDF


Contents<br />

Introduction 1<br />

Overview . . . . . . . . . . . . . . . . . . . . . 1<br />

What's New in SilkPerformer 2008 . . . . . . . . 2<br />

Upgrading to SilkPerformer 2008 . . . . . . . . . 4<br />

Evaluation Version . . . . . . . . . . . . . . . . 4<br />

Performance and Scalability Matrix . . . . . . . . 5<br />

Memory Footprints by Application Type. . . . . . 7<br />

Chapter 1<br />

Getting Started 15<br />

Overview . . . . . . . . . . . . . . . . . . . . 15<br />

Outlining Projects . . . . . . . . . . . . . . . . 16<br />

Modeling Test Scripts . . . . . . . . . . . . . . 21<br />

Validating Test Scripts. . . . . . . . . . . . . . 22<br />

Customizing Test Scripts . . . . . . . . . . . . 24<br />

Establishing Baseline Performance . . . . . . . 25<br />

Defining Workload. . . . . . . . . . . . . . . . 27<br />

Executing Load Tests . . . . . . . . . . . . . . 28<br />

Exploring Test Results . . . . . . . . . . . . . 29<br />

Chapter 2<br />

Configuring SilkPerformer 31<br />

Overview . . . . . . . . . . . . . . . . . . . . 31<br />

SilkPerformer Workbench . . . . . . . . . . . . 32<br />

SilkPerformer Recorder . . . . . . . . . . . . . 39<br />

Application Profiles . . . . . . . . . . . . . . . 41<br />

Proxy Settings. . . . . . . . . . . . . . . . . . 45<br />

Remote Agents . . . . . . . . . . . . . . . . . 48<br />

Client Certificates . . . . . . . . . . . . . . . . 52<br />

Java Configuration . . . . . . . . . . . . . . . 55<br />

Chapter 3<br />

Configuring Projects 59<br />

Overview . . . . . . . . . . . . . . . . . . . . 59<br />

Project Profile Settings . . . . . . . . . . . . . 60<br />

Test Scripts . . . . . . . . . . . . . . . . . . .119<br />

Data Files . . . . . . . . . . . . . . . . . . . .120<br />

Agent Computers . . . . . . . . . . . . . . . .121<br />

Workload Definition . . . . . . . . . . . . . . .121<br />

Outlining Projects . . . . . . . . . . . . . . . .125<br />

Chapter 4<br />

Modeling Test Scripts 127<br />

Overview . . . . . . . . . . . . . . . . . . . 127<br />

Recording Test Scripts . . . . . . . . . . . . 128<br />

Writing Test Scripts Manually . . . . . . . . . 131<br />

Working From Sample Scripts. . . . . . . . . 131<br />

Trying Out Test Scripts . . . . . . . . . . . . 132<br />

Chapter 5<br />

Validating Test Scripts 135<br />

Overview . . . . . . . . . . . . . . . . . . . 135<br />

Visual Analysis with TrueLog Explorer . . . . 135<br />

Log Files. . . . . . . . . . . . . . . . . . . . 136<br />

Report Files . . . . . . . . . . . . . . . . . . 137<br />

Output Files . . . . . . . . . . . . . . . . . . 138<br />

Chapter 6<br />

Customizing Test Scripts 139<br />

Overview . . . . . . . . . . . . . . . . . . . 139<br />

Inserting Function & Transaction Declarations 141<br />

Customizing Workload . . . . . . . . . . . . 142<br />

Customizing Session Handling . . . . . . . . 149<br />

Inserting Parsing Functions . . . . . . . . . . 153<br />

Adding Verifications to Test Scripts . . . . . . 155<br />

Manual Script Editing . . . . . . . . . . . . . 159<br />

Using the System Configuration Manager. . . 160<br />

Serializing and Synchronizing Virtual Users. . 160<br />

Using Custom DLLs in Test Scripts . . . . . . 166<br />

Matrix: Functions, the Recorder, and TrueLog<br />

Explorer . . . . . . . . . . . . . . . . . . . 174<br />

Chapter 7<br />

Establishing Baseline<br />

Performance 177<br />

Overview . . . . . . . . . . . . . . . . . . . 177<br />

Identifying Baseline Performance . . . . . . . 179<br />

Confirming Test Baselines. . . . . . . . . . . 179<br />

Setting Response Time Thresholds . . . . . . 182<br />

Setting Up Server Monitoring . . . . . . . . . 183<br />

SilkPerformer User Guide<br />

iii


Chapter 8<br />

Defining Workload 185<br />

Overview . . . . . . . . . . . . . . . . . . . . 185<br />

Setting Up Workload . . . . . . . . . . . . . . 187<br />

Adjusting Session Times . . . . . . . . . . . . 191<br />

Maintaining Transaction Rates . . . . . . . . . 191<br />

Chapter 9<br />

Executing Load Tests 193<br />

Overview . . . . . . . . . . . . . . . . . . . . 193<br />

Starting Load Tests . . . . . . . . . . . . . . . 194<br />

Monitoring Load Tests . . . . . . . . . . . . . 194<br />

Launching Load Tests Via the Command Line . 205<br />

Chapter 10<br />

Exploring Test Results 209<br />

Overview . . . . . . . . . . . . . . . . . . . . 209<br />

Performance Explorer . . . . . . . . . . . . . 212<br />

Reports . . . . . . . . . . . . . . . . . . . . . 229<br />

Measurements . . . . . . . . . . . . . . . . . 230<br />

Chapter 11<br />

Additional Workbench Features<br />

245<br />

Overview . . . . . . . . . . . . . . . . . . . . 245<br />

Teamwork Features . . . . . . . . . . . . . . 246<br />

Code Completion . . . . . . . . . . . . . . . . 249<br />

Parameter Wizard . . . . . . . . . . . . . . . 252<br />

Java Integration . . . . . . . . . . . . . . . . 256<br />

Converting CSV Data for Use With Silk Performance<br />

Explorer . . . . . . . . . . . . . . . . . . . . 259<br />

Chapter 12<br />

SilkPerformer Plug-Ins 263<br />

Overview . . . . . . . . . . . . . . . . . . . . 263<br />

Checking and Initializing Plug-Ins . . . . . . . 264<br />

Message Output . . . . . . . . . . . . . . . . 264<br />

<strong>Borland</strong> Optimizeit ServerTrace Plug-In . . . . 265<br />

dynaTrace Diagnostics Plug-In. . . . . . . . . 267<br />

Chapter 13<br />

Component Testing (Java &<br />

.NET) 269<br />

Overview . . . . . . . . . . . . . . . . . . . . 269<br />

.NET Support . . . . . . . . . . . . . . . . . . 269<br />

Java Support . . . . . . . . . . . . . . . . . . 271<br />

Chapter 14<br />

Unit Test Integration (JUnit &<br />

NUnit) 273<br />

Overview . . . . . . . . . . . . . . . . . . . . 273<br />

JUnit Integration . . . . . . . . . . . . . . . . 273<br />

NUnit Integration . . . . . . . . . . . . . . . . 281<br />

Chapter 15<br />

SilkCentral Test Manager<br />

Integration 287<br />

Overview . . . . . . . . . . . . . . . . . . . . 287<br />

Configuring Test Manager Integration . . . . . 288<br />

Opening SilkPerformer Projects from Test Manager<br />

289<br />

Importing SilkPerformer Projects from Test Manager<br />

291<br />

Uploading SilkPerformer Projects to Test Manager<br />

292<br />

Uploading Test Results to Test Manager . . . . 293<br />

Downloading Test Results from Test Manager . 294<br />

Chapter 16<br />

Source Control Integration 295<br />

Overview . . . . . . . . . . . . . . . . . . . . 295<br />

Configuring Source Control Integration . . . . 296<br />

Placing Projects and Files Under Source Control298<br />

Checking Files In . . . . . . . . . . . . . . . . 300<br />

Checking Files Out . . . . . . . . . . . . . . . 301<br />

Getting the Latest File Versions . . . . . . . . 302<br />

. . . . . . . . . Checking In/Out Project Files302<br />

Removing Source Control Linkage . . . . . . . 303<br />

Synchronizing Source Control Status. . . . . . 303<br />

Known Issues and Workarounds . . . . . . . . 304<br />

Chapter 17<br />

Other Supported Environments<br />

307<br />

Overview . . . . . . . . . . . . . . . . . . . . 307<br />

Windows Vista . . . . . . . . . . . . . . . . . 308<br />

Multibyte Support . . . . . . . . . . . . . . . . 308<br />

AJAX Support for Web Application Testing . . . 311<br />

SAP eCATT Support . . . . . . . . . . . . . . 312<br />

Terminal Emulation Support . . . . . . . . . . 314<br />

GUI-Level Testing Support . . . . . . . . . . . 317<br />

SilkPerformer Plug-In for Eclipse . . . . . . . . 325<br />

Remedy Support . . . . . . . . . . . . . . . . 333<br />

Adobe Flex AMF3 Support . . . . . . . . . . . 337<br />

iv<br />

SilkPerformer User Guide


Customizing Oracle Applications 12i Scripts for<br />

Replay . . . . . . . . . . . . . . . . . . . . .349<br />

Chapter 18<br />

Trouble Shooting 353<br />

Overview . . . . . . . . . . . . . . . . . . . .353<br />

Controller Agent Communication Troubleshooting .<br />

354<br />

Error Message Overview . . . . . . . . . . . .356<br />

Index 359<br />

SilkPerformer User Guide<br />

v


vi<br />

SilkPerformer User Guide


INTRODUCTION<br />

Overview<br />

Introduction<br />

About this manual<br />

This manual provides all the information you need to work effectively with<br />

SilkPerformer.<br />

This chapter contains the following sections:<br />

Section<br />

Page<br />

Overview 1<br />

What's New in SilkPerformer 2008 2<br />

Upgrading to SilkPerformer 2008 4<br />

Evaluation Version 4<br />

Performance and Scalability Matrix 5<br />

Memory Footprints by Application Type 7<br />

Overview<br />

SilkPerformer is the load testing tool that leads the industry today. It is used to<br />

assess the performance of Internet servers, database servers, distributed<br />

applications, and middleware—both before and after they are developed.<br />

SilkPerformer helps you to quickly and cost-effectively produce reliable, highquality<br />

application solutions.<br />

SilkPerformer creates highly realistic and fully customizable load tests. It does<br />

this through the use of virtual users that automatically submit transactions to<br />

systems under test, in the same way that real users would. Using a minimum of<br />

hardware resources, you can generate tests that simulate hundreds or thousands<br />

of concurrent users. And you can use SilkPerformer's powerful reporting tools<br />

both during and after load tests to analyze the performance of servers and locate<br />

bottlenecks, so that you can maximize the potential of your system.<br />

Questions SilkPerformer can help you answer:<br />

• How many simultaneous users can my server support?<br />

• What response times will my users experience during peak hours?<br />

• Which hardware and software products do I need to ensure optimum<br />

performance from my server?<br />

• Which components are the bottlenecks in my system?<br />

SilkPerformer User Guide 1


INTRODUCTION<br />

What's New in SilkPerformer 2008<br />

• What will the performance impact on my system be if I employ security<br />

technology?<br />

• Which areas of my application perform well and which have bottlenecks<br />

(business transactions, objects, and operations can all be evaluated)?<br />

• Which factors affect performance? What effects do they have? And at<br />

what point will those factors impact service levels?<br />

What's New in SilkPerformer 2008<br />

Following are the significant enhancements and changes that were made to<br />

SilkPerformer 2008.<br />

Enhanced Multibyte Character Set Support<br />

Oracle Forms Multibyte Support<br />

The SilkPerformer Recorder is now able to convert the UTF-8 strings of Oracle<br />

Forms to the system code page, and the replay engine converts them back to<br />

UTF-8, thus enabling multibyte support for Oracle Forms applications. This<br />

includes viewing and customizing multibyte scripts with Silk TrueLog Explorer.<br />

Citrix Multibyte Support<br />

Same as for Oracle Forms, SilkPerformer now supports record and replay of<br />

multibyte strings with Citrix. This includes viewing and customizing multibyte<br />

scripts with Silk TrueLog Explorer.<br />

Note Optical character recognition (OCR) for multibyte characters<br />

is currently not supported.<br />

Multibyte Enabled Project Packages<br />

Project packages containing filenames with multibyte characters can now be<br />

uploaded to and downloaded from SilkCentral Test Manager. The allowed file<br />

name length restriction of about 40 Japanese characters has also been removed.<br />

Enhanced AJAX Support<br />

SilkPerformer now recognizes AJAX requests that come in the form of XML or<br />

JSON, both of which can now be pretty-formatted both in the script and in<br />

TrueLog Explorer. This allows for a much better readability of such requests.<br />

2 SilkPerformer User Guide


INTRODUCTION<br />

What's New in SilkPerformer 2008<br />

Additionally, AJAX requests can be visually customized and verified in<br />

TrueLog Explorer.<br />

See “AJAX Support for Web Application Testing” for full details.<br />

FLEX/AMF3 Support<br />

SilkPerformer now supports FLEX applications based on the new AMF3<br />

protocol. The non-readable AMF3 data is converted to a readable format within<br />

the script, which also enables visual customization and verification via TrueLog<br />

Explorer.<br />

See “Adobe Flex AMF3 Support” for full details.<br />

Remedy Web ARS Support<br />

SilkPerformer now supports Remedy Web ARS versions 6.3, 7.0, 7.0.1, and 7.1.<br />

The proprietary data format of Remedy is translated into an XML-based<br />

representation that makes scripts easier to understand and customizable.<br />

Remedy support is licensed under the Premium Virtual User type.<br />

See “Remedy Support” for full details.<br />

Importing External Monitoring Data Into Silk<br />

Performance Explorer<br />

SilkPerformer offers a command line tool (csv2tsd.exe) that enables you to<br />

convert CSV (Comma Separated Values) files into TSD (Time Series Data)<br />

files. This is useful when you are monitoring external Windows data that, for<br />

security reasons, can not be monitored by SilkPerformer. By converting CSV<br />

data to TSD format, external data can be analyzed alongside internal<br />

SilkPerformer monitoring data within Performance Explorer.<br />

See “Converting CSV Data for Use With Silk Performance Explorer” for full<br />

details.<br />

Technology Updates<br />

• SAPGUI: The SAPGUI for Windows 7.10 client is now supported.<br />

• Oracle Applications 12: Oracle Applications 12, which is based on<br />

Oracle Application Server 10g, is now supported.<br />

See “Customizing Oracle Applications 12i Scripts for Replay” for full<br />

details.<br />

SilkPerformer User Guide 3


INTRODUCTION<br />

Upgrading to SilkPerformer 2008<br />

Upgrading to SilkPerformer 2008<br />

Licensing:<br />

SilkPerformer 2008 requires a SilkPerformer 2008 license.<br />

Project files:<br />

Project files can be upgraded from SilkPerformer versions 4.0 and higher (by<br />

opening them in the current version). Downgrading from the current version to<br />

older SilkPerformer versions is not supported (i.e., has not been tested).<br />

Installation Information:<br />

Parallel installations:<br />

SilkPerformer 2008 (controller and agent) can be installed together with any<br />

older version of SilkPerformer on the same machine; they do not influence each<br />

other.<br />

For complete installation instructions, please refer to the SilkPerformer<br />

Installation Guide.<br />

Evaluation:<br />

During the installation process, you will install one of the following versions:<br />

• Evaluation version: Installing an evaluation version of SilkPerformer<br />

2008 grants you full product functionality for a period of 30 days, limited<br />

to 10 virtual users. To upgrade to the full version at a later time, please<br />

contact your <strong>Borland</strong> sales representative.<br />

• Full version: Installing a full version of SilkPerformer 2008 requires a<br />

license. Contact your <strong>Borland</strong> sales representative for further<br />

information regarding licensing.<br />

Evaluation Version<br />

If you have installed the evaluation version of SilkPerformer 2008, you may use<br />

the full product functionality for 30 days, limited to 10 virtual users. The<br />

software will stop operating when the evaluation period expires.<br />

Tip To ease you into the process of working with SilkPerformer<br />

2008, it is recommended that you review the Web Load Testing<br />

Tutorial. This PDF-based tutorial can be found in SilkPerformer's<br />

documentation set, in the Tutorials folder.<br />

To upgrade to the full version of SilkPerformer 2008, contact your <strong>Borland</strong> sales<br />

representative.<br />

4 SilkPerformer User Guide


INTRODUCTION<br />

Performance and Scalability Matrix<br />

Performance and Scalability Matrix<br />

Max. # of Vusers per<br />

agent<br />

4xPIII, 1GHz, 4<br />

GByte RAM<br />

2xPIII, 1GHz, 2<br />

GByte RAM<br />

1xPIII, 1GHz, 1<br />

GByte RAM<br />

1xPIII, 1GHz, 512<br />

MByte RAM<br />

1xPIII, 600Mhz, 512<br />

MByte RAM<br />

1xPIII, 600Mhz, 256<br />

MByte RAM<br />

Web Business<br />

App.<br />

Table 1: Performance and Scalability Matrix<br />

Web Business App.<br />

with SSL(-35%)<br />

Web low level<br />

(+20%)<br />

5900 3800 7100 4<br />

3600 2300 4300 2<br />

1900 1200 2300 1<br />

800 500 1000 1<br />

800 500 1000 1<br />

300 200 400 1<br />

Note Web Business App uses Page-based Browser-level API<br />

(HTML/HTTP)<br />

Note Web low level uses Browser-level API (HTTP)<br />

Recommended<br />

#NICs<br />

Test Parameters<br />

The numbers in the table above have been determined using a realistic workload<br />

with the following characteristics:<br />

• The page structure of all requested Web pages corresponds to popular<br />

public Web pages.<br />

• The average think-time between pages views for virtual users was 32<br />

seconds.<br />

• A single virtual user was emulated with four concurrent connections.<br />

This means that the number of virtual user simulated corresponds to a realistic<br />

number of concurrent users accessing a popular Web site, resulting in:<br />

Avg. Hits/page: 39<br />

Avg. page size: 130 kByte<br />

Avg. think time between pages: 32 sec<br />

SilkPerformer User Guide 5


INTRODUCTION<br />

Performance and Scalability Matrix<br />

Formula:<br />

The formula for calculating the recommended maximum number of vusers per<br />

agent computer, which is relevant for realistic workload using Web Business<br />

App. = Page-based Browser-level API, is:<br />

Given:<br />

agentCpu: specifies processor speed in MHz (must be >= 100)<br />

agentCpuCount: specifies the number of processors<br />

agentRamMb: specifies the RAM of the agent in MByte. (has to be > 64)<br />

cpuBound = 0;<br />

if (agentCpu >= 100 && agentCpu < 200) cpuBound = 100;<br />

if (agentCpu >= 200 && agentCpu < 300) cpuBound = 450;<br />

if (agentCpu >= 300 && agentCpu < 400) cpuBound = 600;<br />

if (agentCpu >= 400 && agentCpu < 500 cpuBound = 750;<br />

if (agentCpu >= 500 && agentCpu < 600) cpuBound = 900;<br />

if (agentCpu >= 600 && agentCpu < 800) cpuBound = 1200;<br />

if (agentCpu >= 800 && agentCpu < 1000) cpuBound = 1500;<br />

if (agentCpu >= 1000 && agentCpu < 1400) cpuBound = 2000;<br />

if (agentCpu >= 1400) cpuBound = 2500;<br />

ramBound = (agentRamMB-64) * 2.0;<br />

agentCpuFactor = 1.0;<br />

for (i = 2; i


INTRODUCTION<br />

Memory Footprints by Application Type<br />

1000 Mhz P III, 1 GByte<br />

maxVuserPerAgent = (Minimum((1024 - 64) * 2.0, 2000)/100)*100 =<br />

(Minimum(1920,2000)/100)*100 = 1900 Vusers<br />

1000 Mhz P III, 512 MByte<br />

maxVuserPerAgent = (Minimum((512 - 64) * 2.0, 2000)/100)*100 =<br />

(Minimum(896,2000)/100)*100 = 800 Vusers<br />

600 Mhz PIII, 512 MByte<br />

maxVuserPerAgent = (Minimum((512 - 64) * 2.0, 1200)/100)*100 =<br />

(Minimum(896,1200)/100)*100 = 800 Vusers<br />

600 Mhz PIII, 256 MByte<br />

maxVuserPerAgent = (Minimum((256 - 64) * 2.0, 1200)/100)*100 =<br />

(Minimum(384,1200)/100)*100 = 300 Vusers<br />

Memory Footprints by Application Type<br />

The following table outlines the size of the memory footprint associated with<br />

each of the application types supported by SilkPerformer.<br />

Note The listed users are in-process, i.e., 25 users run in a single<br />

process, and 50 users run in a single process, respectively.<br />

Users PerfRun (KB) Per User (KB) Per User (MB)<br />

Web Business Transaction (HTML/HTTP)<br />

1 1,935 1,935 1.89<br />

25 10,323 413 0.40<br />

50 20,400 408 0.40<br />

Web Low Level (HTTP)<br />

1 2,044 2,044 2.00<br />

25 12,136 485 0.47<br />

50 22,732 455 0.44<br />

Flash Remoting<br />

1 1,912 1,912 1.87<br />

25 12,776 511 0.50<br />

50 20,896 418 0.41<br />

SilkPerformer User Guide 7


INTRODUCTION<br />

Memory Footprints by Application Type<br />

Users PerfRun (KB) Per User (KB) Per User (MB)<br />

WebDav (MS Outlook Web Access)<br />

1 3,588 3,588 3.50<br />

25 17,724 709 0.69<br />

50 33,364 667 0.65<br />

Remedy Ars Web<br />

1 2,288 2,288 2.23<br />

25 9,688 388 0.38<br />

50 17,340 347 0.34<br />

Email (SMTP/POP)<br />

1 1,904 1,904 1.86<br />

25 5,268 211 0.21<br />

50 8,912 178 0.17<br />

Directory Server (LDAP)<br />

1 2,920 2,920 2.85<br />

25 not tested N/A N/A<br />

50 not tested N/A N/A<br />

FTP<br />

1 2,420 2,420 2.36<br />

25 5,352 214 0.21<br />

50 8,348 167 0.16<br />

Streaming Media (MS, Real)<br />

1 7,188 7,188 7.02<br />

25 30,188 1,208 1.18<br />

8 SilkPerformer User Guide


INTRODUCTION<br />

Memory Footprints by Application Type<br />

Users PerfRun (KB) Per User (KB) Per User (MB)<br />

50 67,782 1,356 1.32<br />

TCP/IP based Application<br />

1 1,912 1,912 1.87<br />

25 5,624 225 0.22<br />

50 9,500 190 0.19<br />

Mixed Protocols<br />

1 N/A N/A N/A<br />

25 N/A N/A N/A<br />

50 N/A N/A N/A<br />

TN3270<br />

1 2,224 2,224 2.17<br />

25 7,424 297 0.29<br />

50 13,652 273 0.27<br />

TN5250<br />

1 1,495 1,495 1.46<br />

25 not tested N/A N/A<br />

50 not tested N/A N/A<br />

VT100/VT200<br />

1 2,069 2,069 2.02<br />

25 7,168 287 0.28<br />

50 10,664 213 0.21<br />

SAPGUI<br />

1 30,656 30,656 29.94<br />

SilkPerformer User Guide 9


INTRODUCTION<br />

Memory Footprints by Application Type<br />

Users PerfRun (KB) Per User (KB) Per User (MB)<br />

25 110,180 4,407 4.30<br />

50 194,532 3,891 3.80<br />

SAP NetWeaver (Web)<br />

1 2,072 2,072 2.02<br />

25 10,084 403 0.39<br />

50 17,936 359 0.35<br />

Peoplesoft 8<br />

1 1,936 1,936 1.89<br />

25 9,812 392 0.38<br />

50 16,408 328 0.32<br />

Oracle 11i<br />

1 22,636 22,636 22.11<br />

25 34,748 1,390 1.36<br />

50 51,104 1,022 1.00<br />

Siebel 7 Web Client (incl. IE Option Pack)<br />

1 2,256 2,256 2.20<br />

25 11,532 461 0.45<br />

50 20,576 412 0.40<br />

WAP<br />

1 1,848 1,848 1.80<br />

25 5,408 216 0.21<br />

50 9,164 183 0.18<br />

i-Mode<br />

10 SilkPerformer User Guide


INTRODUCTION<br />

Memory Footprints by Application Type<br />

Users PerfRun (KB) Per User (KB) Per User (MB)<br />

1 1,936 1,936 1.89<br />

25 10,323 413 0.40<br />

50 20,400 408 0.40<br />

Radius<br />

1 16,104 16,104 15.73<br />

25 21,284 851 0.83<br />

50 26,268 525 0.51<br />

XML/SOAP (recording Web Service client)<br />

1 2,676 2,676 2.61<br />

25 8,460 338 0.33<br />

50 16,436 329 0.32<br />

.Net Framework using Visual Studio .Net Add-On<br />

1 19,964 19,964 19.50<br />

25 N/A N/A N/A<br />

50 N/A N/A N/A<br />

Java Framework<br />

1 13,044 13,044 12.74<br />

25 22,356 894 0.87<br />

50 27,920 558 0.55<br />

COM / DCOM / MTS / COM+ / ADO<br />

1 4,608 4,608 4.50<br />

25 28,160 1,126 1.10<br />

50 51,200 1,024 1.00<br />

SilkPerformer User Guide 11


INTRODUCTION<br />

Memory Footprints by Application Type<br />

Users PerfRun (KB) Per User (KB) Per User (MB)<br />

IIOP – Corba / EJB (RMI over IIOP)<br />

1 2,736 2,736 2.67<br />

25 31,696 1,268 1.24<br />

50 61,960 1,239 1.21<br />

Jacada<br />

1 15,556 15,556 15.19<br />

25 24,020 961 0.94<br />

50 31,552 631 0.62<br />

Citrix Metaframe<br />

1 3,900 3,900 3.81<br />

25 9,000 360 0.35<br />

50 11,500 230 0.22<br />

Visual Basic<br />

1 2,100 2,100 2.05<br />

25 4,128 165 0.16<br />

50 6,276 126 0.12<br />

Oracle<br />

1 1,732 1,732 1.69<br />

25 3,696 148 0.14<br />

50 5,792 116 0.11<br />

ODBC<br />

1 5,468 5,468 5.34<br />

25 16,918 677 0.66<br />

12 SilkPerformer User Guide


INTRODUCTION<br />

Memory Footprints by Application Type<br />

Users PerfRun (KB) Per User (KB) Per User (MB)<br />

50 29,016 580 0.57<br />

DB2 CLI<br />

1 5,168 5,168 5.05<br />

25 21,952 878 0.86<br />

50 37,468 749 0.73<br />

Tuxedo (all Feat.) + Clarify<br />

1 2,400 2,400 2.34<br />

25 not tested N/A N/A<br />

50 not tested N/A N/A<br />

SilkTest<br />

1 13,000 13,000 12.7<br />

25 N/A N/A N/A<br />

50 N/A N/A N/A<br />

Chordiant CRM<br />

1 not tested N/A N/A<br />

25 not tested N/A N/A<br />

50 not tested N/A N/A<br />

Siebel 6/DB2<br />

1 not tested N/A N/A<br />

25 not tested N/A N/A<br />

50 not tested N/A N/A<br />

Siebel 6/Oracle<br />

1 9,428 9,428 9.21<br />

SilkPerformer User Guide 13


INTRODUCTION<br />

Memory Footprints by Application Type<br />

Users PerfRun (KB) Per User (KB) Per User (MB)<br />

25 66,540 2,662 2.60<br />

50 125,720 2,514 2.46<br />

Siebel 6/SQL Server<br />

1 not tested N/A N/A<br />

25 not tested N/A N/A<br />

50 not tested N/A N/A<br />

GUI-level testing<br />

1 1,788 1,788 1.75<br />

25 5,080 203 0.2<br />

50 not tested not tested not tested<br />

Note GUI-level tests require additional memory resources through<br />

the usage of terminal services sessions and SilkTest:<br />

- 6,300 KB per VUser for Windows Terminal Services<br />

- 13,000 KB per VUser for SilkTest<br />

- 1,092 KB per VUser for SilkPerformer’s Session Manager<br />

14 SilkPerformer User Guide


1<br />

Getting 1Chapter<br />

Started<br />

Introduction<br />

What you will learn<br />

This chapter explains how to get started working with SilkPerformer.<br />

This chapter contains the following sections:<br />

Section<br />

Page<br />

Overview 15<br />

Outlining Projects 16<br />

Modeling Test Scripts 21<br />

Validating Test Scripts 22<br />

Customizing Test Scripts 24<br />

Establishing Baseline Performance 25<br />

Defining Workload 27<br />

Executing Load Tests 28<br />

Exploring Test Results 29<br />

Overview<br />

To conduct a SilkPerformer load test, a series of well-defined steps should be<br />

followed:<br />

1 “Outlining Projects”: The basic settings for your load test project are<br />

defined first.<br />

2 “Modeling Test Scripts”: Next, the test script that will prescribe the<br />

actions of the virtual users in your test is created.<br />

SilkPerformer User Guide 15


1 GETTING STARTED<br />

Outlining Projects<br />

3 “Validating Test Scripts”: A trial run of the test script is performed. The<br />

results of the trial run are inspected with the help of TrueLog Explorer to<br />

make sure that the script works properly.<br />

4 “Customizing Test Scripts”: The test is customized to create realistic<br />

tests.<br />

5 “Establishing Baseline Performance”: The baseline performance of the<br />

application under test is identified in a test run with a single user per user<br />

type. This will form the basis for the calculation of the number of<br />

concurrent users and threshold settings for timers later during the full<br />

load test. The results of the baseline test are inspected to confirm that the<br />

baseline reflects the performance required from the tested application;<br />

the results will be used to calculate the number of concurrent users and<br />

appropriate threshold settings.<br />

6 “Defining Workload”: Prior to the execution of a load test, the number of<br />

virtual users per user type, the duration, and the number of agents<br />

involved must be set.<br />

7 “Executing Load Tests”: The full load test is run, using the customized<br />

test and the full complement of agent computers and virtual users.<br />

8 “Exploring Test Results”: Finally, the results of the load test are analyzed<br />

to assess the performance of the target application.<br />

Outlining Projects<br />

The first step in conducting a SilkPerformer load test is to define the basic<br />

settings for the load testing project. The project is given a name, and optionally a<br />

brief description can be added. The type of application to be tested is specified<br />

from a range of choices that includes all of the major traffic available today on<br />

the Internet and on the Web, including the most important database and<br />

distributed applications. See “Available application types” for details.<br />

The settings that are specified are associated with a particular load testing<br />

project. It is easy to switch between different projects, to edit projects, and to<br />

save projects so that they can later be modified and reused.<br />

A project contains all the resources needed to complete a load test. These<br />

include a workload, one or more profiles and test scripts, all the data files that<br />

are accessed from the script, and a specific number of agent computers and<br />

information for server side monitoring. Options for all of these resources are<br />

available directly from the project icon in the corresponding tree list.<br />

Note For details on the memory footprint associated with each<br />

supported application type, see “Memory Footprints by Application<br />

Type”.<br />

16 SilkPerformer User Guide


1 GETTING STARTED<br />

Outlining Projects<br />

Available application<br />

types<br />

• Web browser<br />

- Web business transaction (HTML/HTTP)<br />

- Web low level (HTTP)<br />

- Flash Remoting<br />

- WebDAV (MS Outlook Web Access)<br />

• Internet<br />

- Email (SMTP/POP)<br />

- Directory server (LDAP)<br />

- FTP<br />

- Streaming media (MS, Real)<br />

- TCP/IP based application<br />

- Mixed Protocol<br />

- WebDAV (MS Outlook Web Access)<br />

• Terminal Emulation<br />

- TN3270<br />

- TN5250<br />

- VT100<br />

- VT200+<br />

• ERP/CRM<br />

- SAP<br />

o SAPGUI<br />

o SAP NetWeaver (Web)<br />

- PeopleSoft<br />

o PeopleSoft 8<br />

- Chordiant CRM<br />

- Clarify 8-10 (Tuxedo)<br />

- Oracle<br />

o Oracle Applications 11i<br />

o Oracle Applications 12i<br />

- Siebel<br />

o Siebel 6/DB2<br />

o Siebel 6/Oracle<br />

o Siebel 6/SQL Server<br />

SilkPerformer User Guide 17


1 GETTING STARTED<br />

Outlining Projects<br />

o Siebel 7 Web Client (incl. IE Option Pack)<br />

- Remedy<br />

o Remedy 6.3<br />

o Remedy 7.01<br />

o Remedy 7.0<br />

o Remedy 7.1<br />

• Wireless<br />

- WAP<br />

- i-Mode<br />

- Radius<br />

• Web Services<br />

- XML/SOAP (recording Web Service client)<br />

- .NET Explorer<br />

- Java Explorer<br />

• Database<br />

- Oracle<br />

- ODBC<br />

- DB2 CLI<br />

- ADO<br />

• Application Server/Component Models<br />

- Corba (IIOP)<br />

- EJB (RMI over IIOP)<br />

- EJB (Java Explorer)<br />

- Tuxedo (ATMI)<br />

- Tuxedo (JOLT)<br />

- COM/DCOM/MTS/COM+/ADO<br />

- .NET Remoting<br />

- Jacada<br />

- Oracle<br />

o Oracle Forms 10g<br />

o Oracle Forms 6i<br />

o Oracle Forms 9i<br />

• Terminal Services<br />

18 SilkPerformer User Guide


1 GETTING STARTED<br />

Outlining Projects<br />

- Citrix MetaFrame<br />

• .NET<br />

- .NET Explorer<br />

- .NET Framework using Visual Studio .NET Add-On<br />

• Java<br />

- Java RMI/EJB (recording)<br />

- Java Explorer<br />

- Java Framework<br />

• Frameworks<br />

- .NET Framework using Visual Studio .NET<br />

- Java<br />

- Visual Basic<br />

• Monitoring<br />

- BDL Monitor for Performance Explorer<br />

• Unit Testing<br />

- JUnit<br />

- Java Testing<br />

- NUnit<br />

- .NET Testing<br />

• GUI-Level Testing<br />

- SilkTest<br />

Sample scripts<br />

Sample project files, including scripts, include files, data files, profile files,<br />

workload definitions, and more, are available from the Application type window<br />

on the Outline Project dialog when you are initially prompted to outline a new<br />

project. These files can be used as templates that you can edit manually to meet<br />

your needs, as explained in “Modeling Test Scripts”.<br />

Sample scripts are available for the following application/component/protocol<br />

types:<br />

• ADO<br />

• COM<br />

• Internet<br />

- Cookies<br />

- email<br />

- Form-based file upload<br />

SilkPerformer User Guide 19


1 GETTING STARTED<br />

Outlining Projects<br />

Outlining a project<br />

- FTP<br />

- LDAP<br />

- Mapi<br />

• .NET<br />

- .NET Remoting<br />

- Web Services<br />

• Java Framework<br />

- JDBC<br />

- RMI/IIOP<br />

- RMI<br />

• ShopIT V6.0<br />

• XML<br />

Procedure To define a basic outline for your project:<br />

1 Click the Start here button on the SilkPerformer Workflow bar. If you<br />

have already used this icon in your current project, the icon will be<br />

named Outline Project. The Workflow - Outline Project dialog appears.<br />

2 In the Project name field, enter a name for your project.<br />

3 In the Project description field, enter a description for your project (this<br />

description is for your own project management purposes only).<br />

4 From the Application type tree list, choose the type of application that<br />

you want to use in your load test. See “Available application types” for<br />

details.<br />

Note If you are load testing a Web application, choose the Web<br />

business transaction (HTML/HTTP) option to create simpler scripts<br />

while incorporating advanced functionality.<br />

Choose the Web low level (HTTP) option if you want to put the<br />

highest possible load on your application. These scripts are more<br />

complex than Web business transaction scripts, which require more<br />

effort to customize.<br />

It is recommended that use the Web business transaction (HTML/<br />

HTTP) instead of the Web low level (HTTP) scripts for browser<br />

based applications.<br />

5 Click OK.<br />

An icon for the new project appears in the tree-view area of the main<br />

SilkPerformer window.<br />

20 SilkPerformer User Guide


1 GETTING STARTED<br />

Modeling Test Scripts<br />

6 If you need to add additional resources to the project, right-click the<br />

project icon in the tree list. It is particularly important that all the user<br />

data files (.csv), random data files (.rnd), and .idl files needed by<br />

SilkPerformer are set up for the project.<br />

Modeling Test Scripts<br />

The second step in conducting a SilkPerformer load test is to create a test script<br />

that will prescribe the actions of the simulated users who will be run during the<br />

test. The script is written in SilkPerformer's proprietary scripting language, the<br />

Benchmark Description Language (BDL). See the BDL Function Reference for<br />

full details.<br />

Scripts can be created in different ways depending on the application type. The<br />

easiest way is to use the SilkPerformer Recorder, which automates much of the<br />

process for you. Alternately, you can create a test script manually or edit a<br />

sample script.<br />

• Test script generation with the SilkPerformer Recorder: The standard<br />

method for creating a test script is to use the SilkPerformer Recorder to<br />

capture and record traffic that is representative of the type you need to<br />

simulate in your test. The SilkPerformer Recorder automatically<br />

generates a BDL test script based on the recorded traffic.<br />

• Manual test script generation: A second method of creating a test script<br />

is to manually create a new script from scratch in BDL.<br />

• Sample script reuse: A variant on the second method of creating a test<br />

script is to base the new script on one of the sample BDL scripts that are<br />

provided with SilkPerformer. See “Sample scripts” for a list of available<br />

sample scripts.<br />

Modeling the test<br />

script<br />

Procedure To create a test script:<br />

1 Click the Model Script button on the SilkPerformer Workflow bar.<br />

The Workflow - Model Script dialog appears.<br />

2 In the Script area, define how you want your script to be generated.<br />

- Select the Record option to have the SilkPerformer Recorder capture<br />

and record network traffic, and then automatically generate the<br />

script.<br />

From the Select application profile drop-down list, select the profile<br />

of the application type you want to use. If a profile is not set up for<br />

that application, click the button (...) to the right of the drop-down<br />

list to set one up. See “Application Profiles” for further details.<br />

SilkPerformer User Guide 21


1 GETTING STARTED<br />

Validating Test Scripts<br />

If you are load testing a Web application, you can insert the URL of<br />

the application’s home page in the URL field. Otherwise, enter the<br />

command line options that you want to pass to the client application.<br />

See “Recording Test Scripts”.<br />

- If you want to use one of the sample scripts that accompany<br />

SilkPerformer, select the Sample script option in the Script area. See<br />

“Working From Sample Scripts”.<br />

- Experienced users may want to create their scripts manually. To do<br />

so, select the New script option in the Script area. See “Writing Test<br />

Scripts Manually”Click OK.<br />

Validating Test Scripts<br />

The third step in conducting a SilkPerformer load test is to perform a trial run of<br />

the test script that you created in the previous step. The object of a trial run is to<br />

ensure that your test script is free from errors, and that it accurately reproduces<br />

the interaction needed between the client application and the server. Normally,<br />

this is the traffic that was recorded by the SilkPerformer Recorder in the<br />

previous step.<br />

For a try-out of the test script, options are automatically selected so that you can<br />

see a live display of the actual data as it is downloaded. Log files and a report<br />

file are created so that you can confirm later that the script ran properly. Only<br />

one user is run and the stress test option is enabled so that there is no think time<br />

and no delay between transactions.<br />

TrueLog Explorer can assist you in finding replay errors quickly, customizing<br />

session handling, and adding verifications to your script.<br />

For Try Script runs, the following options are automatically set to the specified<br />

values (see “Replay options” for details):<br />

• The Stress test option is on.<br />

• The Stop virtual users after simulation time (Queuing Workload) option<br />

is off.<br />

• The Virtual user log files (.log) option is on.<br />

• The Virtual user output files (.wrt) option is on.<br />

• The Virtual user report files (.rpt) option is on.<br />

• The Virtual user report on error files (.rpt) option is on.<br />

• The TrueLog files (.xlg) option is on.<br />

• The TrueLog On Error files (.xlg) option is off.<br />

• The Compute time series data (.tsd) option is off.<br />

22 SilkPerformer User Guide


1 GETTING STARTED<br />

Validating Test Scripts<br />

Trying out the test<br />

script<br />

• All logging detail options (Results/Logging and Results/Internet logging<br />

tab) are on.<br />

• The Enable all measure groups (TSD measure groups) option is off.<br />

• The Bandwidth option is set to High Speed (unlimited).<br />

• The Downstream option is set to Unlimited.<br />

• The Upstream option is set to Unlimited.<br />

• The Duplex option is off.<br />

• The Modem compression rate is set to 1.0 x.<br />

Procedure To try out your test script:<br />

1 Click the Try Script button on the SilkPerformer Workflow bar.<br />

The Workflow – Try Script dialog appears.<br />

2 In the Profile drop-down list, the currently active profile is selected (this<br />

is the default profile if you have not configured another).<br />

3 If you want to configure the simulation settings for the selected profile,<br />

click the button (...) to the right of the drop-down list. See “Replay<br />

options” for details.<br />

4 In the Script drop-down list, the first script added to the project is<br />

selected. Use this script, or choose another from the list.<br />

5 Since this is a Try Script, only one virtual user will be run. In the list of<br />

user groups and virtual users, select the user group from which you want<br />

to run a virtual user.<br />

6 To view the actual data that is downloaded from a Web server during the<br />

try-out as it is happening, select the Animated option. If you are testing<br />

anything other than a Web application, you should disable this option.<br />

7 Click Run.<br />

8 The Try Script is run. All recorded think times are ignored during test<br />

runs. The Monitor window opens; giving you detailed information about<br />

the progress of the Try Script.<br />

If you have selected the Animated option, TrueLog Explorer will open.<br />

Here you can view the actual data that is downloaded during the<br />

TryScript.<br />

If any errors occur during the Try Script, TrueLog Explorer will help you<br />

to find the errors quickly and to customize any problematic session<br />

information. Once you have finished examining and customizing your<br />

script with TrueLog Explorer, your script should run without error.<br />

SilkPerformer User Guide 23


1 GETTING STARTED<br />

Customizing Test Scripts<br />

Customizing Test Scripts<br />

Customizing the test<br />

The fourth step in conducting a SilkPerformer load test is customizing your test<br />

script. Script customization has several purposes: to enhance scripts with<br />

randomized user data; to handle session-specific data that might otherwise lead<br />

to errors; and to insert verification functions.<br />

When an uncustomized test script is used, load tests based on that script<br />

repeatedly reproduce the exact behavior recorded on a particular occasion. This<br />

won’t provide accurate results. To realistically emulate the varied traffic of a<br />

large number of different users, transactions in test scripts need to be modified<br />

and, wherever appropriate, randomized.<br />

The behavior of virtual users can be customized in a number of ways. They can<br />

employ different Web browsers and modem speeds. Wherever randomized data<br />

is appropriate, random variables can be employed to provide realistic user data.<br />

In this way, virtual users can input different names, addresses, credit card<br />

numbers, and so on. They can vary in the products they search for, in the<br />

products they order, and in many other ways. When an application under test<br />

uses load balancers, realistic simulation can be achieved by giving each virtual<br />

user a unique IP address. Test scripts can be edited manually to provide<br />

extensive customization.<br />

Procedure To customize a test script:<br />

1 Click the Customize Test button on the SilkPerformer workflow bar.<br />

The Workflow - Customize Test dialog appears.<br />

2 In the Profile drop-down list, the currently active profile is selected (this<br />

is the default profile unless you have configured another profile).<br />

3 If you want to configure simulation settings for the selected profile, click<br />

the button (...) to the right of the drop-down list. See “Replay options”<br />

for details.<br />

4 If you want to add a new profile to your workload, click the second<br />

button to the right of the drop-down list.<br />

5 To define settings for the modem speeds to be emulated in your load test,<br />

click the Modem Speeds button or link. See “Network options” for<br />

details.<br />

6 To configure simulation settings for your Web browser, click the<br />

Browser Types link. See “Browser options” for details.<br />

7 To create realistic functionality for the virtual users in your load test by<br />

means of parameters, click the Create New Parameter Wizard button or<br />

link. See “Parameter Wizard” for details.<br />

24 SilkPerformer User Guide


1 GETTING STARTED<br />

Establishing Baseline Performance<br />

8 To modify user groups and transactions, click the User Group/<br />

Transaction Wizard icon or link. See “Visual user group customization”<br />

for details.<br />

9 If you want to give your virtual users individual IP addresses, click the<br />

System Configuration Manager link. It is recommended that you use this<br />

option if your application uses a load balancer. See “Setting up<br />

individual IP addresses” for details.<br />

10 Once you have finished customizing your test, click the Yes button.<br />

Establishing Baseline Performance<br />

The fifth step in conducting a SilkPerformer load test is to ascertain an<br />

application’s baseline performance (i.e., its ideal performance). This is achieved<br />

by running your newly customized test script with a single virtual user per user<br />

type. The unstressed performance of the application forms the basis for<br />

calculating the number of concurrent users and appropriate threshold settings for<br />

page and transaction times. The measurements typical of a real load test (e.g.,<br />

response times and throughput) are performed during baseline tests.<br />

A secondary reason for running a baseline test is that it serves as a trial run of the<br />

customized test that you’ve created. The objective is to ensure that the<br />

customizations have not introduced errors into the script, and that the script<br />

accurately and fully reproduces the interaction that is required between the client<br />

application and the server.<br />

For baseline runs, the following options are set automatically to the specified<br />

value:<br />

• A Baseline report file is automatically created.<br />

• The Stop virtual users after simulation time (Queuing Workload) option<br />

is on.<br />

• The Random thinking time option is off.<br />

• The Load test description field is set to "BaseLine Test".<br />

• The Display All Errors Of All Users option in the Monitor window is on.<br />

• The Virtual user output files (.wrt) option is on.<br />

• The Virtual user report files (.rpt) option is on.<br />

Identifying a test<br />

baseline<br />

Procedure To find your test baseline:<br />

1 Click the Find Baseline button on the SilkPerformer Workflow bar.<br />

The Workflow - Find Baseline dialog appears.<br />

SilkPerformer User Guide 25


1 GETTING STARTED<br />

Establishing Baseline Performance<br />

Confirming the test<br />

baseline<br />

Analyzing the baseline<br />

report<br />

2 Using the checkboxes on the left of the dialog, select the User Types that<br />

you want to run in the actual baseline test. A “user type” is a combination<br />

of a usergroup, a script, and a profile. One virtual user from each User<br />

Type will be executed.<br />

3 The active profile is selected in the Profile drop-down list (this is the<br />

default profile unless you have configured another).<br />

To add new user types to your load test, press the Add button and select a<br />

combination of script, usergroup, and profile. In actual projects, each<br />

profile can be selected with any usergroup from any script in the project.<br />

4 If you want to configure the simulation settings for the selected profile,<br />

click the button (...) to the right of the drop-down list. See “Simulation<br />

options” for details.<br />

5 Click Run to perform the baseline test.<br />

6 The baseline test is run. The Monitor window opens; giving you detailed<br />

information about the progress of the test. See “Monitoring Load Tests”<br />

for details.<br />

The sixth step in conducting a SilkPerformer load test is to confirm that the test<br />

baseline established by the test in the previous step actually reflects the desired<br />

performance of the application under test. This is done by inspecting the results<br />

of that test in a baseline report. If the results are satisfactory, the baseline can be<br />

accepted and will form the basis for calculating the number of concurrent virtual<br />

users and thresholds of specific timers in future tests. The baseline results will be<br />

used later for comparison with the results of actual load tests.<br />

A secondary reason for running a baseline test is that it serves as a trial run for<br />

the customized test. The baseline confirmation step provides an opportunity to<br />

inspect the measurements generated during the test to ensure that the final load<br />

test contains all the required results.<br />

At this stage, server monitoring is set up so that live monitoring of the server<br />

will occur during load tests, and server-side results information is generated for<br />

exploration and correlation after the test.<br />

Procedure To confirm your test baseline:<br />

1 Click the Confirm Baseline button on the SilkPerformer Workflow bar.<br />

The Workflow - Confirm Baseline dialog appears.<br />

2 To view a report of the results from your baseline test, click the Baseline<br />

Report button or link. In the Summary report that appears, you can<br />

accept the results of the previous test as your baseline by clicking the<br />

Accept Baseline button in the report and clicking Yes on the confirmation<br />

dialog.<br />

26 SilkPerformer User Guide


1 GETTING STARTED<br />

Defining Workload<br />

Note To view the accepted baselines that are currently in effect,<br />

click the Confirm Baseline button. Then click the Accepted Baseline<br />

Report link to view the results. See “Viewing Accepted Baseline<br />

Reports” for details.<br />

3 To set thresholds for future load tests, click the set response time<br />

thresholds button or link. MeasureSetBound statements will be added to<br />

your script accordingly. See “Setting Response Time Thresholds” for<br />

details.<br />

4 To receive online performance data during load tests, you can establish a<br />

monitoring template. See “Monitoring server performance during tests”<br />

for details.<br />

5 If you want to see the output of write statements used in the test script<br />

(assuming their generation has been enabled) click the Virtual User<br />

Output Files link. See “Virtual User Output files” for details.<br />

6 If you are satisfied that you have confirmed the baseline performance of<br />

your application, click Yes.<br />

Note If the baseline test did not identify the correct baseline<br />

performance for your application, or if any errors occurred during<br />

the baseline test, click No. Then click the Customize Test button and<br />

repeat the steps outlined in “Customizing the test”.<br />

Defining Workload<br />

Prior to the execution of a load test, you must select the workload model you<br />

want to use for the test.<br />

You must select one of the following workload models:<br />

• Increasing<br />

• Steady State<br />

• Dynamic<br />

• All Day<br />

• Queuing<br />

• Verification<br />

Note Additionally, the number of concurrent virtual users per user<br />

type, the duration, and the involved agents must be defined.<br />

Specifying load test<br />

workload<br />

Procedure To specify workload for a load test:<br />

1 Click the Adjust Workload button on the SilkPerformer Workflow bar.<br />

SilkPerformer User Guide 27


1 GETTING STARTED<br />

Executing Load Tests<br />

2 Select the Workload model that best fits your needs and click the<br />

Workload Wizard button.<br />

3 Specify the simulation times of the load test and click next.<br />

4 The number of concurrent virtual users is calculated automatically when<br />

you specify the number of user sessions you expect per hour.<br />

In some cases it’s desirable to adjust the session time of user types to a<br />

particular duration. By adjusting a user type’s session time, throughput<br />

can be influenced on a per-virtual-user basis to meet particular load test<br />

requirements.<br />

5 After completing your specifications, the Workload Configuration dialog<br />

appears and allows you to change any of the load test’s parameters.<br />

Executing Load Tests<br />

The eighth step in conducting a SilkPerformer load test is to run a full load test.<br />

Based on the test script, multiple virtual users are run to test the target server. A<br />

large load test requires that an appropriate testing environment be set up in the<br />

local area network, including a full complement of agent computers to host the<br />

virtual users.<br />

It is essential that you carefully set the options for the appropriate type of test to<br />

be used to accurately define the necessary workload, and to enable generation of<br />

the types of test results that will be required to assess the performance of the<br />

server. The TrueLog On Error option helps you to visually inspect replay errors.<br />

With TrueLog On Error, the necessary log files are written to disk only when<br />

errors occur.<br />

Comprehensive information is provided to you while the load test is performed.<br />

This includes real-time information about agent computers, virtual users, and<br />

transactions—in real-time, as they are conducted. Real-time monitoring of the<br />

target server is available as a graph.<br />

If the test is configured as a verification run, the following options will be<br />

automatically set to the specified value:<br />

• A Baseline Report file will be automatically created.<br />

• The Stop virtual users after simulation time (Queuing Workload) option<br />

is off.<br />

• The Virtual user log files (.log) option is off.<br />

• The Virtual user report files (.rpt) option is on.<br />

• The Virtual user report on error files (.rpt) option is on.<br />

• The Compute time series data (.tsd) option is off.<br />

28 SilkPerformer User Guide


1 GETTING STARTED<br />

Exploring Test Results<br />

Running the load test<br />

Procedure To run a load test:<br />

1 Click the Run Test button on the SilkPerformer Workflow bar.<br />

The Workload Configuration dialog appears.<br />

2 If necessary, change the workload configuration for your load test. Then<br />

click Run to begin the test. See “Workload Definition” for details.<br />

3 While the test is in progress, you can monitor its progress and monitor<br />

server activity by viewing the tabular monitor view in SilkPerformer and<br />

the graphical monitor view in Performance Explorer. See “Monitoring<br />

Load Tests” for details.<br />

Exploring Test Results<br />

Exploring test results<br />

The ninth and final step in conducting a SilkPerformer load test is to display and<br />

analyze the results of the test to assess the performance of the server under test.<br />

For detailed information on exploring test results, please refer to “Exploring<br />

Test Results”.<br />

Procedure To explore test results:<br />

1 Click the Explore Results button on the SilkPerformer Workflow bar.<br />

The Workflow - Explore Results dialog appears.<br />

2 To view a report of the results from your load test, click the Baseline<br />

Report button or link. In such Summary reports, you can accept the<br />

results of any previous test as your baseline. See “Viewing Baseline<br />

Reports” for details.<br />

3 If you want to see the accepted baselines so far, click the Accepted<br />

Baseline Report button to view the results. See “Viewing Accepted<br />

Baseline Reports” for details.<br />

4 If the previous load test produced errors and the TrueLog On Error<br />

option has been enabled, you can inspect the errors with TrueLog<br />

Explorer. See “Visual Analysis with TrueLog Explorer” for details.<br />

5 To view a graphic display of the results from your load test, click the<br />

Performance Explorer button or link. See “Performance Explorer” for<br />

details.<br />

SilkPerformer User Guide 29


1 GETTING STARTED<br />

Exploring Test Results<br />

30 SilkPerformer User Guide


2<br />

Configuring 2Chapter<br />

SilkPerformer<br />

Introduction<br />

What you will learn<br />

This chapter explains how to configure SilkPerformer settings.<br />

This chapter contains the following sections:<br />

Section<br />

Page<br />

Overview 31<br />

SilkPerformer Workbench 32<br />

SilkPerformer Recorder 39<br />

Application Profiles 41<br />

Proxy Settings 45<br />

Remote Agents 48<br />

Client Certificates 52<br />

Java Configuration 55<br />

Overview<br />

The SilkPerformer configuration options provide the opportunity to set global<br />

SilkPerformer settings that are not associated with a particular project.<br />

“SilkPerformer Workbench”: The basic characteristics of a SilkPerformer load<br />

testing configuration are set here—those related to the agent computers used in<br />

tests, the directories where files used in and generated by tests are located, the<br />

layout of the text of test scripts, and how results information is generated.<br />

“SilkPerformer Recorder”: The basic settings used by SilkPerformer's<br />

recording and script generating program, the SilkPerformer Recorder, are<br />

defined here. These include the settings for capturing and recording the network<br />

traffic that will be modeled in your load test scripts. Here, profiles are set up and<br />

SilkPerformer User Guide 31


2 CONFIGURING SILKPERFORMER<br />

SilkPerformer Workbench<br />

managed for the client applications that are to be used during data capture and<br />

recording. Proxies can be added or removed, and their settings edited. Here you<br />

can set the port for the integrated Web server that is used by the SilkPerformer<br />

Recorder, and enable recording to begin as soon as the client application starts.<br />

“Remote Agents”: SilkPerformer allows for remote agent computers to be<br />

located both in the LAN, out on the Internet, and even behind firewalls—<br />

connected through HTTP and SOCKS proxies. The communication between the<br />

remote agents and the controller can be configured to include secure, encrypted<br />

connections in a distributed secure environment.<br />

“Java Configuration”: Java Framework projects and Java based APIs require a<br />

Java SDK Environment. The Java SDK version, its location, and parameters<br />

such as class path and optional Java Virtual Machine settings can be configured<br />

here.<br />

SilkPerformer Workbench<br />

The basic characteristics of SilkPerformer load testing configuration are set<br />

from the System Settings dialog (Settings/System).<br />

Agent Pool<br />

The pool of agent computers that can be used with the controller computer can<br />

be set up and managed here. New agents can be added to the agent pool, either<br />

from the local network or from somewhere on the Internet, or existing agents<br />

can be removed. A wide range of system options for agent computers can be set,<br />

and their availability for service can be checked.<br />

Directories<br />

You can specify the directories where various types of SilkPerformer files are<br />

located. Default directories are set up during installation; you can specify<br />

alternative directories here. You can set locations for load testing scripts, for<br />

include files, for the various file types containing the results of load tests, and for<br />

user data files, certificate files, and random data files.<br />

Layout<br />

The way the editor behaves when you manually insert text into a script file can<br />

be customized; options can be set for formatting, printing, and how keywords<br />

are highlighted in the SilkPerformer tree view editor.<br />

Control<br />

The options for the multi-machine controller can be set in this area. Settings can<br />

be specified for the time interval within which a controller computer must<br />

communicate with an agent computer or a virtual user; if it fails, a timeout error<br />

will be reported. The frequency with which the controller will ping an agent<br />

computer until it receives a reply is set here, as can the number of virtual users<br />

per process and the number of transaction failures permitted for a virtual user<br />

before the user is terminated.<br />

32 SilkPerformer User Guide


2 CONFIGURING SILKPERFORMER<br />

SilkPerformer Workbench<br />

Configuring agent<br />

pool settings<br />

Results<br />

Use the Time series data option for merging time series data files (.tsd) on the<br />

agent computers where they were created and to ensure that only the merged<br />

files will be sent to the controller computer. This is especially useful for quickly<br />

processing the results of long load tests as the calculations will then be<br />

distributed to various processors and less traffic will be sent over the network.<br />

The drawback, however, is that time series data files for individual virtual users<br />

are not available on the controller computer.<br />

Note If you do not select this option, you manually have to merge<br />

the time series data files in Silk Performance Explorer in order to get<br />

overall results for the load test.<br />

Workspace<br />

This area is used to specify general settings for the Workbench. Workbench<br />

options include start-up settings, workflow settings, file handling, and the<br />

display of message boxes.<br />

Test Manager<br />

Use this area to set up a connection to SilkCentral Test Manager.<br />

Source Control<br />

Use this area to specify general SCC connection parameters. Click a specific<br />

item for detailed information.<br />

Procedure To specify SilkPerformer agent pool settings:<br />

1 From the SilkPerformer menu bar, select Settings/System.<br />

The System Settings dialog opens at the Agent Pool tab.<br />

2 Use the Agent Pool list to view the computers that are currently<br />

configured as part of the SilkPerformer agent pool.<br />

To add a computer to the default pool of agents associated with this<br />

controller computer:<br />

3 On a LAN network: Click the Add LAN Agent button.<br />

The Add LAN Agent dialog appears, listing all compatible agent<br />

computers that are available on the subnet.<br />

a From the Running agents list of computers in your local network,<br />

select the computer(s) you want to add to your agent pool.<br />

b Click the Add button.<br />

4 On a WAN network: Click the Add WAN Agent button.<br />

The Add WAN Agent dialog appears. Enter connection parameters for the<br />

WAN agent.<br />

a In the Host name or IP address field, enter the computer’s host name<br />

or IP address.<br />

SilkPerformer User Guide 33


2 CONFIGURING SILKPERFORMER<br />

SilkPerformer Workbench<br />

Configuring directory<br />

settings<br />

b If you want to add a computer from Windows domains outside your<br />

local network, click the browse (...) button.<br />

The Browse for Computer dialog appears.<br />

c Select the computer you want to add to the agent pool and click OK.<br />

d Click OK again on the Add WAN Agent dialog.<br />

5 To remove agent(s) from the default pool of agents associated with this<br />

controller computer, select them in the agent pool list and click the<br />

Remove button.<br />

6 In the ensuing SilkPerformer Message dialog, confirm that you want to<br />

remove the agent(s).<br />

7 To set configuration options for an agent computer, click the Manage<br />

button. This opens the System Configuration Manager, which allows you<br />

to set options for the selected agent computer, including configuring<br />

multiple IP addresses.<br />

8 To validate that a selected agent is available and active, click the Check<br />

Availability button, which will send a remote call to the agent.<br />

Procedure To specify directory settings:<br />

1 From the SilkPerformer menu bar, select Settings/System.<br />

2 Click the Directories tab.<br />

3 Use the File locations area to specify the directories where various<br />

SilkPerformer file types are stored. Default directories are set during<br />

installation.<br />

Click the button (...) to the right of each field to browse the directory<br />

structure and locate appropriate files and directories.<br />

4 In the Projects field, specify the directory where the project files are to<br />

be saved.<br />

5 In the User data files (.pem, .rnd, .csv, .txt, .idl) field, specify the<br />

directory where the system-defined user data files (.csv), certificate files<br />

(.pem), random data files (.rnd files), text files (.txt), and Interface<br />

Definition Language files (.idl) are to be stored. The compiler first<br />

searches for random data files in the directory where the .bdf file is<br />

located, then in this directory. To use a random data file from a different<br />

location, specify a full path for the file in your script file. This location is<br />

used for user data files that are delivered with SilkPerformer.<br />

6 In the Custom user data files (.pem, .rnd, .csv, .txt, .idl) field, specify the<br />

directory where your self-created user data files (.csv), certificate files<br />

(.pem), random data files (.rnd files), text files (.txt), and Interface<br />

Definition Language files (.idl) are located. In contrast to the specified<br />

34 SilkPerformer User Guide


2 CONFIGURING SILKPERFORMER<br />

SilkPerformer Workbench<br />

Configuring layout<br />

settings<br />

User data files location, this location is used for your own user data files.<br />

As with SilkPerformer pre-defined user data files, custom user data files<br />

in this directory can be shared across multiple projects.<br />

7 In the Include files (.bdh) field, specify the directory where the include<br />

files (.bdh files) are located. The compiler searches for include files first<br />

in the directory where the .bdf file is located, and then in this directory. If<br />

you want to use an include file from a different location, you can specify<br />

a full path in the use statement in your script for your include file.<br />

External function prototypes, internal functions, constants, random<br />

variables, and external function declarations are reusable in different<br />

script files when defined in include files. This location is used for include<br />

files that are delivered with SilkPerformer.<br />

8 In the Custom include files (.bdh) field, specify the directory where your<br />

self-created include files (.bdh files) are located. In contrast to the<br />

specified Include files location, this location is used for your own include<br />

files. As with SilkPerformer pre-defined include files, custom include<br />

files in this directory can be shared across multiple projects.<br />

9 In the Working field, specify the default directory for opening and saving<br />

load test scripts (.bdf files).<br />

Procedure To specify layout settings:<br />

1 From the SilkPerformer menu bar, select Settings/System.<br />

2 Click the Layout tab.<br />

3 Use the Editor area to customize how the editor behaves when you<br />

manually insert text into a script file.<br />

4 In the Tab. size field, enter the number of space characters that equal one<br />

tab character.<br />

5 Select the Auto indent option to automatically insert indents in your test<br />

script. Each time you create a new line in a script file, the line is<br />

automatically indented the same number of spaces as the previous line.<br />

6 Select the Replace tabs with spaces option to automatically insert four<br />

spaces each time a tab is used in a test script. This option makes it easier<br />

to view script files in a text editor.<br />

7 Click the Font & Colors button to select a font and style for<br />

SilkPerformer's script editor. You can select a different color to use for<br />

each type of content in a test script.<br />

The Editor Font and Colors Settings dialog opens.<br />

8 From the Text type list, select the type of text for which you want to<br />

adjust the font, size, style, and color.<br />

SilkPerformer User Guide 35


2 CONFIGURING SILKPERFORMER<br />

SilkPerformer Workbench<br />

Configuring control<br />

settings<br />

- Normal Text - Identifiers and symbols.<br />

- Keywords - Predefined statements.<br />

- Custom Keywords - Words added to the keyword list by the user.<br />

- Numbers - Whole numbers and floating-point values.<br />

- Comments - Notes in explanation included in a script.<br />

- Strings - Sequence of characters delimited by " characters.<br />

9 From the Font name, Font size, Style, and Color drop-down lists, select<br />

the format options you want to use for the currently selected text type.<br />

10 Click OK.<br />

11 Use the Printing area to specify options for how script files are formatted<br />

when they are printed. Select the Line number option to automatically<br />

number the lines in the printed script file.<br />

12 Select the Wrap marker option to automatically print a marker at the end<br />

of each line that wraps to the next line.<br />

13 Click the Font button to select a font and style for your printed test<br />

scripts. The Printer Font and Colors Settings dialog opens.<br />

14 From the Text type list, select the type of text for which you want to<br />

adjust the font, size, and style. (See step 8).<br />

15 From the Font name, Font size, and Style drop-down lists, select the<br />

format options you want to use for the currently selected text type.<br />

16 Click OK.<br />

17 Use the Custom keywords area to define custom keywords. For<br />

readability, keywords are highlighted in the SilkPerformer tree view<br />

editor.<br />

18 To enter a new custom keyword into the list, click the New button to the<br />

immediate right of the list heading. All keywords entered in the list are<br />

highlighted in SilkPerformer's tree view editor for readability.<br />

19 To remove a custom keyword from the list, select it and click the Delete<br />

button to the far right of the list heading.<br />

Procedure To specify control settings:<br />

1 From the SilkPerformer menu bar, select Settings/System.<br />

2 Click the Control tab.<br />

3 Use the Virtual users area to set options for running the virtual users in<br />

your load test. In the Virtual users per process field, insert the number of<br />

virtual users to be run within each system process.<br />

36 SilkPerformer User Guide


2 CONFIGURING SILKPERFORMER<br />

SilkPerformer Workbench<br />

4 In the Stop virtual users after __ transaction failures field, enter the<br />

number of transaction failures after which virtual users should be<br />

stopped.<br />

5 Use the Remote agent connection area to specify whether or not to<br />

optimize the controller-agent communication for local or wide area<br />

networks.<br />

Select the LAN option for the controller-agent communication to be<br />

optimized for a local area network. This is especially useful if all of the<br />

agent computers you are going to use for your load tests are located in<br />

the same local area network and all are using a fast connection.<br />

Select the WAN option for the controller-agent communication to be<br />

optimized for a wide area network. This is especially useful if you are<br />

going to use many agent computers that are located somewhere on the<br />

Internet.<br />

Select the Custom option for entering custom parameters for agentcontroller<br />

communication.<br />

Note Use the Custom option only if you run into problems with<br />

LAN or WAN settings.<br />

6 In the Connect field (enabled only when the Custom option is selected),<br />

enter the time, in seconds, in which the controller computer should try to<br />

establish a connection to each remote agent computer. If connection to an<br />

agent computer is not successful within this time interval, SilkPerformer<br />

will report it as an error.<br />

Note It is recommended that you not change this setting.<br />

7 In the Ping Interval field, enter the length of time, in seconds, within<br />

which the controller computer should attempt to retrieve load test status<br />

data from the agent computers. The controller computer requests this<br />

information from the agent computers whenever the contents of the<br />

Monitor window need to be updated. If the agent computer fails while<br />

receiving data during this time interval, SilkPerformer will report a<br />

warning.<br />

Note It is recommended that you not change this setting.<br />

8 Edit the time (in seconds) in the Command field (enabled only with the<br />

Custom option selected), in which the controller computer should try to<br />

send a command to a remote agent computer. If sending the command to<br />

the agent computer is not successful within this time interval,<br />

SilkPerformer will report it as an error.<br />

Note It is recommended that you not change this setting.<br />

SilkPerformer User Guide 37


2 CONFIGURING SILKPERFORMER<br />

SilkPerformer Workbench<br />

Configuring result<br />

settings<br />

Configuring<br />

workspace settings<br />

Procedure To specify results settings:<br />

1 From the SilkPerformer menu bar, select Settings/System.<br />

2 Click the Results tab.<br />

3 Select the Merge time series data on agents option in the Time series<br />

data area for time series data files (.tsd) to be merged in the agent<br />

computers where they were created and to ensure that only the merged<br />

files are sent to the controller computer. This is especially useful for<br />

quickly processing the results of long load tests as the calculations will<br />

then be distributed to various processors and less traffic will be sent over<br />

the network. The drawback, however, is that time series data files for<br />

individual virtual users are not available on the controller computer.<br />

Note If you do not select this option, you will have to manually<br />

merge the time series data files in Performance Explorer to get<br />

overall results for the load test.<br />

4 Click OK to exit the dialog and save your changes.<br />

Procedure To specify workspace settings:<br />

1 From the SilkPerformer menu bar, select Settings/System. Click the<br />

Workspace tab.<br />

2 Select the Open the last opened project file on startup option in the<br />

Workbench start options area to have the last load test project you<br />

worked on opened automatically each time you launch SilkPerformer.<br />

3 Use the Workflow options area to specify the display of the workflow bar.<br />

Select the Always enable all workflow buttons checkbox to enable all<br />

buttons in the workflow bar. By default, workflow buttons are enabled in<br />

sequence based on your progress through SilkPerformer’s workflow.<br />

4 Select the Show simple workflow checkbox to enable simple workflow.<br />

Simple workflow bypasses the baseline concept to make the load testing<br />

process quicker and easier.<br />

5 Check the Enable document file locking checkbox in the Document file<br />

options area to enable document file locking. The document file locking<br />

mechanism allows multiple users (on SilkPerformer Controller<br />

machines) to work simultaneously on the same document files (bdf script<br />

files, bdh include files, data files) without overwriting the files of each<br />

other. Locked document files from other users can still be used read-only.<br />

This option is enabled by default.<br />

38 SilkPerformer User Guide


2 CONFIGURING SILKPERFORMER<br />

SilkPerformer Recorder<br />

6 Click the Show All Messages button in the Uncheckable message boxes<br />

area to reset the display setting of all uncheckable message boxes to their<br />

default value so that all message boxes will be displayed again as long as<br />

you do not uncheck the corresponding setting.<br />

To specify Test Manager settings, see “Configuring Test Manager Integration”.<br />

To specify Source Control settings, see “Configuring Source Control<br />

Integration”.<br />

SilkPerformer Recorder<br />

The basic settings used by SilkPerformer's recording and script generation<br />

program, the SilkPerformer Recorder, include settings for capturing and<br />

recording the network traffic that will be modeled in your load test scripts.<br />

These settings comprise profiles that are applied to client applications during<br />

data capture and recording. Proxies can be added or removed, and their settings<br />

edited. You can set the port for the integrated Web server that is used by the<br />

SilkPerformer Recorder, and enable recording to begin as soon as the client<br />

application is started.<br />

Application profiles<br />

In configuring the SilkPerformer Recorder, a wide choice of options can be set<br />

for client applications to use during data capture and recording. New application<br />

profiles can be added and named; existing profiles can be edited, removed, or<br />

copied; and applications can be started. Options that can be set include the<br />

application path, working directory, program arguments, and application type<br />

for each application, as well as the method that the SilkPerformer Recorder is to<br />

use for recording traffic.<br />

Proxies<br />

New proxies can be set up on your computer, and existing proxies can be edited<br />

or removed. A wide number of options can be specified for each proxy,<br />

including the protocol type, the listen port, details of the server to which the<br />

SilkPerformer Recorder forwards intercepted traffic, and details concerning the<br />

client certificate that the SilkPerformer Recorder presents to the Web server.<br />

When a SOCKS proxy is being set up, automatic protocol detection can be<br />

disabled for any port you want to specify. Whenever a client application sends<br />

SOCKS traffic to one of these specified ports, the SilkPerformer Recorder<br />

records traffic at the TCP/IP level without trying to detect a familiar protocol<br />

first. A port range can be specified for which the recording of data by the<br />

SilkPerformer Recorder will be suppressed.<br />

Services<br />

Options can be set for the Web server that is integrated into SilkPerformer, and<br />

also for recording with the SilkPerformer Recorder. The port that the integrated<br />

Web server listens to can be specified, and you can use this server to retrieve the<br />

SilkPerformer User Guide 39


2 CONFIGURING SILKPERFORMER<br />

SilkPerformer Recorder<br />

Configuring<br />

application profile<br />

settings<br />

Configuring proxy<br />

settings<br />

Configuring services<br />

root CA certificate that signed the SilkPerformer Recorder server certificate.<br />

The root CA certificate may be downloaded from this Web site and installed into<br />

the Web browser to avoid security warnings by the browser. See “Client<br />

Certificates” for details.<br />

The SilkPerformer Recorder can be set to begin recording function calls<br />

automatically when an application is started from within the SilkPerformer<br />

Recorder.<br />

Procedure To specify application profile settings:<br />

1 From the SilkPerformer menu bar, select Settings/System. Click the<br />

Recorder icon.<br />

2 The Recorder group opens at the Application Profiles tab.<br />

3 Use the Application profile list to view the application profiles that are<br />

set up for recording network traffic, to add new application profiles, and<br />

to edit, remove, or copy existing profiles. You can also start applications<br />

from here.<br />

4 To add, edit, copy, or remove application profiles, or to start an<br />

application, see “Application Profiles”.<br />

Procedure To specify proxy settings:<br />

1 From the SilkPerformer menu bar, select Settings/System. Click the<br />

Recorder icon.<br />

2 Click the Proxies tab. Use the Proxies list to activate proxies, to add<br />

proxies, or to edit or remove existing ones.<br />

3 To activate, add, edit, remove, or copy a proxy, see “Proxy Settings”.<br />

Procedure To specify services settings:<br />

1 From the SilkPerformer menu bar, select Settings/System. Click the<br />

Recorder icon.<br />

2 Click the Services tab.<br />

3 Use the Integrated Web server area to change the port number of the Web<br />

server that is integrated into the SilkPerformer Recorder. The default<br />

address of the server is http://localhost:19100 (where 19100 is the<br />

default port number). You must have the SilkPerformer Recorder<br />

running to use this Web server.<br />

4 In the Port field, enter the port that the integrated Web server listens to.<br />

The default is 19100. Using the integrated Web server, you can retrieve<br />

the root CA certificate that signed the SilkPerformer Recorder server<br />

40 SilkPerformer User Guide


2 CONFIGURING SILKPERFORMER<br />

Application Profiles<br />

certificate. The root CA certificate may be downloaded from this Web<br />

server and installed into the Web browser to avoid security warnings by<br />

the browser. See “Client Certificates” for details.<br />

5 Select the Autostart recording option in the Recording area to start<br />

recording traffic and function calls automatically when SilkPerformer’s<br />

Recorder is started. If this option is disabled, you must use the Start<br />

Recording button on the SilkPerformer Recorder toolbar to begin<br />

recording.<br />

6 Click OK to exit the dialog and save your changes.<br />

Application Profiles<br />

Adding application<br />

profiles<br />

Procedure To add an application profile:<br />

1 From the SilkPerformer menu bar, select Settings/System.<br />

The System Settings - Workbench dialog appears, open at the Agent Pool<br />

tab of the Workbench group.<br />

2 Click the Recorder icon on the left of the dialog. The Recorder group<br />

opens at the Application Profiles tab.<br />

You can also reach this dialog by means of the Model Script button on<br />

the SilkPerformer Workflow bar and the ensuing dialog, or from the<br />

SilkPerformer Recorder.<br />

3 Click the Add button to add a new application profile to the list.<br />

The Application Profile dialog appears.<br />

4 In the Application profile field, enter a unique name for the application<br />

profile. The name is required to identify the application in the<br />

SilkPerformer Recorder window.<br />

5 In the Application path field, enter the name of the application's<br />

executable and the directory where it is located. To locate the executable,<br />

click Browse.<br />

6 Select the Record executable is different from application path option to<br />

enable recording of a process that is different from the specified<br />

application's executable. This may be required if the application is hosted<br />

by another process that powers the communication process.<br />

7 In the Record executable field, enter the name of the application's<br />

executable and the directory where it is located. To locate the executable,<br />

click Browse.<br />

SilkPerformer User Guide 41


2 CONFIGURING SILKPERFORMER<br />

Application Profiles<br />

8 In the Working directory field, enter the working directory of the<br />

application. The working directory is the folder that contains the<br />

application or some related files. Some applications need files located in<br />

other directories, so you may have to specify the folder where these files<br />

are located.<br />

9 In the Program arguments field, enter any number of application<br />

parameters. Passing parameters to an application is useful, for example,<br />

when recording the function calls performed by a command line tool that<br />

has no graphical user interface.<br />

10 From the Application type drop-down list, select the type of application<br />

traffic you want the SilkPerformer Recorder to capture:<br />

- Custom Application to have the SilkPerformer Recorder hook into a<br />

particular function library of the application, and capture and record<br />

all the traffic that the application generates.<br />

- MS Internet Explorer to have the SilkPerformer Recorder redirect<br />

traffic from Microsoft's Internet Explorer to the Recorder proxies.<br />

- Netscape Browser to have the SilkPerformer Recorder redirect<br />

traffic from your Netscape browser to the Recorder proxies.<br />

- Windows NT Service to have the SilkPerformer Recorder capture and<br />

record all traffic generated by a Windows service.<br />

11 Use the Protocol selection area of the dialog to specify the function<br />

library that you want the SilkPerformer Recorder to hook into.<br />

Note The options available here vary based on the selected<br />

application type.<br />

12 Select the Web option to have the SilkPerformer Recorder hook into a<br />

Web application, intercept all function calls, and display results.<br />

When the Web option is selected, you can click the Web Settings button<br />

to open the Web Settings dialog, which enables you to select the method<br />

that the Recorder is to use to capture Web and TCP/IP-based traffic.<br />

- Select the WinSock option to have the SilkPerformer Recorder hook<br />

into the WinSock function library of the client application, wrap all<br />

traffic the application produces in the SOCKS protocol, and redirect<br />

the traffic to a Recorder SOCKS proxy.<br />

- Select the Proxy option to have the SilkPerformer Recorder redirect<br />

all traffic from the selected browser to the Recorder proxies.<br />

Note: This is available only when MS Internet Explorer or Netscape<br />

Browser is selected in the Application type list box.<br />

42 SilkPerformer User Guide


2 CONFIGURING SILKPERFORMER<br />

Application Profiles<br />

- Select the SocksCap option to have the SilkPerformer Recorder use<br />

SocksCap to hook into the WinSock function library of the<br />

application for which you want to record traffic. SocksCap wraps all<br />

the traffic the application produces in the SOCKS protocol and<br />

redirects the traffic to a Recorder SOCKS proxy.<br />

Note: This is available only when SocksCap is installed and Custom<br />

Application, MS Internet Explorer or Netscape Browser is selected<br />

in the Application type list box.<br />

- When the Web option is selected you can also enable any available<br />

Java APIs by selecting the corresponding checkboxes in the field on<br />

the right of the dialog. The following Java APIs are available for<br />

selection:<br />

o Jacada<br />

o Java EJB (JBoss)<br />

o Java EJB (Other)<br />

o Java EJB (WebLogic)<br />

o Java EJB (WebSphere)<br />

o Java JNDI (Naming & Directory Interf.)<br />

o Java RMI (Custom Client-Server)<br />

o Jolt<br />

o Oracle Applications 11i<br />

o Oracle Applications 12i<br />

o Oracle Forms 6i<br />

o Oracle Forms 6i on HTTP/HTTPS<br />

o Oracle Forms 6i on Socket<br />

o Oracle Forms 9i<br />

o Product Manager Sample Extensions<br />

- When a Java API is enabled, you can click the Java Settings button<br />

to open a dialog that enables you to specify Java recording settings,<br />

such as the hooked Java Virtual Machine library or other settings.<br />

Select the Java Virtual machine hooking option to automatically<br />

hook into the Java VM. If this option is enabled, from the JVM DLL<br />

drop-down list you must select the dynamic link library you want the<br />

SilkPerformer Recorder to hook into for recording traffic.<br />

Select the Network only option to only hook class and jar files that<br />

SilkPerformer User Guide 43


2 CONFIGURING SILKPERFORMER<br />

Application Profiles<br />

are downloaded via HTTP.<br />

Select the Manual option if you have manually prepared a startup<br />

script for recording your Java application.<br />

13 Select the TCP/IP option to have the SilkPerformer Recorder hook into a<br />

TCP/IP application, intercept all function calls, and display the results.<br />

14 Select the IIOP option to have the SilkPerformer Recorder hook into the<br />

IIOP function library of the client application, intercept all the function<br />

calls, and display the results.<br />

15 Select the Citrix option to have the SilkPerformer Recorder hook into a<br />

Citrix application, intercept all function calls, and display the results.<br />

16 Select the ODBC option to have the SilkPerformer Recorder hook into<br />

the ODBC function library of the client application, intercept all function<br />

calls, and display the results.<br />

17 Select the DB2 CLI option to have the SilkPerformer Recorder hook into<br />

the DB2 CLI function library of the client application, intercept all<br />

function calls, and display the results.<br />

18 Select the Oracle OCI option to have the SilkPerformer Recorder hook<br />

into the Oracle function library of the client application, intercept all<br />

function calls, and display the results.<br />

Click the OCI Settings button to open a dialog that allows you to select<br />

the OCI client library that is to be hooked into for intercepting function<br />

calls. Select the appropriate library from the drop-down list and click<br />

OK.<br />

19 Select the Tuxedo option to have the SilkPerformer Recorder hook into<br />

the TUXEDO function library of the client application, intercept all<br />

function calls, and display the results.<br />

20 Select the COM option to have the SilkPerformer Recorder hook into a<br />

COM application, intercept all function calls, and display the results.<br />

Click the Interfaces button to open a dialog that allows you to select the<br />

server interfaces that should be used with the COM application. Select<br />

appropriate interfaces from the drop-down list and click OK.<br />

To add a new server interface, select the Add button on the Server<br />

Interfaces dialog.<br />

To delete a selected server interface from the list, select the Remove<br />

button on the Server Interfaces dialog.<br />

21 Select the ADO option to have the SilkPerformer Recorder hook into an<br />

ADO application, intercept all function calls, and display the results.<br />

22 Select SAPGUI option to have the SilkPerformer Recorder hook into<br />

functions of SAPGUI interfaces, intercept all the function calls, and<br />

display the results<br />

44 SilkPerformer User Guide


2 CONFIGURING SILKPERFORMER<br />

Proxy Settings<br />

23 Click OK to add the new profile to the Application Profiles list.<br />

Editing, copying, &<br />

removing profiles<br />

Procedure To edit, copy, or remove an application profile, or to start an<br />

application:<br />

1 At the Application Profiles tab in the Recorder group, select an<br />

application profile.<br />

2 Click the Edit or Copy button. The Application Profile dialog appears.<br />

3 Edit or copy the profile as necessary, based on the instructions detailed<br />

“Adding application profiles”<br />

4 To remove a selected application profile, click the Remove button.<br />

5 Click Yes on the confirmation dialog to remove the profile.<br />

Proxy Settings<br />

Configuring proxy<br />

settings<br />

Procedure To configure proxy settings:<br />

1 From the SilkPerformer menu bar, select Settings/System.<br />

The System Settings - Workbench dialog appears, open at the Agent Pool<br />

tab of the Workbench group.<br />

2 Click the Recorder icon on the left of the dialog. The Recorder group<br />

opens at the Application Profiles tab.<br />

3 Click the Proxies tab.<br />

4 Use the Proxies list to activate proxies, add proxies, edit proxies, or<br />

remove proxies.<br />

5 To activate a proxy, select the checkbox to the left of the proxy name.<br />

6 Click the Add button to set up a new proxy on the controller computer.<br />

You can set up proxies for recording a number of types of traffic, and you<br />

can have a number of proxies active at the same time.<br />

The Proxy Settings dialog appears.<br />

7 Use the Proxy type area to select a protocol type and a port for<br />

forwarding and recording traffic.<br />

8 From the Protocol drop-down list, select a protocol type for forwarding<br />

and recording traffic. You have to set up a proxy for each type of traffic<br />

you want to record. Forwarding and recording traffic with the following<br />

protocols is supported:<br />

- FTP - File Transfer Protocol<br />

- HTTP - Hypertext Transfer Protocol<br />

- LDAP - Lightweight Directory Access Protocol<br />

SilkPerformer User Guide 45


2 CONFIGURING SILKPERFORMER<br />

Proxy Settings<br />

- POP3 - Post Office Protocol<br />

- SMTP - Simple Mail Transport Protocol<br />

- SOCKS - When capturing SOCKS traffic, the SilkPerformer<br />

Recorder automatically detects other protocols like IIOP, FTP, POP3<br />

and SMTP for recording.<br />

- TCP/IP - (Custom Protocol) Custom protocol based on TCP/IP.<br />

9 In the Listen port field, enter the port number to which traffic will be sent<br />

by the traffic-generating client computer. Although any port not in use<br />

can be chosen, avoid standard port numbers (usually smaller than 1500).<br />

10 Use the Remote host area to specify the host name or the IP address, and<br />

the port of the server to which you want the SilkPerformer Recorder to<br />

forward intercepted traffic.<br />

11 Select the Any option to forward intercepted traffic to the host specified<br />

by the traffic-generating client computer.<br />

Select the Proxy/Firewall option to forward intercepted traffic to a<br />

specified proxy or firewall. In this case, the host name and IP address<br />

specified by the traffic-generating client computer are ignored.<br />

Select the Specified option to forward intercepted traffic to a specified<br />

remote host. In this case, the host name and IP address specified by the<br />

traffic-generating client computer are ignored.<br />

12 In the case of a specified remote host, select the Secure checkbox to<br />

record and forward Secure Socket Layer protocol traffic. If this option is<br />

selected, HTTPS traffic will be recorded instead of HTTP traffic, for<br />

example.<br />

13 In the Host name or IP address field, enter the host name or IP address of<br />

a specific server to which you want the SilkPerformer Recorder to<br />

forward intercepted traffic.<br />

14 In the Port field, enter the port number that a specific server—the one to<br />

which the SilkPerformer Recorder forwards intercepted traffic—listens<br />

to.<br />

15 Use the Client certificate area to select a client certificate that the<br />

SilkPerformer Recorder presents to the Web server on behalf of the real<br />

client's certificate. To use a client certificate, you must export it from the<br />

Web browser and place it in the Recorder's certificate store first.<br />

16 From the Certificate drop-down list, select a client certificate that the<br />

SilkPerformer Recorder is to present to the Web server on behalf of the<br />

real client’s certificate.<br />

46 SilkPerformer User Guide


2 CONFIGURING SILKPERFORMER<br />

Proxy Settings<br />

17 Click the View button to view detailed information about the client<br />

certificate currently in use. The information appears in the View<br />

Certificate dialog.<br />

18 Click the Import button to import a new client certificate from a<br />

certificate file (.p12, .pfx, or .pem). To use a client certificate, you must<br />

export it from the Web browser and place it in the SilkPerformer<br />

Recorder's certificate store first.<br />

19 The Open Certificate dialog appears. Use this dialog to locate and select<br />

the new client certificate that is to be imported.<br />

20 To remove the client certificate that is currently in use, click the Remove<br />

button.<br />

21 Click Yes on the confirmation dialog to remove the certificate.<br />

22 When setting up a SOCKS proxy, use the Record always at TCP/IP<br />

protocol level area to specify any number of ports for which to disable<br />

automatic protocol detection. Whenever a client application sends<br />

SOCKS traffic to one of the specified ports, the SilkPerformer Recorder<br />

records traffic at the TCP/IP level without attempting to detect a familiar<br />

protocol first.<br />

23 In the Within port range field, you can enter multiple port numbers and<br />

ranges, separated by commas (,); a range specification consists of the<br />

lower and upper boundary, separated by a hyphen (-).<br />

24 Use the Suppress recording (only forward data) area to specify a port<br />

range for which you want to suppress the recording of data by the<br />

SilkPerformer Recorder. The data will still be forwarded, however.<br />

25 In the Within port range field, enter a port range for which you want to<br />

suppress the recording of data by the SilkPerformer Recorder; the data<br />

will still be forwarded. You can enter multiple port numbers and ranges,<br />

separated by commas (,); a range specification consists of the lower and<br />

upper boundary, separated by a hyphen (-).<br />

26 Click OK.<br />

27 To edit a selected proxy, click the Edit button.<br />

The Proxy Settings dialog appears.<br />

28 Use steps outlined in this section to edit the selected proxy settings.<br />

29 To remove a selected proxy, click the Remove button.<br />

30 Click Yes on the confirmation dialog to remove the proxy.<br />

31 Click OK to exit the dialog and save your changes.<br />

SilkPerformer User Guide 47


2 CONFIGURING SILKPERFORMER<br />

Remote Agents<br />

Remote Agents<br />

Configuring remote<br />

agents, specifying<br />

port settings<br />

Configuring remote<br />

agents, specifying a<br />

password<br />

Configuring the<br />

controller connection<br />

SilkPerformer allows for remote agent computers to be located both in your<br />

LAN or somewhere out on the Internet. The communication between the remote<br />

agents and the controller can be configured in a distributed secure environment<br />

to include secure and encrypted connections.<br />

Communication between remote agents and the controller may be made in a<br />

variety of ways with a choice of proxies, including connections made through<br />

multiple firewalls and through TCP/IP, HTTP, or SOCKS firewalls. These<br />

connections include access through choices for secure or non-secure<br />

connections, with or without encryption.<br />

Procedure To configure remote agents and specify port settings:<br />

1 From the SilkPerformer menu bar, select Tools/System Configuration<br />

Manager.<br />

2 The System Configuration Manager dialog appears; click the Service<br />

Status tab.<br />

3 In the Port and Secure port fields, enter the numbers of the unsecured<br />

port and the secured port. By default these settings are 19200 for the<br />

unsecured port and 19201 for the secured port, respectively.<br />

4 Click OK.<br />

Procedure To configure remote agents and specify a password:<br />

1 From the SilkPerformer menu bar, select Tools/System Configuration<br />

Manager.<br />

2 The System Configuration Manager dialog appears; click the Service<br />

Status tab.<br />

3 To require that a password be used to secure controller/agent<br />

communication, click the Change button in the Password area. By<br />

specifying a password here, the controller must supply a password to be<br />

able to connect to that remote agent.<br />

4 After specifying a password, confirm the password, and then click OK.<br />

Procedure To configure how the controller connects directly to remote<br />

agents:<br />

1 From the SilkPerformer menu bar select Settings/System.<br />

2 The System Settings-Workbench dialog appears; click the Agent Pool tab.<br />

48 SilkPerformer User Guide


2 CONFIGURING SILKPERFORMER<br />

Remote Agents<br />

Connecting through<br />

TCP/IP firewalls<br />

3 In the Agent Pool tab you can choose to configure one of the agents you<br />

have already connected by choosing that agent from the window. Double<br />

click the name and computer icon for the agent you have already<br />

connected. If you have not yet chosen and named an agent to connect,<br />

then click the Add WAN Agent button. A LAN agent may also be added<br />

and configured at this time by choosing the Add LAN Agent button and<br />

choosing the agent from the list. After naming an agent, then proceed as<br />

you would for an agent already chosen, as follows:<br />

4 The Agent Connection Properties or the Add WAN Agent dialog appears,<br />

depending on if you are configuring an already chosen agent or adding a<br />

WAN agent; apart from the name in the name bar of the dialog box, these<br />

two dialog windows are the same. You have a number of options in this<br />

dialog for choosing how the controller connects to remote agents:<br />

- Security - Encryption (SSL): By checking this option, you force the<br />

controller to use a secure connection to the remote agent.<br />

- Security - Authenticate/Password: By checking this option and<br />

supplying a password, the controller will connect to the remote agent<br />

using a password. The password must be identical to the password<br />

you specified in the System Configuration Manager.<br />

- Connection - Connect to port: The controller connects to the agent<br />

using this port if you have turned off the security. The port must be<br />

identical to the Agent connection port you specified in the System<br />

Configuration Manager.<br />

- Connection - Connect to secure port: The controller connects to the<br />

agent using this port if you have turned on the security option. The<br />

port must be identical to the Agent connection secure port you<br />

specified in the System Configuration Manager.<br />

- Firewall - Use HTTP proxy server: The controller connects via an<br />

HTTP firewall to the agent by tunneling the controller/agent<br />

communication in the HTTP protocol.<br />

- Firewall - Use Socks proxy server: The controller connects via a<br />

SOCKS firewall to the agent by tunneling the controller/agent<br />

communication in the SOCKS protocol.<br />

Procedure To configure how the controller connects to remote agents<br />

through TCP/IP firewalls:<br />

1 From the SilkPerformer menu bar, select Tools/System Configuration<br />

Manager.<br />

2 The System Configuration Manager dialog appears; click the Service<br />

Status tab.<br />

SilkPerformer User Guide 49


2 CONFIGURING SILKPERFORMER<br />

Remote Agents<br />

3 In the Port and Secure port fields, enter the numbers of the unsecured<br />

port and the secured port. By default these settings are 19200 for the<br />

unsecured port and 19201 for the secured port, respectively. These port<br />

connections must be changed in order to tell SilkPerformer where it can<br />

go through the firewall if the port is open.<br />

4 If you want to change the port settings, the following examples may be<br />

helpful to you:<br />

Connecting through<br />

HTTP firewalls<br />

Ports to open on the firewall:<br />

- 20000: default connection port to SilkPerformer ACS<br />

- 20020: secure connection to ACS (you only have to open this port if<br />

you want a secure connection).<br />

- 20021, (20022*): for connecting to SilkPerformer Simulation<br />

Controller Agent and System Configuration Manager Agent. (Port<br />

20022* is only to be used if you want the System Configuration<br />

Manager and a Simulation Controller Agent to run simultaneously.)<br />

5 Click OK.<br />

Procedure To configure how the controller connects to remote agents<br />

through HTTP firewalls:<br />

1 From the SilkPerformer menu bar select Settings/System.<br />

2 The System Settings-Workbench dialog opens to the Agent Pool tab.<br />

3 In the Agent Pool tab you can choose to configure one of the agents you<br />

have already connected by choosing that agent from the window.<br />

Double-click the name and computer icon/image for the agent you have<br />

already connected. If you have not yet selected and named an agent to<br />

connect to, click the Add LAN Agent or Add WAN Agent button and<br />

proceed as follows:<br />

a<br />

After adding a LAN agent, double-click the name and computer<br />

icon/image for the agent you have just connected.<br />

b After naming a WAN agent, proceed as you would for an agent<br />

you’d already selected.<br />

4 The Agent Connection Properties or the Add WAN Agent dialog appears,<br />

depending upon whether you are configuring an already selected agent or<br />

adding a WAN agent (apart from the name in the name bar of the dialog,<br />

these two dialogs are the same).<br />

5 In the Firewall area of the dialog, check the Use HTTP proxy server<br />

option.<br />

50 SilkPerformer User Guide


2 CONFIGURING SILKPERFORMER<br />

Remote Agents<br />

Connecting through<br />

SOCKS firewalls<br />

6 You must then enter the address for the firewall in the Address field. The<br />

address and port number to be used can be obtained from your system<br />

administrator.<br />

7 In the corresponding Port field to the right of the Address field, you must<br />

add the port number through which SilkPerformer is to tunnel.<br />

8 Click OK.<br />

Procedure To configure how the controller connects to remote agents<br />

through SOCKS firewalls:<br />

1 From the SilkPerformer menu bar select Settings/System.<br />

2 The System Settings-Workbench dialog opens to the Agent Pool tab.<br />

3 In the Agent Pool tab you can choose to configure one of the agents you<br />

have already connected by choosing that agent from the window.<br />

Double-click the name and computer icon/image for the agent you have<br />

already connected. If you have not yet selected and named an agent to<br />

connect to, click the Add LAN Agent or Add WAN Agent button and<br />

proceed as follows:<br />

a<br />

After adding a LAN agent, double-click the name and computer<br />

icon/image for the agent you have just connected.<br />

b After naming a WAN agent, proceed as you would for an agent<br />

you’d already selected.<br />

4 The Agent Connection Properties or the Add WAN Agent dialog appears,<br />

depending upon whether you are configuring an already selected agent or<br />

adding a WAN agent; apart from the name in the name bar of the dialog,<br />

these dialogs are the same.<br />

5 In the Firewall area of the dialog, check the Use SOCKS proxy server<br />

option.<br />

6 You must then enter the address for the firewall in the Address field. The<br />

address and port number to use can be obtained from your system<br />

administrator.<br />

7 In the corresponding Port field to the right of the Address field, add the<br />

port number through which SilkPerformer is to listen.<br />

8 Click OK.<br />

SilkPerformer User Guide 51


2 CONFIGURING SILKPERFORMER<br />

Client Certificates<br />

Connecting through<br />

multiple firewalls<br />

Procedure To configure how the controller connects to remote agents<br />

through multiple firewalls:<br />

1 To configure a SilkPerformer agent connection so that it uses a SOCKS<br />

proxy and an HTTP proxy in a series, you must indicate the address and<br />

port number for each. The agent will first connect to the SOCKS proxy<br />

and then connect to the HTTP proxy. From the SilkPerformer menu bar<br />

select Settings/System.<br />

2 The System Settings-Workbench dialog opens to the Agent Pool tab.<br />

3 In the Agent Pool tab you can choose to configure one of the agents you<br />

have already connected by choosing that agent from the window.<br />

Double-click the name and computer icon/image for the agent you have<br />

already connected. If you have not yet selected and named an agent to<br />

connect to, click the Add LAN Agent or Add WAN Agent button and<br />

proceed as follows:<br />

a<br />

After adding a LAN agent, double-click the name and computer<br />

icon/image for the agent you have just connected.<br />

b After naming a WAN agent, proceed as you would for an agent<br />

you’d already selected.<br />

4 The Agent Connection Properties or the Add WAN Agent dialog appears,<br />

depending upon whether you are configuring an already selected agent or<br />

adding a WAN agent (apart from the name of the dialog, these dialogs<br />

are the same).<br />

5 In the Firewall area of the dialog, check the Use SOCKS proxy server<br />

option and the Use HTTP proxy server option.<br />

6 You must then enter the address and port number for the firewall in the<br />

corresponding Address and Port fields for each of the selected options.<br />

The address and port number to use can be obtained from your system<br />

administrator.<br />

7 After entering the information in both sets of fields, click OK to<br />

complete the configuration.<br />

Client Certificates<br />

A secure Web server can be configured to refuse clients that do not have a<br />

proper client certificate from a trusted certification authority. In such cases, the<br />

server asks the client to send its certificate before performing any requests. As<br />

long as the client certificate is signed by a trusted CA, the server does not care<br />

what the client is. If the Web server requests a client certificate, it is necessary to<br />

52 SilkPerformer User Guide


2 CONFIGURING SILKPERFORMER<br />

Client Certificates<br />

Installing client<br />

certificates<br />

Using a client<br />

certificate for<br />

recording<br />

export the client certificate from the Web browser and place it in<br />

SilkPerformer’s certificate store to be used for recording and replay.<br />

Procedure To install a client certificate:<br />

1 From the menu bar, select Settings/Active Profile.<br />

2 In the shortcut list on the left side, click the Internet icon.<br />

3 Switch to the Security tab.<br />

4 In the Client certificate area click Import and locate a certificate file of<br />

the formats .p12, .pfx, or .pem (e.g., C:\clientcert\ johndoe.pfx).<br />

Enter the password you used for encryption when exporting the<br />

certificate from your Web browser.<br />

Note: You have to export a client certificate from your Web browser<br />

before the SilkPerformer Recorder can import it.<br />

5 Click OK. This confirmation also creates a certificate file (.pem) in the<br />

SilkPerformer user data directory (e.g., \Working\Data\johndoe.pem).<br />

Note: The certificate's password/pass phrase is set to "Performer"<br />

(without the enclosing comma) when using SilkPerformer's Client<br />

Certificate Import facility.<br />

Each proxy connection set up in the SilkPerformer Recorder can be<br />

associated with a client certificate. The SilkPerformer Recorder presents<br />

the client certificate to the Web server on behalf of the actual client.<br />

Procedure To use a client certificate for recording:<br />

1 From the menu bar, select Settings/System.<br />

The System Settings – Workbench dialog opens.<br />

2 In the shortcut list on the left, click the Recorder icon.<br />

3 In the System Settings - Recorder dialog, click the Proxies tab.<br />

4 Click Add to set up a new proxy connection or select an existing proxy of<br />

your choice to be associated with a client certificate (e.g., SOCKS) and<br />

click the Edit button.<br />

5 Select an appropriate certificate from the Certificate drop-down list in<br />

the Client Certificate area (e.g., John Doe).<br />

If you have not imported any client certificates so far, follow the<br />

procedure for installing a client certificate, as shown above.<br />

6 Click OK.<br />

7 Restart the SilkPerformer Recorder before beginning recording.<br />

The SilkPerformer replay engine presents the client certificate to the Web server<br />

on behalf of the actual client.<br />

SilkPerformer User Guide 53


2 CONFIGURING SILKPERFORMER<br />

Client Certificates<br />

Replay within the GUI<br />

Replay using the<br />

scripting function<br />

Handling client<br />

certificates with the<br />

Web browser<br />

Exporting client<br />

certificates<br />

Procedure To use a client certificate for replay using the SilkPerformer<br />

GUI:<br />

1 From the menu bar, select Settings/Active Profile.<br />

2 In the shortcut list on the left, click the Internet icon<br />

3 Switch to the Security tab.<br />

4 In the Client certificate area select an appropriate certificate from the<br />

Certificate drop-down list (e.g., John Doe).<br />

If you have not imported any client certificates so far, follow the<br />

procedure for installing a client certificate, as shown above.<br />

5 Click OK.<br />

Procedure To use a client certificate for replay using the scripting function:<br />

1 Use the bdl function SslSetClientCert(). For example,<br />

SslSetClientCert(johndoe.pem).<br />

A secure Web server can be configured to refuse clients that do not have a<br />

proper client certificate from a trusted certification authority. If a Web server<br />

requests a client certificate, it is necessary to export the client certificate from<br />

the Web browser and place it in SilkPerformer’s certificate store.<br />

Since the SilkPerformer Recorder works as a proxy between a client and a Web<br />

server, and the replay engine represents the simulated client itself, successful<br />

connection to the server requires a certificate from the client. Therefore the<br />

certificate must be exported by the Web browser and imported into<br />

SilkPerformer.<br />

Note When obtaining a client certificate from a certification<br />

authority, be sure to allow the private keys to be exported with the<br />

certificate. Otherwise, the certificate will be useless for the Secure<br />

Internet Recorder.<br />

Internet Explorer 6 Procedure To export a client certificate from Internet Explorer 6:<br />

1 From Internet Explorer’s menu bar, select Tools/Internet Options.<br />

The General tab of the Internet Options dialog opens.<br />

2 Click the Content tab.<br />

3 In the Certificates area, click the Certificates button.<br />

The Certificate Manager dialog opens.<br />

4 From the list, select the certificate to export then click Export.<br />

Internet Explorer automatically starts the Certificate Manager Export<br />

Wizard. Using the wizard, perform all steps described to export your<br />

54 SilkPerformer User Guide


2 CONFIGURING SILKPERFORMER<br />

Java Configuration<br />

client certificate.<br />

Note: You have to export the private key with the certificate for the<br />

certificate to be usable with the SilkPerformer Recorder.<br />

5 In the Certificate Manager dialog, click Close.<br />

6 Click OK to close the Internet Options dialog.<br />

The certificate file (.pfx) can now be imported by the SilkPerformer Recorder.<br />

Netscape 7 Procedure To export a client certificate from Netscape 7:<br />

1 From the Netscape menu bar, select Edit/Preferences.<br />

The Preferences dialog opens.<br />

2 Select Privacy & Security/Certificates from the menu on the left side.<br />

The Certificates dialog opens.<br />

3 Click the Manage Certificates button.<br />

The Certificate Manager dialog opens.<br />

4 Click the Backup button.<br />

5 In the File Name To Backup dialog, enter a name of the certificate file.<br />

6 In the following dialog, enter the password protecting your Netscape<br />

software security device.<br />

7 Afterwards, fill out the Choose a Certificate Backup Password dialog by<br />

entering the password used for encrypting your certificate.<br />

8 Click OK to close the Netscape dialog.<br />

Java Configuration<br />

General Java<br />

environment settings<br />

Java Environment configuration is managed by SilkPerformer’s system settings<br />

and individual project profile settings. Both system settings and profile settings<br />

offer the same Java configuration options. System settings serve as default<br />

settings for new projects and new profiles within existing projects. However,<br />

during load tests virtual users use the Java Environment configurations of the<br />

profiles to which they are assigned. For detailed information about Java profile<br />

settings, please refer to “Java options”.<br />

Note See “Java Integration” for information on setting up Java<br />

testing projects using SilkPerformer’s Java Framework.<br />

The Java SDK version, its location on your hard drive, and the class path can be<br />

configured using general Java settings. When a class path contains well-known<br />

locations such as a project directory or data directory, these path parts are<br />

automatically replaced with placeholders. Placeholders are useful when<br />

SilkPerformer User Guide 55


2 CONFIGURING SILKPERFORMER<br />

Java Configuration<br />

migrating projects or running virtual users on agent machines where the<br />

directories have different names than on the controller machine.<br />

Advanced settings<br />

Procedure To configure general Java system settings:<br />

1 Select System from the Settings menu.<br />

2 Click the Java group icon.<br />

3 On the General tab, select the version number of the Java virtual<br />

machine from the Version drop-down list.<br />

4 Click the Browse (...) button to the right of the Java home field to select<br />

the installation directory of the Java Virtual Machine.<br />

5 In the Classpath field, specify the class path of the Java Virtual Machine.<br />

By default the class path is set to the system class path.<br />

6 Click the File button to navigate to a class file and add it to the class path<br />

for the Java Virtual Machine.<br />

7 Click the Dir button to navigate to a directory and add it to the class path<br />

of the Java Virtual Machine.<br />

8 (Optional) Click the Up and Dwn buttons to move selected files up or<br />

down incrementally in the class path hierarchy. Reorder the files as<br />

necessary.<br />

9 (Optional) Click the Remove button to remove a selected file from the<br />

class path.<br />

10 Select the Use system classpath checkbox to ensure that the system class<br />

path is used.<br />

11 Click OK to save your settings.<br />

Some Java classes require specific Virtual Machine options to run successfully.<br />

Tuning parameters may also be specified in VM parameters. The JIT (Just-In-<br />

Time) compiler can be disabled when required and non-standard VM DLLs can<br />

be specified. To ensure that the Java environment is set up properly, the<br />

configuration should be tested.<br />

Procedure To configure advanced Java settings:<br />

1 Select System from the Settings menu.<br />

2 Click the Java group icon.<br />

3 Select the Advanced tab.<br />

4 In the Command line options field, enter any command line options that<br />

are to be passed to the Java Virtual Machine.<br />

5 Select the Disable JIT compiler checkbox if you want to disable the Just<br />

In Time (JIT) compiler of the Java Virtual Machine.<br />

56 SilkPerformer User Guide


2 CONFIGURING SILKPERFORMER<br />

Java Configuration<br />

Adding data files<br />

6 Click the Browse (...) button to the right of the JVM dll field to navigate<br />

to the Dynamic Link Library (.dll) that implements the Java Virtual<br />

Machine that is to be used.<br />

7 Click the Check JVM button to verify your Java Virtual Machine<br />

configuration settings.<br />

8 Click OK to save your settings.<br />

When data files have typical Java archive file extensions, such as .jar and .zip,<br />

SilkPerformer Workbench offers to add the files to the class path of the currently<br />

active profile.<br />

SilkPerformer User Guide 57


2 CONFIGURING SILKPERFORMER<br />

Java Configuration<br />

58 SilkPerformer User Guide


3<br />

Configuring 3Chapter<br />

Projects<br />

Introduction<br />

What you will learn<br />

This chapter explains how to configure SilkPerformer load test projects.<br />

This chapter contains the following sections:<br />

Section<br />

Page<br />

Overview 59<br />

Project Profile Settings 60<br />

Test Scripts 119<br />

Data Files 120<br />

Agent Computers 121<br />

Workload Definition 121<br />

Outlining Projects 125<br />

Overview<br />

A SilkPerformer project contains all the resources that are required to complete<br />

a load test. These include a workload, one or more profiles and test scripts, data<br />

files, and a specific number of agent computers. Options for all of these<br />

resources are available directly in SilkPerformer’s project tree view.<br />

“Project Profile Settings”: When a project is set up, profiles can be added,<br />

copied, renamed, or deleted; and options can be specified for recording traffic,<br />

replaying load test scripts, and generating test results. Options for the different<br />

kinds of network traffic that can be simulated are also available.<br />

“Test Scripts”: Load test scripts can be added to or removed from projects, and<br />

scripts can be compiled.<br />

SilkPerformer User Guide 59


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

“Data Files”: It is important that all user data files (.csv), certificate files (.pem),<br />

random data files (.rnd), .idl files, and type library files (.tlb, .dll, .exe, .ocx, .olb,<br />

.pkg) required by test scripts be added to projects. Otherwise, they will not be<br />

available to remote agent computers during tests.<br />

“Agent Computers”: Agent computers on which load tests are run can be<br />

added—and existing agents can be removed.<br />

“Workload Definition”: Options for the workloads to be employed in load tests<br />

can be defined.<br />

Once you’ve configured load test properties, you’re ready for the first step in<br />

creating a load test: “Outlining a project”.<br />

Project Profile Settings<br />

A project profile contains many important project-specific settings. A project<br />

may contain as many different profiles as necessary, each with its own settings.<br />

New profiles can easily be added to projects; and existing profiles can be copied,<br />

renamed, or deleted.<br />

In each profile, options can be set for how the SilkPerformer Recorder generates<br />

test scripts from recorded traffic, and for the protocols that are used during<br />

recording. Simulation settings can be defined for script replay. Options for the<br />

results files that are generated during tests can be defined. Options are also<br />

available for the various types of network traffic that can be simulated: Internet,<br />

Web, CORBA/IIOP, COM, TUXEDO, Jolt, Database, Oracle Forms, Citrix,<br />

.NET, ADO, WAP, and Java.<br />

Specified settings are associated with specific load test projects. It is easy to<br />

switch between different projects, to edit projects, and to save projects so that<br />

they can be modified and reused later.<br />

Administering Profiles<br />

Adding profiles<br />

Procedure To add a profile:<br />

1 On the Project tab of SilkPerformer’s tree view window, right-click the<br />

Profiles folder.<br />

2 Select New Profile.<br />

3 The New Profile dialog appears. Enter a name for the new profile and<br />

click OK. The Profiles folder then expands, with the new profile<br />

appearing in the tree view.<br />

Alternative Select Project/New Profile from SilkPerformer’s menu<br />

bar.<br />

60 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

Activating profiles<br />

Editing profiles<br />

Renaming profiles<br />

Deleting profiles<br />

Copying profiles<br />

Procedure To activate a profile:<br />

1 In the tree-view area, right-click the icon of the profile that you want to<br />

have set as the active profile.<br />

2 Select Set as Active Profile from the context menu. The active profile<br />

appears in bold text.<br />

Procedure To edit a profile:<br />

1 In the tree-view area, right-click the icon of the profile for which you<br />

want to edit settings.<br />

2 Select Edit Profile from the context menu.<br />

The Profile Settings dialog appears.<br />

3 Edit settings as required. For help on editing settings, see specific help<br />

topics in this guide.<br />

4 Click OK to exit the dialog and save your changes.<br />

Procedure To rename a profile:<br />

1 In the tree-view area, right-click the icon of the profile that you want to<br />

rename.<br />

2 Choose Rename Profile. The Rename Profile dialog appears.<br />

3 Type a new name for the profile.<br />

4 Click OK.<br />

Procedure To delete a profile:<br />

1 In the tree-view area, right-click the icon of the profile you want to<br />

delete.<br />

2 Choose Delete Profile.<br />

3 Click Yes on the confirmation dialog to delete the profile.<br />

Procedure To copy a profile:<br />

1 In the tree-view area, right-click the icon for the profile you want to<br />

copy.<br />

2 Select Copy Profile from the context menu.<br />

3 A new profile then appears in the tree view, with the name Copy of<br />

.<br />

SilkPerformer User Guide 61


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

Recording options<br />

General options<br />

Procedure To set general record options:<br />

1 In the Project tab of SilkPerformer’s main tree view, expand the Profiles<br />

folder.<br />

2 Right-click the icon for the profile for which you want to configure<br />

settings.<br />

3 Select Edit Profile from the context menu. The Profile - [Loadtest] -<br />

Simulation dialog opens.<br />

Alternative Select Settings/Active Profile from the SilkPerformer<br />

menu bar.<br />

4 In the shortcut list on the left side, select the Record category and click<br />

the Script icon.<br />

5 On the General tab, select the Comments option to have the<br />

SilkPerformer Recorder automatically insert comments into the<br />

generated script. Comments are left-delimited by // symbols.<br />

6 Select the Commented functions option to mark in the generated test<br />

script the function calls that are performed to retrieve return parameters<br />

as comments.<br />

7 Select the Include think time option to generate ThinkTime function calls<br />

in the recorded script. These function calls produce delays that simulate<br />

typing time and thinking time in the recorded script to create a more<br />

realistic simulation.<br />

8 Enter a time (in milliseconds) in the Min. think time recorded field to<br />

define a lower limit for delays that will be included as ThinkTime<br />

function calls in the recorded script. Delays less than the time specified<br />

in the Min. think time recorded field will not expanded to ThinkTime<br />

function calls.<br />

9 In the Max. line length field, specify the maximum number of characters<br />

in a script line. This setting can be used to split large amounts of<br />

recorded data into several script lines.<br />

10 (optional) In the Script namespace field, you can enter a prefix for the<br />

names that are declared in the generated script. The user groups,<br />

transactions, timers, and variables defined in the script begin with the<br />

specified string.<br />

11 Select the Record passwords encrypted option to have the SilkPerformer<br />

Recorder automatically encrypt recorded passwords before inserting<br />

them into generated scripts.<br />

62 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

Protocol-specific<br />

options<br />

Procedure To set protocol-specific record options:<br />

1 Click the Protocols tab.<br />

2 In the Web comments area of the tab, specify details about automatically<br />

inserted comments (for Web functions) in the generated script. The<br />

settings for these options are only taken into account when the Comments<br />

option (General tab) for script generation is enabled.<br />

- Select the Redirection / Authentication option to have comments<br />

inserted into the generated script when a redirection (HTTP 302,<br />

HTTP 407) from one URL to another is recorded.<br />

- Select the HTTP errors option to have comments inserted into the<br />

generated script when HTTP errors (HTTP 4xx, HTTP 5xx) are<br />

recorded.<br />

- Select the Link, form, custom URL search details option to have<br />

comments inserted into the generated script when links, forms, or<br />

customs URLs are recorded.<br />

- Select the Detailed info for form fields option to have comments<br />

inserted into the generated script when hidden, changed, or filled out<br />

form fields are recorded.<br />

- Select the Custom URL parsing details option to have comments<br />

inserted into the generated script when parsing details of custom<br />

URLs are recorded.<br />

3 In the IIOP area of the tab, select the Generate IIOP Get functions option<br />

to include functions in your test script that will retrieve the return<br />

parameters of CORBA operation calls. You can mark the corresponding<br />

function calls as comments.<br />

4 Use the Database area of the tab to specify how SQL statements are<br />

displayed and whether to include fetched data in the generated test script.<br />

Select the SQL comment option to include SQL statements marked as<br />

comments in the generated test script immediately before the parse<br />

operation.<br />

5 Select the Trim SQL option to display SQL statements in the generated<br />

test script in a more readable format, with line breaks and indentation for<br />

SQL keywords.<br />

6 Select the Fetched data option to include the fetched data, marked as<br />

comments, in the generated test script immediately after the fetch<br />

operation.<br />

7 In the Max. number of rows field, enter the maximum number of data<br />

rows that are to be inserted as comments immediately after fetch<br />

operations.<br />

SilkPerformer User Guide 63


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

8 In the Max. column width field, enter the maximum width of columns<br />

inserted as commentary.<br />

Replay options<br />

Simulation options<br />

Procedure To set simulation options:<br />

1 In the Project tab of SilkPerformer’s tree-view, expand the Profiles<br />

folder.<br />

2 Right-click the icon of the profile you want to configure.<br />

3 Select Edit Profile from the context menu.<br />

The Profile - [Profile1] - Simulation dialog opens at the Replay category,<br />

Simulation tab.<br />

Alternative Select Settings/Active Profile from the SilkPerformer<br />

menu bar.<br />

4 Choose the Stress test option to disable the use of wait periods that are<br />

specified in browser-level functions or invoked by calling ThinkTime<br />

functions.<br />

5 Select the Random thinking time option to replace recorded actual<br />

thinking periods that are specified in browser-level functions or invoked<br />

by calling ThinkTime functions, with random values that follow an<br />

exponential distribution.<br />

6 Select the Think time limited to option to define a limit for think times. If<br />

this option is selected, think times will be limited to the specified<br />

maximum value. Enter an upper limit (in seconds) in the provided field.<br />

7 Select the Smooth transaction arrival rate (Queuing Workload) option to<br />

have each virtual user perform its transactions within the specified<br />

simulation interval. With this option selected, the simulation time period<br />

and the total number of transactions to be called determine the mean<br />

arrival interval of the transactions.<br />

When this option is disabled, SilkPerformer calculates the delay of each<br />

transaction arrival randomly.<br />

8 Select the Choose transactions randomly option to force the<br />

SilkPerformer simulation engine to execute all transactions defined in<br />

load test scripts in random order, based on SilkPerformer's queuing<br />

model.<br />

When this option is disabled, simulated virtual users perform their<br />

transactions exactly in the order in which they are defined in test scripts.<br />

64 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

Error-handling options<br />

9 Select the Stop virtual users after simulation time (Queuing Workload)<br />

option to cancel users when simulation time expires.<br />

10 Select the Call end transactions for stopped virtual users option to have<br />

stopped virtual users execute end transactions before stopping.<br />

When this option is disabled, virtual users complete their executions<br />

without calling end transactions.<br />

11 Select the Complete current transactions of stopped virtual users option<br />

to allow stopped virtual users to complete active transactions before<br />

stopping. When this option is selected, virtual users check whether to<br />

stop only at the beginning of each new transaction. Thus active<br />

transactions are completed before users stop.<br />

When this option is disabled, virtual users check if they should stop<br />

during think and wait times, while in the queue, and at the beginning of<br />

each transaction.<br />

12 Select the Stop virtual users when errors occur in begin transactions<br />

option to immediately stop virtual users when errors occur during test<br />

initialization (which usually occurs in begin transactions). This setting<br />

overrides the Call end transactions for stopped virtual users and<br />

Complete current transactions of stopped virtual users options.<br />

This setting is useful for tests that involve Connect operations that must<br />

be successful before tests can proceed.<br />

Procedure To set error-handling options:<br />

1 In the Project tab of SilkPerformer’s tree-view, expand the Profiles<br />

folder.<br />

2 Right-click the icon of the profile you want to configure.<br />

3 Select Edit Profile from the context menu.<br />

The Profile - [Profile1] - Simulation dialog opens at the Replay category,<br />

Simulation tab.<br />

4 Click the Errors tab.<br />

5 Use the Severity definition area to modify the severity of the simulation<br />

errors that SilkPerformer reports in its Monitor window.<br />

6 Click the Add button to add a custom severity definition to the list.<br />

The Edit Replay Errors and Warnings dialog appears.<br />

7 From the Module drop-down list, select the module that may cause the<br />

simulation error for which you want to define a custom level of severity.<br />

All errors of the selected severity are displayed below in the list.<br />

8 From the Severity drop-down list, select the default severity of the error<br />

for which you want to define a custom level of severity:<br />

SilkPerformer User Guide 65


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

- success - Error is ignored<br />

- informational - Error is ignored, but reported<br />

- warning - Error is ignored, but causes a warning<br />

- error - Error is treated as an error<br />

Note All errors of each selected severity are displayed in the below<br />

field.<br />

9 In the Error code field, enter the code of the error for which you want to<br />

define a custom level of severity. Alternately, you can select the<br />

respective error from the list above the field.<br />

10 In the Description field, enter a description for native errors.<br />

Descriptions of other simulation errors are predefined and cannot be<br />

modified by the user.<br />

11 From the Custom severity drop-down list, select the custom severity for<br />

the specified error:<br />

- success - Error is ignored<br />

- informational - Error is ignored, but reported<br />

- warning - Error is ignored, but causes a warning<br />

- error - Error is reported, but does not affect the simulation<br />

- transaction exit - Current transaction is aborted<br />

- process exit - Simulation of the user is terminated<br />

12 Click OK.<br />

13 To edit the custom severity of an error, select it from the error list and<br />

click the Edit button.<br />

The Edit Replay Errors and Warnings dialog appears.<br />

14 Edit the custom severity of the error as explained earlier in this<br />

procedure.<br />

15 To remove a custom severity definition from the list, select it from the<br />

error list and click the Remove button.<br />

16 Click OK to exit the dialog and save your changes.<br />

Result options<br />

General options<br />

Procedure To set general result options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

66 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

2 Right-click the icon for the profile for which you want to configure<br />

settings.<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, click the Results icon.<br />

5 Select the Replay category.<br />

6 Click the General tab.<br />

- Use the Results files area to specify the types of results files you<br />

want to generate. While the test is running, a separate file is created<br />

for each user in the current agent. Since generating results files will<br />

alter the time measures for your load test, these files should be<br />

created for debugging purposes only.<br />

- Select the Log files (.log) option to generate log files (.log), one for<br />

each user in the current agent. These files contain all the function<br />

calls invoked by the transactions of a specific user.<br />

- Select the Report files (.rpt) option to generate report files (.rpt), one<br />

for each user in the current agent. These files contain the simulation<br />

results for each user.<br />

- Select the Output files (.wrt) option to generate output files (.wrt),<br />

one for each user in the current agent. These files contain the output<br />

of write statements used in the test script. An output file is generated<br />

for a particular user only if that user executes write statements.<br />

- Select the True log files (.xlg) option to create an accurate view of<br />

data downloaded during a load test to be made available by means of<br />

TrueLog Explorer.<br />

- Select the Time series data (.tsd) option to enable generation of the<br />

throughput information used by SilkPerformer's Performance<br />

Explorer. You can specify the interval at which data is computed.<br />

- Select the Client-side measures in real-time option to enable<br />

SilkPerformer to retrieve real-time client-side measurements for use<br />

in Silk Performance Explorer. See the Silk Performance Explorer<br />

User Guide for full details.<br />

7 Use the Timer statistics area to specify time bounds, or limits, for use in<br />

results reporting. Several reports list the percentage of all the<br />

transactions completed within the time bound specified.<br />

SilkPerformer User Guide 67


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

Time series data<br />

8 In the Time bound 1 field, enter a first time bound, or limit, for use in<br />

results reporting. Several reports list the percentage of all the<br />

transactions completed within the time bound specified. This time bound<br />

is commonly set to the amount of time that represents the goal for the<br />

completion of the transaction being tested.<br />

9 In the Time bound 2 field, enter a second time bound, or limit, for results<br />

reporting. Several reports list the percentage of all the transactions<br />

completed within the time bound specified. This time bound is<br />

commonly set to the amount of time that should not be exceeded for the<br />

completion of the transaction being tested.<br />

Procedure To set options related to the generation of time series data:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon for the profile for which you want to configure<br />

settings.<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, click the Results icon.<br />

5 Select the Replay category.<br />

6 Click the Time Series tab.<br />

7 Use the Time series data area to specify options for the information used<br />

by SilkPerformer's Performance Explorer.<br />

8 From the Computation interval drop-down list, select the interval at<br />

which you want data to be calculated. This setting is used for all time<br />

series data generated. Keep in mind that the shorter the interval and the<br />

longer the load test, the more data will be generated.<br />

9 Select the Enable all measure groups option to generate high-level<br />

throughput information for all the measure groups shown in the list<br />

below. To choose a particular combination of measure groups for which<br />

you want to generate high-level throughput information, deselect the<br />

Enable all measure groups option, and select your options in the<br />

measure group list.<br />

10 Specify a Detailed Page Timers generation setting (For the whole page,<br />

For documents only, or Disabled).<br />

68 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

11 To define an overview report template for generating overview reports<br />

from Performance Explorer for this load testing project, click the browse<br />

(...) button in the Overview report template portion of the Time Series<br />

tab. From the Select template file dialog, select the overview report<br />

template (.ovt) file that you want to have applied to your SilkPerformer<br />

projects.<br />

The file that you specify here will be used as an overview report template<br />

for the generation of all overview reports for this load testing project.<br />

The template file name will also be preselected on the Overview Report<br />

Template workflow dialog when new overview reports are created<br />

manually.<br />

Monitoring options<br />

Procedure To set monitoring options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon for the profile for which you want to configure<br />

settings.<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, click the Results icon.<br />

5 Select the Replay category.<br />

6 Click the Monitoring tab.<br />

7 In the Monitoring options area, select the Automatically start monitoring<br />

option to automatically launch the monitoring facility of Performance<br />

Explorer when you start a load test. Performance Explorer will then<br />

display the server performance data relevant to the type of server that<br />

you are testing.<br />

- Select the Use default monitoring template option to activate the<br />

default monitor template.<br />

- Select the Use custom monitoring template option to use a custom<br />

monitor template.<br />

8 In the Performance monitor integration area, select the Compute online<br />

performance data option to compute data for additional performance<br />

measurements to be displayed in the Windows NT/2000 Performance<br />

Monitor. This data can be used to view the concurrent users, transaction<br />

throughput, data sent and received, and SQL statements executed.<br />

SilkPerformer User Guide 69


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

TrueLog options<br />

Procedure To set TrueLog options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon for the profile for which you want to configure<br />

settings.<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, click the Results icon.<br />

5 Select the Replay category.<br />

6 Click the TrueLog tab.<br />

7 To enable generation of TrueLog files (.xlg) during the recording<br />

session, select the TrueLog files (.record.xlg) checkbox. TrueLog files<br />

contain all traffic that is sent to and received from the server, and the<br />

transactions and function calls that are to be generated in the test script.<br />

Note TrueLog files should be created for debugging purposes only.<br />

8 Select the TrueLog files (.xlg) checkbox to generate a TrueLog file (.xlg)<br />

for each virtual user. These files contain all the function calls that are<br />

invoked by the transactions of a specific virtual user.<br />

9 To enable generation of TrueLog On Error files (.xlg), select the<br />

TrueLog On Error files (.xlg) checkbox.<br />

Note Truelog On Error files can be turned on for even large load<br />

tests where you expect a moderate number of errors without major<br />

impact on replay performance.<br />

10 Select the High-resolution timers for page statistics checkbox to enable<br />

SilkPerformer to use high-resolution timers for page statistics. Note that<br />

you can use the WebSetOption(WEB_OPT_HIGH_RES, x) function to<br />

adjust the resolution of these timers (the default is 100us).<br />

11 The options in the TrueLog On Error area of the dialog are only<br />

available when TrueLog On Error file generation has been enabled<br />

above.<br />

Specify how much information is to be stored in the TrueLog using the<br />

Store TrueLog options.<br />

- Select For one transaction to log the entire transaction in which each<br />

error occurrs. This option requires a significant amount of memory.<br />

70 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

General logging<br />

options<br />

- Select Based on content history to log a minimum of relevant data<br />

(based on data kept in the history) to the TrueLog. If browser-level<br />

calls are used, this setting will have no impact on the size of stored<br />

data. This selection requires minimal memory.<br />

12 From the Generate TrueLog On Error for drop-down list, select the<br />

severity level at which TrueLogs are to be generated (Errors, Severe<br />

errors, or Warnings). The default severity level is Errors.<br />

13 Select the Log all embedded objects option to log all embedded objects<br />

(images, java files, etc) in the TrueLog. Logged objects appear in the<br />

cached documents section of the TrueLog.<br />

14 Select the Exclude cached embedded objects option to only log<br />

embedded objects (images, java files, etc) that have been downloaded<br />

within the scope of the current log in the TrueLog. Objects may not be<br />

logged if they appear in the current log as a cache hit. Such objects may<br />

have been downloaded outside the scope of the current log. They may<br />

also no longer be present in the cache.<br />

15 Select the Exclude all embedded objects option to exclude all embedded<br />

objects (images, java files, etc) from being logged in the TrueLog. Note<br />

that optimal scalability is achieved by selecting this option.<br />

16 Click OK to save your settings.<br />

Procedure To set general logging options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon for the profile for which you want to configure<br />

settings.<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, click the Results icon.<br />

5 Select the Replay category.<br />

6 Click the Logging tab.<br />

7 Select the Log all option to include all available types of information in<br />

the generated log files. These files contain information about timers,<br />

transactions performed by the user, and function calls invoked by the<br />

transactions. However, keep in mind that creating log files can alter the<br />

time measures of the load test.<br />

SilkPerformer User Guide 71


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

Internet-specific<br />

logging<br />

8 Use the General area to specify which types of information to include in<br />

log files.<br />

- Select the Transactions option to include in the log file an overview<br />

of the transactions the user performs during the simulation.<br />

- Select the Timers option to include custom timer information in the<br />

log file.<br />

- Select the API calls option to include in the log file an overview of<br />

the SilkPerformer API calls that the user performs during the<br />

simulation.<br />

- Select the Informational option to include additional information—<br />

for example, connection information—in the log file.<br />

- Select the Data option to include in the log file the data that was<br />

exchanged with the server.<br />

- Select the Nonprintable characters option to include nonprintable<br />

characters, represented as dots, in the log file.<br />

Procedure To set Internet-specific logging options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon for the profile for which you want to configure<br />

settings.<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, click the Results icon.<br />

5 Select the Replay category.<br />

6 Click the Internet logging tab.<br />

7 Use the Data sent to server area to specify the level of detail at which<br />

data that SilkPerformer and the Recorder send to the server are written to<br />

the log file.<br />

- Select the HTTP client request header option to write to the log file<br />

all the client request headers sent to the server. This option is only<br />

available when recording HTTP traffic (not for replay).<br />

- Select the Header option to write to the log file all the headers<br />

included in requests that are sent to the server.<br />

- Select the Printable data option to write to the log file all the<br />

printable data included in requests that are sent to the server.<br />

72 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

ARM options<br />

- Select the Binary data option to write to the log file all the binary<br />

data included in requests that are sent to the server.<br />

- In the Max. number of lines field, specify the maximum number of<br />

lines to be written to the log file in the case of lines containing<br />

request data that are sent to the server.<br />

8 Use the Data received from server area to specify the level of detail at<br />

which the data that SilkPerformer and the Recorder receive from the<br />

server is written to the log file.<br />

- Select the HTTP response header to client option to write the client<br />

HTTP response headers (received from the server) to the log file.<br />

This option is only available when recording HTTP traffic (not for<br />

replay).<br />

- Select the Header option to write to the log file all the headers<br />

included in responses that are received from the server.<br />

- Select the Printable data option to write to the log file all the<br />

printable data included in responses that are received from the<br />

server.<br />

- Select the Binary data option to write to the log file all the binary<br />

data included in responses that are received from the server.<br />

- In the Max. number of lines field, specify the maximum number of<br />

lines to be written to the log file in the case of lines containing<br />

response data that are received from the server.<br />

9 Select the Images, applets, and Java classes option to write to the log file<br />

all the images, applets, and Java classes received from the server. If this<br />

option is selected, these items are represented as binary data.<br />

10 Select the TCP/IP connection information option to write additional<br />

information to the log file; for example, when connections to the server<br />

are established or closed.<br />

Procedure To set ARM options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon for the profile for which you want to configure<br />

settings.<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, click the Results icon.<br />

SilkPerformer User Guide 73


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

Recorder logging<br />

options<br />

5 Select the Replay category.<br />

6 Click the ARM tab.<br />

7 Use the Settings area to specify the types of ARM transactions that are to<br />

be reported.<br />

8 Select the Enable ARM for transactions checkbox to enable ARM<br />

transaction reporting for BDL transactions.<br />

9 Select the Enable ARM for custom timers checkbox to enable ARM<br />

transaction reporting for custom timers.<br />

10 Select the Enable ARM for page timers checkbox to enable ARM<br />

transaction reporting for page timers.<br />

Procedure To set SilkPerformer Recorder logging options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon for the profile for which you want to configure<br />

settings.<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, click the Results icon.<br />

5 Select the Replay category.<br />

6 Click the Hook logging tab.<br />

7 Select the Record category.<br />

8 Use the Hooking area to display—in SilkPerformer Recorder’s Log<br />

tab—all the function calls that the client application performs and the<br />

parameters that the client application passes to function calls.<br />

- Select the Function calls option to display—in SilkPerformer<br />

Recorder’s Log tab—all the function calls that the client application<br />

performs. You can also specify whether to display the function<br />

parameters.<br />

- Select the Function parameters option to display—in SilkPerformer<br />

Recorder’s Log tab—all the parameters that the client application<br />

passes to function calls. To enable this option, you must first select<br />

the Function calls option.<br />

9 Click OK to exit the dialog and save your changes.<br />

74 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

Real-time client-side<br />

measure options<br />

Procedure To enable real-time client-side monitoring for Silk Performance<br />

Explorer:<br />

1 Go to Settings/Active Profile.<br />

2 Select the Results group icon (in the Replay group).<br />

3 On the General tab, ensure that the Client-side measures in real-time<br />

checkbox is selected.<br />

4 Select the Real-time measures tab.<br />

5 Set the Computation interval to 5 sec.<br />

6 Select the Enable all measure groups checkbox to enable monitoring of<br />

all measure groups. Alternately, you can select specific measure types in<br />

the field below.<br />

7 Click OK to save your settings.<br />

Internet options<br />

Network options<br />

Procedure To set network-related options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon for the profile for which you want to configure<br />

settings.<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, click the Internet icon.<br />

5 Select the Replay category.<br />

6 Click the Network tab.<br />

7 Use the Modem area to specify which type of network device is to be<br />

simulated for Internet access.<br />

8 From the Bandwidth drop-down list, select the bandwidth of the network<br />

device to simulate for Internet access. SilkPerformer causes each virtual<br />

user to transfer data both to and from the server at the rate of the<br />

specified device. Note that, as with a real Web browser, multiple threads<br />

share the selected bandwidth. To use duplex bandwidth, where<br />

downstream and upstream bandwidths are different, select the Custom<br />

option.<br />

SilkPerformer User Guide 75


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

9 Check the Duplex option to set a different bandwidth for downstream<br />

and upstream traffic when you select a custom bandwidth of the network<br />

device to simulate for Internet access. Use the Downstream and<br />

Upstream fields to set the desired bandwidth.<br />

10 In the Downstream and Upstream fields, enter values [bits/sec] for the<br />

downstream and upstream bandwidth when you want to use the duplex<br />

option.<br />

11 From the Modem compression rate drop-down list, select the hardware<br />

compression rate of the simulated network device. SilkPerformer causes<br />

each virtual user to transfer data both to and from the server at the<br />

specified compression rate.<br />

12 From the Optimize network settings for drop-down list, select the type of<br />

simulation for SilkPerformer and WinSock buffers. This setting<br />

determines the size of the buffers used to transfer data both to and from<br />

the server. Large buffers provide good performance; however,<br />

SilkPerformer needs more memory to achieve this performance. Small<br />

buffers may be useful on driver machines with less memory. Note that,<br />

when using modem simulation, small buffers will create a more realistic<br />

load on the server.<br />

13 Use the Network area to specify network-specific settings.<br />

14 Select the Client IP address multiplexing option to enable IP address<br />

multiplexing. To assign individual IP addresses to virtual users, you first<br />

have to set up multiple IP addresses for the network device. You do this<br />

with the SilkPerformer System Configuration Manager. Afterwards, you<br />

can assign each of the IP addresses to a different virtual user.<br />

15 Select the Host name cache option for SilkPerformer to use its internal<br />

host name cache. If this option is selected, SilkPerformer stores the IP<br />

addresses of resolved host names and therefore does not need to contact<br />

the DNS server each time the replay engine requires a host's IP address.<br />

16 Select the Passive FTP semantics option to enable passive FTP<br />

semantics, which may be useful when connecting through firewalls or<br />

proxies. This option affects FTP data transfers only.<br />

17 In the Connect attempts field, enter how often a simulated user will<br />

attempt to connect to the server before an error is reported.<br />

18 In the Connect timeout field, specify for how long the simulated user will<br />

attempt to connect to the server before a timeout is reported.<br />

19 In the Send timeout field, specify for how long the simulated user will<br />

attempt to send data to the server before a timeout is reported.<br />

76 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

20 In the Receive timeout field, specify for how long the simulated user will<br />

attempt to receive data from the server before a timeout is reported.<br />

Host options<br />

Security options<br />

Procedure To set host-related options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon for the profile for which you want to configure<br />

settings.<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, click the Internet icon.<br />

5 Select the Replay category.<br />

6 Click the Hosts tab.<br />

7 In the Standardhost area, specify the server you want to use as the<br />

standard host. You can use either a domain name or an IP address. The<br />

name you specify will be used whenever the "standardhost" variable is<br />

included in load test scripts. Optionally, you can use the Port field to<br />

specify a port number to use with the standard host.<br />

8 In the SOCKS4 proxy area, use the Proxy name or IP address and Port<br />

fields to specify the host name or IP address, and also the port number,<br />

for a SOCKS4 proxy through which all Internet traffic will be directed.<br />

This option can be used, for example, when the traffic in a load test has<br />

to negotiate a firewall.<br />

Procedure To set security options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon for the profile for which you want to configure<br />

settings.<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, click the Internet icon.<br />

5 Select the Replay category.<br />

6 Click the Security tab.<br />

SilkPerformer User Guide 77


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

Recording options<br />

7 Use the Protocol area to specify protocol-specific settings used for<br />

secure connections to remote servers.<br />

8 From the SSL version drop-down list, select the Secure Socket Layer<br />

protocol version used when establishing a secure connection to the<br />

server.<br />

9 From the Encryption strength drop-down list, select the encryption<br />

strength for data transferred to and from the server over a secure<br />

connection.<br />

10 From the Certificate drop-down list in the Client certificate area, select<br />

the client certificate that SilkPerformer is to present to the Web server on<br />

behalf of the actual client. To use a client certificate, export it from the<br />

Web browser and place it in SilkPerformer's certificate store first.<br />

11 To view detailed information about the client certificate currently in use,<br />

click the View button.<br />

12 To import a new client certificate from a certificate file (.p12, .pfx, or<br />

.pem), click the Import button.<br />

13 Use the following dialog to navigate to and select the new client<br />

certificate.<br />

14 To remove the currently selected client certificate from the drop-down<br />

list, click the Remove button.<br />

15 Select the Force secure connection option to use the Secure Socket<br />

Layer protocol for replaying load tests. This is equivalent, for example,<br />

to replacing all the HTTP schemes with HTTPS in the URL’s of<br />

browser-level functions. It can be used to simplify how load tests are<br />

used to compare performance with and without the use of secure<br />

connections.<br />

Procedure To set recording options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon for the profile for which you want to configure<br />

settings.<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, click the Internet icon.<br />

5 Select the Replay category.<br />

6 Click the Recording tab.<br />

78 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

7 In the SMTP area, select the Enable SMTP data recording option to<br />

record mail body data exchanged between the client application and the<br />

mail server. To record SMTP traffic, set up an appropriate proxy<br />

connection on the Proxy tab (see “Proxy options” for details).<br />

8 Use the Recorder server certificate area to specify which server<br />

certificate you want the SilkPerformer Recorder to present to the client<br />

on behalf of the actual server.<br />

9 Select the Use custom server certificate option to have the SilkPerformer<br />

Recorder present a custom server certificate to the client instead of the<br />

default Recorder server certificate. Click the browse button (...) to the<br />

right of the field to locate the server certificate you want to use.<br />

10 In the Pass phrase field, enter the pass phrase that is to be used, if the<br />

server certificate you want the SilkPerformer Recorder to use is<br />

protected with a pass phrase.<br />

11 Select the Send root CA during SSL handshake option for the<br />

SilkPerformer Recorder to send the root CA certificate during the SSL<br />

handshake. The root CA certificate may be requested by a client to<br />

authenticate the certificate authority that signed the Recorder server<br />

certificate. Click the browse button (...) to the right of the field to locate<br />

the root CA certificate that you want to use.<br />

12 Click OK to exit the dialog and save your changes.<br />

Web Options<br />

Browser options<br />

Procedure To set browser-related options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon for the profile for which you want to configure<br />

settings.<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, click the Web icon.<br />

5 Select the Replay category.<br />

6 Click the Browser tab.<br />

SilkPerformer User Guide 79


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

7 Use the Browser type area to specify browser-specific settings. From the<br />

Browser drop-down list, select the Web browser you want to use for your<br />

simulation. The selection you make determines the format of the header<br />

information included in your HTTP requests and the threading model<br />

used for simulation.<br />

8 Select the Limit connections per server option to limit the connections on<br />

a per server basis (as real browsers do), e.g., two connections to one<br />

server, four connections to two servers.<br />

Note It is not recommended to use this option for browser-level<br />

API, as only the Max total connections value is considered.<br />

- In the Max concurrent connections to a HTTP 1.0 server field,<br />

specify the connection limit to every server using HTTP 1.0.<br />

- In the Max concurrent connections to a HTTP 1.1 server field, secify<br />

the connection limit to every server using HTTP 1.1.<br />

- In the Max total connections field, specify the absolute maximum<br />

number of connections, which the emulated browser opens. To<br />

perform an accurate connection simulation this value should be<br />

above the per server setting (above options).]<br />

9 Select the Limit connections per virtual user option to limit the<br />

connections on a per user basis (e.g., four connections to one server, four<br />

connections to two servers).<br />

- In the Max. concurrent connections field, specify the maximum<br />

number of simultaneous connections the client may establish to the<br />

server in the case of custom browsers. Since the server has to<br />

allocate more system resources for each connection, the server's<br />

performance decreases as the number of connections increases. In<br />

the same way as Web browsers, SilkPerformer uses one thread per<br />

connection to send and receive data concurrently. For singlethreaded<br />

(synchronous) operations, set this value to 1. For multithreaded<br />

simulations, choose a value between 2 and 32.<br />

Note Values are pre-defined for each selected Browser.<br />

You can only edit Max. concurrent connections if you select<br />

Custom from the Browser drop-down list.<br />

- Select the Single-threaded option to replay load tests using a single<br />

thread. This setting forces all browser-level functions to execute<br />

synchronously.<br />

10 From the HTTP version drop-down list, select the HTTP version of the<br />

browser to be simulated. This is typically HTTP/1.0.<br />

80 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

11 Select the Keep-Alive semantics option to set Keep-Alive for HTTP/<br />

HTTPS. Keep-Alive is a feature that, when supported by both browser<br />

and server, allows connections to remain intact after a request and<br />

response are completed.<br />

12 Select the Content-Encoding option to enable SilkPerformer to decode<br />

compressed data received from the server.<br />

If this option is enabled, SilkPerformer sends an Accept-Encoding<br />

header to inform the server that encoded data (by using gzip and deflate<br />

compression methods) can be submitted.<br />

13 In the User agent field, specify user agent information sent to the server<br />

in the case of custom browsers. This is typically the browser name,<br />

including platform information. This string is used for the HTTP request<br />

header “User-Agent:” that is sent using SilkPerformer's browser-level<br />

functions.<br />

14 In the Accept field, specify the document types that the server may send<br />

to the client in the case of custom browsers. This string is used in the<br />

HTTP request header “Accept:” that is sent using SilkPerformer's<br />

browser-level functions.<br />

15 In the Additional HTTP headers field, specify one or more additional<br />

headers, using exact syntax in the case of custom browsers. Use a new<br />

line for each header. These headers will be appended to each request that<br />

is sent using SilkPerformer's browser-level functions.<br />

Proxy options<br />

The proxy settings allow you to specify in which way SilkPerformer connects to<br />

the Internet. You can define one of the following methods:<br />

• Direct connection to the Internet: Connect to the Internet without using a<br />

proxy.<br />

• Connect simulated browsers through a proxy server: Connect to the<br />

Internet through a specific proxy server. You can specify separate<br />

proxies for HTTP, HTTPS, FTP, and SOCKS traffic.<br />

• Automatic proxy configuration URL: Connect to the Internet through<br />

dynamic proxy configuration. Dynamic proxy configuration is a<br />

technique used in Web browsers to determine a proxy for each request<br />

sent out from the Web browser to the Internet. Depending on the URL or<br />

the host to connect to, a proxy is dynamically determined.<br />

A PAC (Proxy Auto-Config) file is used for determining the proxy server<br />

for each request. A Proxy Auto-Config file tells the browser to load its<br />

proxy configuration information from a remote JavaScript file, rather<br />

than from static information you enter directly.<br />

For detailed information about the PAC file specification, please refer to<br />

http://wp.netscape.com/eng/mozilla/2.0/relnotes/demo/proxy-live.html.<br />

SilkPerformer User Guide 81


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

Procedure To set proxy-related options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon for the profile for which you want to configure<br />

settings.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

4 In the shortcut list on the left side, click the Web icon.<br />

5 Select the Replay category.<br />

6 Click the Proxy tab.<br />

7 Select one of the following:<br />

- Direct connection to the Internet: Connect to the Internet without<br />

using a proxy.<br />

- Connect simulated browsers through a proxy server: Connect to the<br />

Internet through a specific proxy server.<br />

o Click the Advanced button to open the the Proxy Settings dialog.<br />

o In the Internet access area, configure the Host name or IP<br />

address and Port of the proxy server for each protocol.<br />

Check Use the same proxy server for all protocols to use the<br />

same proxy for all Web traffic. Checking this setting enables<br />

Address and Port fields on the Profile - [Loadtest] - Simulation<br />

dialog.<br />

To change the SOCKS proxy settings, go to the Hosts tab of the<br />

Profile Settings - Internet dialog.<br />

o In the Exceptions area, list any host names, IP addresses, or<br />

subdomains for which you do not want to use the proxies<br />

specified in the Internet access area. This list can contain<br />

wildcards (*) that cause the application to bypass the proxy<br />

server for addresses that fit the specified pattern. To list multiple<br />

addresses and host names, separate them with semicolons.<br />

o Click OK to save your settings.<br />

- Automatic proxy configuration URL: Connect to the Internet through<br />

dynamic proxy configuration. Specify the location of the PAC file to<br />

be loaded.<br />

82 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

8 Click OK to save your proxy settings.<br />

Browser simulation<br />

Procedure To set browser simulation options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon for the profile for which you want to configure<br />

settings.<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, click the Web icon.<br />

5 Select the Replay category.<br />

6 Click the Simulation tab.<br />

7 Use the Simulation area to set options for realistic simulation of users<br />

who visit a Web site.<br />

8 Select the Simulate user behavior for each transaction option to order all<br />

virtual users to reset their browser emulation after each transaction.<br />

Depending on the additional option you select, SilkPerformer either<br />

simulates users who visit a Web site for the first time or users who revisit<br />

the site. While users who visit a site for the first time have no persistent<br />

cookies stored and no documents cached, users who revisit a page<br />

typically have closed their browsers between the Web site visits, have<br />

documents cached, and persistent cookies set. Disabling this option lets<br />

the virtual user emulate a Web browser that is not closed until the end of<br />

the load test, thus reusing cached information throughout multiple<br />

transactions.<br />

9 Select the First time user option to generate a realistic simulation of<br />

users who visit a Web site for the first time. Persistent connections will<br />

be closed, the Web browser emulation will be reset, and the document<br />

cache, the document history, the cookie database, the authentication<br />

databases, and the SSL context cache will be cleared after each<br />

transaction. In this case, SilkPerformer always downloads the complete<br />

sites from the server, including all files.<br />

10 Select the Revisiting user option to generate a realistic simulation of<br />

users who revisit a Web site. Persistent connections will be closed, and<br />

the document history, the non-persistent cookie database, the<br />

authentication database, and the SSL context cache will be cleared after<br />

each transaction. In this case, the users do not clear the document cache.<br />

SilkPerformer User Guide 83


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

For more details, review the WebSetUserBehavior function in the BDL<br />

Function Reference.<br />

11 Use the User tolerance area to adjust the advanced options of the user<br />

tolerance simulation.<br />

12 Use the slider to adjust the tolerance level of the simulated user.<br />

Click the Customize button to open a dialog that enables you to alter the<br />

individual behavior of the selected user tolerance level.<br />

Advanced User Tolerance dialog:<br />

Use the Loading times tolerance area to specify the user tolerance<br />

regarding the loading times.<br />

- Select the If no data arrives after option to make the virtual user<br />

react if the server does not respond at all in a given time frame.<br />

Also specify the maximum time in seconds a user is willing to wait if<br />

the server does not respond.<br />

- Select the If document is not complete after option to make the<br />

virtual user react if the first document (root) is received, but the<br />

HTML content (frames) is not completely loaded within a given<br />

time frame.<br />

Also specify the maximum time in seconds a user is willing to wait if<br />

the first document (root) is received, but the HTML content (frames)<br />

is not complete.<br />

- Select the If page is not complete after option to make the virtual<br />

user react if the HTML content (documents) is received, but the<br />

embedded objects are not completely loaded within a given time<br />

frame.<br />

Also specify the maximum time in seconds and user is willing to<br />

wait if the HTML content (documents) is received, but the<br />

embedded objects are not completely loaded.<br />

- Select the If the pure image load time exceeds option to make the<br />

virtual user react if the loading time of the embedded objects<br />

exceeds a given time frame (The timer starts, when the last HTML<br />

document is received.<br />

Also specify the maximum time in seconds a user is willing to wait<br />

for the loading of all embedded objects. This time starts, when the<br />

last HTML document is loaded.<br />

- Specify Reload times to define how many times the user presses the<br />

Refresh button when timeouts occur.<br />

84 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

- Select the Continue waiting option if the user is to continue to wait if<br />

the timeout occurs and the page has already been retried the<br />

specified number of times; unlimited or until another timeout occurs.<br />

- Select the Abandon option if the user should press the stop button<br />

(abandon) when a timeout occurs and the page has already been<br />

retried the specified number of times.<br />

- Select the Wait additional option if the user is to wait an additional<br />

amount of time if the timeout occurs and the page has already been<br />

retried the specified number of times. If this time expires too, the<br />

user will press the stop button (abandoning the load).<br />

Also specify the number of seconds that the virtual user is to wait<br />

before pressing the stop button.<br />

Browser<br />

authentication<br />

Use the Error tolerance area to specify user tolerance regarding<br />

errors on a page.<br />

- Select the Retry option to make the virtual user react to errors in the<br />

page.<br />

- Specify how often the user is to press the Refresh button in the case<br />

of errors.<br />

- Select the Page option to have the user press the Refresh button on<br />

any error in the page (e.g., a missing image).<br />

- Select the Documents option to have the user press the Refresh<br />

button only when errors in the document portion of the page. (e.g., a<br />

missing frame) occur.<br />

Use the browser authentication settings if you want all VUsers to login with the<br />

same credentials. If you want each VUser to connect with different login<br />

credentials, we recommend that you specify the credentials with project<br />

attributes (see Project Attributes Overview in the BDL Function Reference for<br />

detailed information) or that you use script customization through data files (see<br />

“Data Files” for detailed information).<br />

Procedure To set browser authentication options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon for the profile for which you want to configure<br />

settings.<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

SilkPerformer User Guide 85


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

Browser emulation<br />

4 In the shortcut list on the left side, click the Web icon.<br />

5 Select the Replay category.<br />

6 Click the Authentication tab.<br />

7 Use the User authentication area to enter a user name and a password for<br />

user authentication when connecting to a remote server.<br />

8 In the User name field, enter a user name for authentication when<br />

connecting to a protected server.<br />

9 In the Password field, enter a password for authentication when<br />

connecting to a protected server.<br />

10 Use the Proxy authentication area to enter a user name and a password<br />

for proxy authentication login required when connecting to the Internet<br />

through a proxy server.<br />

11 In the Login name field, enter a user name for the proxy authentication<br />

required when connecting to the Internet through a protected proxy<br />

server.<br />

12 In the Password field, enter a password for the proxy authentication<br />

required when connecting to the Internet through a protected proxy<br />

server.<br />

Procedure To set browser emulation options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon for the profile for which you want to configure<br />

settings.<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, click the Web icon.<br />

5 Select the Replay category.<br />

6 Click the Emulation tab.<br />

7 Use the Emulation area to set options for realistic emulation of a Web<br />

browser.<br />

8 Select the Accept cookies option to store cookies in SilkPerformer's<br />

cookie database for each virtual user. Note that the cookie database is<br />

non-persistent and exists only as long as a load test is running.<br />

86 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

9 Select the Allow automatic redirections option for SilkPerformer to<br />

automatically parse redirection responses and redirect the request to the<br />

specified server. In addition, if this option is selected, SilkPerformer uses<br />

the user name and password entered on the Authentication tab for<br />

automatic authentication to the server whenever necessary.<br />

In the field to the right of the checkbox, enter the maximum number of<br />

automatic redirections. SilkPerformer automatically parses redirection<br />

responses and redirects the request to the specified server.<br />

10 Select the Automatically load images option for SilkPerformer to<br />

download images from the server. Deselecting this option may be useful<br />

if you are interested in testing dynamic parts of the Web application.<br />

Usually images are static objects that stress the network more than the<br />

server. Note that ignoring images is a trade-off in the realism of the test.<br />

11 Use the Document cache and history area to specify whether to emulate a<br />

document cache. SilkPerformer can emulate a document cache by<br />

keeping local copies of frequently accessed documents, thus reducing the<br />

time connected to the network.<br />

12 Select the Document cache option to have SilkPerformer emulate a<br />

document cache. A document cache is used to keep local copies of<br />

frequently accessed documents and thus reduce the number of hits on the<br />

server.<br />

For more details, review the WebSetDocumentCache function in the<br />

BDL Function Reference.<br />

13 Select the Once per session option to check once per session whether a<br />

page has changed on the Web server since the virtual user last viewed it.<br />

The term of a session is the sequence of starting a Web browser, surfing<br />

the Web, and closing the Web browser. The correlation of a session to<br />

SilkPerformer transactions can be adjusted with the Simulate user<br />

behavior for each transaction option in the Simulation tab.<br />

“Once per session” works as follows: each time you start your Web<br />

browser, it will first look into its cache before sending a request. This<br />

request will either be: a conditional request (if the document resides in<br />

the cache and is requested for the first time in the session); a normal<br />

request (if the document cannot be looked up in the cache); or, a cache<br />

hit (if the document has already been requested in the session).<br />

Select the Every time option to always check if a page has changed on the<br />

Web server since the virtual user last viewed it. Documents with a future<br />

expiration date are not requested until their dates expire.<br />

The “Every time” strategy is slightly different from “Once per session”<br />

caching in that it checks for newer documents each time you reload a<br />

SilkPerformer User Guide 87


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

page.<br />

Recording options<br />

Select the Never option to never check whether a page has changed since<br />

the virtual user last viewed it. Selecting this option speeds up the display<br />

of pages the user has already viewed.<br />

14 In the Document history size field, enter the maximum number of pages<br />

to be stored in the history. If this amount is exceeded, the oldest page is<br />

dropped from the history. As long as a page is stored in the history, all<br />

HTML document related information (links, forms, embedded objects,<br />

frames) is kept in memory. As soon as the page is dropped from the<br />

history this information is no longer available. Therefore related<br />

WebPageLink and WebPageSubmit calls do not succeed and subsequent<br />

page-level calls to the same URL do not find the document in the cache<br />

any more.<br />

15 Select the Emulate DNS lookup option to have SilkPerformer emulate a<br />

DNS lookup mechanism for each virtual user, which can be helpful for<br />

DNS-based load balancing. When this option is combined with a user<br />

behavior option, it allows each virtual user to send its individual DNS<br />

query to the DNS server.<br />

For more details, review the WebSetOption function in the BDL Function<br />

Reference.<br />

Procedure To set recording options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon for the profile for which you want to configure<br />

settings.<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, click the Web icon.<br />

5 Select the Record category.<br />

6 Click the Recording tab.<br />

7 Use the Browser emulation level area to specify the level at which you<br />

want to record Web traffic for use in your test scripts.<br />

- Select the Page-based browser-level API (HTML / HTTP) option to<br />

record Web traffic at the browser level. If you choose this option the<br />

SilkPerformer Recorder generates scripts that call functions<br />

provided by the page-based browser-level API.<br />

88 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

- Select the Browser-level API (HTTP) option to record Web traffic at<br />

the browser level. If you choose this option the SilkPerformer<br />

Recorder generates scripts that call functions provided by the<br />

browser-level API.<br />

- Select the TCP/IP-level API (TCP/IP / HTTP) option to record Web<br />

traffic on the TCP/IP level. Select this option to capture proprietary<br />

protocols carried by HTTP.<br />

8 Select an Advanced context management level from the combo box.<br />

Click the View Settings button to view or customize the level of<br />

advanced context management.<br />

9 Select the Automatic page detection option to enable the page notion<br />

technology of the Recorder. When you use the page-based Web<br />

functions, this feature attaches embedded documents that are loaded by<br />

JavaScript code into a Web page. When you use the other browser-level<br />

functions, this feature wraps all the requests that load a Web page in<br />

WebUrlBeginPage and WebUrlEndPage function calls and so<br />

automatically creates page timers and synchronizes the downloading of<br />

Web pages for improved accuracy.<br />

10 Select the Convert URL query strings to forms option to convert recorded<br />

URL query strings to Web forms and then include the forms in the<br />

dclform section of the generated test script. You should disable this<br />

option only if the URLs are irregular.<br />

11 Select the Enable persistent-cookie recording for returning-user<br />

simulation option to have the Recorder generate a WebCookieSet<br />

function call at the beginning of the current transaction for each<br />

persistent cookie that you receive from the Web server. During a load<br />

test, each WebCookieSet function then emulates a cookie that is<br />

persistently stored in the virtual user’s cookie database.<br />

Note The WebCookieSet function calls are marked as comments—<br />

so you must remove the comment marks to activate the function<br />

calls.<br />

12 Select the Encapsulate concurrent pages using timers option to<br />

encapsulate concurrent pages with timers. Page timers, normally<br />

included in the page-based browser-level functions or in calls of the<br />

WebUrlBeginPage function, are not scripted. Instead, MeasureStart and<br />

MeasureStop functions are inserted automatically (based on timings).<br />

A series of browser activities is considered “concurrent” if there is no<br />

browser idle period longer than the value of the minimum thinktime<br />

recorded.<br />

SilkPerformer User Guide 89


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

Verification options<br />

13 Use the Record additional HTTP headers area to specify additional<br />

HTTP headers you want to record, such as those generated by a custom<br />

HTTP client.<br />

14 Click the Add button to add the name of an additional HTTP header you<br />

want to record, such as one generated by a custom HTTP client you are<br />

using. You must know the exact name of the header you want to record<br />

to use this feature.<br />

15 The HTTP Headers dialog appears. Enter the name of the header you<br />

want to add to the list, or select one from the drop-down list.<br />

16 Click OK.<br />

17 Click the Edit button if you want to edit the selected additional HTTP<br />

header.<br />

18 The HTTP Headers dialog appears. Edit the header as required.<br />

19 Click OK.<br />

20 Click the Remove button if you want to remove the selected additional<br />

HTTP header from the list.<br />

Procedure To set verification options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon for the profile for which you want to configure<br />

settings.<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, click the Web icon.<br />

5 Select the Replay category.<br />

6 Click the Verification tab.<br />

7 Use the Recording area to specify options for generating verification<br />

functions when recording a script based on captured Web traffic. Click a<br />

specific item for detailed information.<br />

8 Select the Record title verification option if you want the SilkPerformer<br />

Recorder to automatically generate a title verification function<br />

(WebVerifyHtmlTitle) for each Web page.<br />

90 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

9 Select the Record digest verification option if you want the<br />

SilkPerformer Recorder to automatically generate a digest verification<br />

function (WebVerifyDataDigest) for a response that can be in the form<br />

of one of the listed content types:<br />

- Select the All characters option to include in the digest all of the<br />

characters that are received in HTTP response messages from the<br />

Web server.<br />

- Select the Printable characters option to include in the digest only<br />

the printable characters that are received in HTTP response<br />

messages from the Web server.<br />

- Select the Alphanumeric characters option to include in the digest<br />

only the alphanumeric characters that are received in HTTP response<br />

messages from the Web server.<br />

- Use the Verify data of content type area to list all HTTP response<br />

content types for which to generate a response verification digest.<br />

- Click the Add button to add a new HTTP response content type that<br />

you want to use for response verification.<br />

The Response Content Types dialog appears.<br />

Enter the name of the new content type you want to add to the list, or<br />

select one from the drop-down list.<br />

Click OK.<br />

Click the Edit button to edit the currently selected HTTP response<br />

content type.<br />

The Response Content Types dialog appears.<br />

Edit the currently selected HTTP response content type.<br />

Click OK.<br />

Click the Remove button to remove the currently selected HTTP<br />

response content type from the list.<br />

Click OK to exit the dialog and save your changes.<br />

10 Use the HTML / XML area to enable HTML and XML document<br />

verification when replaying scripts based on Web traffic captured by the<br />

SilkPerformer Recorder.<br />

11 Select the Title verification option to enable SilkPerformer to verify the<br />

title of HTML documents. An operation (depending on the specified<br />

severity: error, warning, informational, custom) will be performed if the<br />

verification fails. The setting used here is valid for both the page-based<br />

browser-level API and the browser-level API (WebSetVerificationEx).<br />

If this option is selected, it will trigger the execution of the<br />

WebVerifyHtmlTitle function in the BDL script.<br />

SilkPerformer User Guide 91


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

12 Select the Table verification option to enable SilkPerformer to verify that<br />

a table within an HTML document contains some specific text. An<br />

operation (depending on the specified severity: error, warning,<br />

informational, custom) will be performed if the verification fails. The<br />

setting used here is valid for both the page-based browser-level API and<br />

the browser-level API (WebSetVerificationEx).<br />

If this option is selected, it will trigger the execution of the<br />

WebVerifyTable function in the BDL script.<br />

13 Select the Digest verification tolerance level option to verify the HTML<br />

content of a server response. Use TrueLog Explorer to generate<br />

WebVerifyHtmlDigest function calls.<br />

Enter the maximum difference in character frequency, quantified in<br />

bytes, that may occur between the server response that has been used by<br />

TrueLog Explorer to generate the HTML digest and the response that is<br />

received during replay. An operation (depending on the specified<br />

severity: error, warning, informational, custom) is performed, if the<br />

number of differing bytes exceeds this limit.<br />

14 Select the HTML verification option to enable SilkPerformer to verify<br />

that an HTML document contains some specific text. An operation<br />

(depending on the specified severity: error, warning, informational,<br />

custom) will be performed if the verification fails. The setting used here<br />

is valid for both the page-based browser-level API and the browser-level<br />

API.<br />

If this option is checked it will trigger the execution of the<br />

WebVerifyHTML and WebVerifyHTMLBound functions in the BDL<br />

script.<br />

15 Select the Link checking option to check the validity of links in HTML<br />

documents received while a load test is run. The HTML document is<br />

parsed on receipt, and additional requests are sent to check that links are<br />

valid. An error message is generated if a target pointed to by a link is<br />

invalid. This feature is available only in the page-based browser-level<br />

API.<br />

16 Select the XML verification option to enable SilkPerformer to verify, that<br />

an XML document contains some specific values or attributes. An<br />

operation (depending on the specified severity: error, warning,<br />

informational, custom) will be performed if the verification fails. The<br />

setting used here is valid for both the page-based browser-level API and<br />

the browser-level API.<br />

If this option is checked it triggers the execution of the<br />

WebXmlVerifyNodeValue and WebXmlVerifyNodeAttribute functions<br />

in the BDL script.<br />

92 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

HTTP body<br />

transformation<br />

17 Use the Data area to specify options for HTTP response verification<br />

when replaying a script based on Web traffic captured by the<br />

SilkPerformer Recorder.<br />

18 Select the Data verification option to enable SilkPerformer to verify that<br />

raw data received from the server contains certain specific data (e.g.,<br />

HTML source code containing some specific code). An operation<br />

(depending on the specified severity: error, warning, informational,<br />

custom) will be performed if the verification fails. The setting used here<br />

is valid for both the page-based browser-level API and the browser-level<br />

API.<br />

If this option is checked it triggers execution of the WebVerifyData and<br />

WebVerifyDataBound functions in the BDL script.<br />

19 Select the Digest verification tolerance level option to have<br />

SilkPerformer verify server response data during a load test. Note that<br />

the SilkPerformer Recorder generates the digests needed for verification.<br />

In the field to the right, enter the maximum difference in character<br />

frequency, quantified in bytes, that may occur between the response<br />

message received from the server during recording and the response<br />

message received during replay. If the number of bytes that differ<br />

exceeds this limit, SilkPerformer will report an error. The SilkPerformer<br />

Recorder creates digests only for the content types that are included in<br />

the Verify data of content type list.<br />

Procedure To install an HTTP body transformation:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon for the profile for which you want to configure<br />

settings.<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, click the Web icon.<br />

5 Select the Replay category.<br />

6 Click the Transformation tab.<br />

7 Select a transformation type from the Type drop-down list.<br />

8 Optionally, enter additional parameters for the transformation type.<br />

SilkPerformer User Guide 93


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

Note See the SilkPerformer Advanced Concepts book for details<br />

about valid parameters for the Flash Remoting transformation<br />

package that is pre-installed with SilkPerformer.<br />

9 Use the checkboxes to specify if the transformation should be applied to<br />

HTTP request bodies (Transform HTTP requests), HTTP response<br />

bodies (Transform HTTP responses), or both. Select the respective Log<br />

encoded checkboxes to additionally log the encoded HTTP response<br />

bodies.<br />

Terminal Client options<br />

Note SilkPerformer offers tutorials that walk you through the<br />

process of load testing terminal client applications (Load Testing<br />

IBM Mainframe Applications and Load Testing VT 100+<br />

Applications). These tutorials are available in Miscellaneous<br />

Tutorials (/Documentation/<br />

Tutorials/...).<br />

Terminal client<br />

options<br />

Procedure To set terminal client options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon of the profile for which you want to configure<br />

settings.<br />

3 Select Edit Profile from the context menu.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

4 In the shortcut list on the left, click the Terminal Client icon.<br />

5 Select the Record category.<br />

6 In the Telnet settings area of the Telnet tab, specify a telnet detection<br />

mode.<br />

- Select Always assume Telnet-mode to instruct the recorder to assume<br />

that each connection is a Telnet connection.<br />

- Select Auto-detect Telnet-mode to instruct the recorder to<br />

automatically detect Telnet on each new connection.<br />

- Select Never assume Telnet-mode to instruct the recorder to assume<br />

that no connections are Telnet connections.<br />

7 In the Command prompt string field, you can specify a command prompt<br />

string that is to be used by the recorder to script<br />

WebTcpipRecvPacketsUntilData functions wherever possible. This<br />

makes recorded scripts more effective for dynamic content.<br />

94 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

8 From the Log level drop-down list in the Terminal properties section of<br />

the dialog, select the appropriate logging level (None, Error, Normal, or<br />

Debug).<br />

9 From the Terminal type drop-down list select the supported terminal<br />

types. When correctly specified, the recorder scripts the appropriate<br />

terminal-type initialization functions and renders the screens to the<br />

TrueLog.<br />

10 In the Configuration string field, initialize the terminal emulator with a<br />

custom configuration string (see your terminal emulator documentation<br />

for available options).<br />

11 Use the Default screen fields to indicate the default appearance of the<br />

terminal screen to the recorder. The recorder will use these values if the<br />

actual values cannot be detected during session initialization.<br />

- Use the rows field to indicate the default height of the terminal<br />

screen. The recorder will use these values if the actual height cannot<br />

be detected during session initialization.<br />

- Use the columns field to indicate the default width of the terminal<br />

screen. The recorder will use these values if the actual width cannot<br />

be detected during session initialization.<br />

- Select the Colors checkbox to specify default color use on the<br />

terminal screen. The recorder will use these values if the use of<br />

colors cannot be detected during session initialization.<br />

12 In the Host code page field, specify the code page that is used by the<br />

server. The code page is used for various data conversions. The available<br />

code pages have been installed with the system. If the required code page<br />

is not listed, you may install it on the system. Ensure that the selected<br />

code page is also available on each agent computer.<br />

13 Click the Advanced tab.<br />

14 Select the Record basic functions option to prevent the recorder from<br />

scripting synchronized receive-functions, for example<br />

WebTcpipScreenRecvPacketsUntilCursor and<br />

WebTelnetScreenRecvRecordsUntilStatus. If enabled, scripted receive<br />

functions will not rely on rendered screen content. This option is enabled<br />

by default when a terminal type is not specified.<br />

GUI-Level Testing options<br />

General options<br />

Procedure To configure GUI-level testing settings for your project:<br />

1 Select Active Profile from the Settings menu.<br />

SilkPerformer User Guide 95


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

2 Scroll down and select the GUI-Level Testing group icon.<br />

3 The Session settings section of the General tab is used to configure the<br />

connection between your console session and remote desktop sessions.<br />

Select the Run TryScript on console checkbox to have SilkTest run a<br />

TryScript on the console application. When this option is enabled, you<br />

can view what SilkPerformer does during tests, but you are limited in<br />

what you can do on your computer because SilkTest uses your console.<br />

If disabled, TryScripts will connect to and run SilkTest on remote<br />

desktop sessions.<br />

4 Select the Allow usage of console session on agents checkbox if you do<br />

not have a terminal-server license for all agents, or if your agents run on<br />

Windows Home or Windows Professional editions. SilkPerformer only<br />

uses this option if the connection to a terminal services session fails, or if<br />

no user credentials are provided.<br />

Note When this option is selected, you can start only one virtual<br />

user on each agent (for agents that have no Terminal Server license<br />

and Windows Home/Professional systems).<br />

5 Define a Connection timeout (in seconds) to specify how long<br />

SilkPerformer should wait before a connection is established to remote<br />

desktops. Set this setting to '0' to have no timeout.<br />

6 Complete the Username/Password settings to enable automatic login if<br />

you only require a single set of login credentials. These credentials will<br />

be automatically loaded into StInitSession functions. These credentials<br />

can be overruled by scripted settings, e.g., providing parameters to the<br />

StInitSession function by using project attributes. See “Specifying user<br />

credentials” for more information.<br />

7 The Execution Settings portion of the dialog enables you to configure<br />

settings for the script and the runtime. Select the Log SilkTest errors<br />

checkbox to have errors and warnings that are sent back by SilkTest<br />

logged as informational warnings (this option is enabled by default).<br />

8 Select a TrueLog setting for the remote desktop session. From the<br />

Generate TrueLog file for drop-down list, select None (the default) to not<br />

have TrueLog written. Select On Error to have TrueLog written only<br />

when errors are encountered. Or select Custom when you wish to have<br />

TrueLog written based on your custom settings.<br />

If you select Custom TrueLog settings, your TrueLog settings will be<br />

read from the SilkTest option file, or they can be set via the StSetOption<br />

function.<br />

96 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

Note Even if you select OnError or Custom from the TrueLog on<br />

SilkTest drop-down list, SilkTest will only write TrueLog files if you<br />

also specify in SilkPerformer’s settings that TrueLog should be<br />

written. To do this, click the Generate TrueLog Files button or the<br />

Generate TrueLog On Error Files button on SilkPerformer’s<br />

toolbar.<br />

9 Specify an Execution timeout (in seconds) to specify how long the<br />

runtime should wait before test cases execute. Set this setting to '0' to<br />

have no timeout.<br />

10 Results history size (set to 9 by default) specifies how many test case<br />

results SilkTest can save in a .res file.<br />

Note By starting a new load test, the results in the .res file are reset.<br />

11 In the SilkTest option file field, browse to and select a SilkTest option<br />

file. See the Silk Online Help for full details about using option files.<br />

12 Click OK to save your settings.<br />

Oracle Forms options<br />

Note SilkPerformer offers a tutorial that walks you through the<br />

process of load testing Oracle Forms. The Oracle Forms tutorial is<br />

available at (/Documentation/<br />

Tutorials/...).<br />

Oracle Forms options<br />

Procedure To set Oracle Forms options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon of the profile for which you want to configure<br />

settings.<br />

3 Select Edit Profile from the context menu.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

4 In the shortcut list on the left, scroll down to and select the Oracle Forms<br />

icon.<br />

5 Select the Replay category.<br />

6 Oracle Forms clients can communicate with servers via Sockets, HTTP,<br />

or HTTPS. Select a Connection mode setting that reflects the server<br />

version and configuration you are testing.<br />

Note This setting can be overridden by the<br />

OraFormsSetConnectMode(connectMode) BDL function call.<br />

SilkPerformer User Guide 97


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

- Select Socket mode when the Oracle Forms server is set up for<br />

socket mode.<br />

- Select HTTP mode for Oracle Forms servers that are configured for<br />

HTTP connections.<br />

- Select HTTPS mode for Oracle Forms servers that are configured for<br />

secure HTTP connections.<br />

7 In the Connection timeout field, specify a timeout period (in seconds) for<br />

send and receive connections.<br />

8 To configure additional runtime settings, you can optionally have the<br />

virtual user send a heartbeat message to the server at a specified interval.<br />

Enter an interval (in seconds) in the sec field.<br />

9 Select the Automatically wait for application timers checkbox to direct<br />

the replay engine to wait for application timers to expire after each<br />

function call.<br />

10 The Application timer and window timeout setting specifies the<br />

maximum wait time for expiration of application timers and appearance<br />

of windows. When enabled, the replay engine waits for timers to expire<br />

after each function call. When this option is not enabled, a function<br />

named OraFormsWaitForTimer can be used to make an application wait<br />

for timers to expire. Maximum wait time is specified by this setting. The<br />

function OraFormsWaitForWindow may be used to have an application<br />

wait for windows to appear. This option specifies the maximum wait<br />

time for window appearance.<br />

11 Enter the Forms version you are working with. Oracle Forms clients<br />

send the required version when connecting to the Oracle Forms server.<br />

Create profiles and change this setting when testing applications<br />

deployed on different server versions.<br />

Note This setting can be overridden by the<br />

OraFormsSetInt("INITAL_VERSION", theVersion) BDL function<br />

call.<br />

12 Click the Logging tab. Here you can specify that additional properties<br />

have their values logged during replay.<br />

13 Set the Log level for virtual user logging:<br />

- None - No additional logs will be written (disables logging)<br />

- Error - Only errors that occur during replay will be logged.<br />

- Normal - Oracle Forms Messages will be logged.<br />

- Debug - Additional information will be logged (e.g., events).<br />

98 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

14 In the Additional properties field you can specify other properties for<br />

which virtual users are to log values.<br />

- Click Add to add a property that is to have its value logged during<br />

replay.<br />

- Click Edit to edit a selected property.<br />

- Click Remove to remove a selected property. No further values will<br />

be logged for this property.<br />

15 Click the Measuring tab. Here you can specify a custom measurement<br />

level. By default, all available performance metrics are collected during<br />

test runs.<br />

16 Select the Enable all timers and counters for all controls checkbox to<br />

enable all timers and counters for all actions on controls during replay.<br />

Or, select a specific control from the Control drop-down list and select<br />

the specific timer/counter types that you want to have applied to that<br />

control:<br />

- Enable timers - Measure how long it takes to complete an action on<br />

the selected control.<br />

- Count round trips - Count the round trips for each action on the<br />

selected control.<br />

- Count bytes - Count the bytes sent and received for each action on<br />

the selected control.<br />

- Count messages - Count the messages sent and received for each<br />

action on the selected control.<br />

Note Alternately, you can click the Apply to All Controls button to<br />

apply your timer/counter settings to all controls.<br />

17 Click OK to save your settings.<br />

SAP GUI options<br />

Note SilkPerformer offers a tutorial that walks you through the<br />

process of load testing SAP GUI applications. The SAP tutorial is<br />

available at (/Documentation/<br />

Tutorials/...).<br />

SAP GUI options<br />

Procedure To set SAP GUI options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

SilkPerformer User Guide 99


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

2 Right-click the icon of the profile for which you want to configure<br />

settings.<br />

3 Select Edit Profile from the context menu.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

4 In the shortcut list on the left, scroll down to and select the SAP GUI<br />

icon.<br />

5 Select the Record category.<br />

6 On the General tab you can define options for how the SAP Recorder<br />

records and replays scripts.<br />

7 Login to SAP systems involves several user interactions. With the Script<br />

logon as a single function option enabled, the recorder only scripts one<br />

function that performs all the required login actions.<br />

8 Select the Script low level functions option to use a basic set of scripting<br />

functions instead of object-specific functions.<br />

9 Select the Script timers option to script timers automatically. These<br />

timers are used for measuring SAP API calls.<br />

10 Select Attach to existing SAP session to have the recorder attach to an<br />

existing session rather than create a new session.<br />

11 Select the Record window title verification option to record<br />

SapGuiSetActiveWindow functions in such a way that title verifications<br />

are automatically performed on activated windows during test runs.<br />

12 Now select the Replay category to configure replay settings.<br />

13 In the Replay timeout field, specify a timeout period (in seconds) for<br />

automatic shutdown of SAPFewgsrv (when not otherwise closed at the<br />

end of test runs).<br />

14 Select the Show SAP GUI during replay checkbox to display the R/3<br />

client during test runs. GUI display is only an option with TryScript<br />

executions. This setting is ignored for baseline tests and load tests.<br />

15 Select the Enable client-side scripting option to enable SAP client-side<br />

scripting via the registry. This option disables warnings that raise pop-up<br />

windows when new users start.<br />

16 Select the User new SAP Visual Design option to enable SAP visual<br />

design for the SAP client.<br />

17 Click the Logging tab to specify additional log levels.<br />

Note These settings affect performance and resource utilization.<br />

18 From the Log level drop-down list, select a log level for virtual user<br />

logging:<br />

100 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

- Disable - Virtual user logging is disabled.<br />

- Normal - Default logging.<br />

- Debug - Detailed information is logged, such as additional session<br />

information and errors.<br />

19 Select the Capture screenshots option to generate screenshots for each<br />

activated window. Screenshot capture is only enabled for TryScript<br />

executions. This setting is ignored for baseline tests and load tests.<br />

20 Select the Capture screenshots for each action checkbox to have each<br />

action performed by the script documented with a screenshot. Screenshot<br />

capture is only enabled for TryScript executions. This setting is ignored<br />

for baseline tests and load tests.<br />

21 Select the Log control information in TrueLog option to have additional<br />

control information written to the TrueLog.<br />

22 Select the Log control information for single run in TrueLog option to<br />

have additional control information written to the TrueLog only for try<br />

script and verification tests.<br />

23 Select the Log control information on error option to enable writing of<br />

control information to TrueLogs in the case of errors.<br />

24 Select the Highlight controls checkbox to have controls highlighted as<br />

they are accessed by the script.<br />

25 Select the Measuring tab to specify a custom measurement level. By<br />

default, all available performance metrics are collected during test runs.<br />

26 Select the Enable all timers and counters for all controls checkbox to<br />

enable all timers and counters for all actions on controls during replay.<br />

Or, select a specific control from the Control drop-down list and select<br />

the specific counter types that you want to have applied to that control:<br />

- Count round-trips - The number of round-trips for the action on the<br />

control.<br />

- Count response time - The time it takes a function to return<br />

requested data.<br />

- Count Interpretation time - The time it takes to interpret a request.<br />

- Count flushes - The number of flushes per action.<br />

Note Alternately, you can click the Apply to All Controls button to<br />

apply your counter settings to all controls.<br />

27 Click OK to save your settings.<br />

SilkPerformer User Guide 101


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

Citrix options<br />

Note SilkPerformer offers a tutorial that walks you through the<br />

process of load testing Citrix-based applications. The Citrix tutorial<br />

is available at (/Documentation/<br />

Tutorials/...).<br />

Citrix options<br />

Procedure To set Citrix options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon of the profile for which you want to configure<br />

settings.<br />

3 Select Edit Profile from the context menu.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

4 In the shortcut list on the left, scroll down to and select the Citrix icon.<br />

5 Select the Replay category.<br />

6 In the Options area you can specify general Citrix options. In the<br />

Synchronization timeout field, enter a default synchronization timeout<br />

(in seconds) that is to be used by all CitrixWaitForXXX functions that<br />

don't specify a timeout value.<br />

7 Select the Force window position checkbox to make the calls to<br />

CitrixWaitForWindowCreation and CitrixWaitForWindowRestore move<br />

windows to the coordinates captured during recording. When this option<br />

is not selected, both functions provide a parameter (bForcePos) that<br />

enables this option for each individual call.<br />

8 Select the Disconnect on transaction end option to disconnect the Citrix<br />

client upon each transaction end (this includes the TInit transaction).<br />

9 You can specify Citrix logging options in the Logging area of the dialog.<br />

When TrueLog generation is enabled, at the end of each synchronization<br />

function a screenshot is made and written to the TrueLog. Select the Log<br />

screen before each user action option to also capture and write a<br />

screenshot at the beginning of each user action.<br />

10 The CitrixWaitForScreen function captures a screen region and checks it<br />

against a specified condition (normally it compares it to a hash value<br />

that's captured at recording). If the function call fails when the Dump<br />

window region on unsuccessful screen synchronization option is selected<br />

(i.e., if the condition still doesn't match and the timeout period has<br />

102 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

expired), the captured screen region will be written to a file in the result<br />

directory. This file can later be examined or compared to what was<br />

captured during recording for error analysis.<br />

11 Select the User RAM disk option to use a different drive for intermediate<br />

storage of images. If the specified drive is a RAM disk, TrueLog<br />

generation performance will improve. Select the drive letter of the RAM<br />

disk from the drop-down list.<br />

12 Click the Simulation tab.<br />

13 In the Mouse area of the dialog you can specify mouse options. In the<br />

Length of time mouse button remains pressed field, enter the length of<br />

time that the virtual user is to hold the mouse button in the pressed state<br />

(for CitrixMouseClick and CitrixMouseDblClick).<br />

14 In the Length of time between the clicks of a double-click field, enter the<br />

length of time that is to pass between the two clicks of a double click (for<br />

CitrixMouseDblClick).<br />

15 In the Mouse speed field, enter the speed at which the mouse is to move<br />

across the screen (pixels per second).<br />

16 In the Keyboard area of the dialog you can specify keyboard options. In<br />

the Length of time each key remains pressed field, enter the length of<br />

time that the virtual user is to hold a keyboard key in the down state (for<br />

CitrixKey and CitrixKeyString).<br />

17 In the Length of time between keystrokes when entering strings field,<br />

enter the length of time that is to pass between the individual key-strokes<br />

specified by the CitrixKeyString function.<br />

18 In the Key repeat time field, enter the time required for a complete key<br />

stroke when simulating repeat functionality (a value of 50 means 20 keys<br />

per second).<br />

19 In the Think times area of the dialog you can specify think time options.<br />

In the Delay after successful synchronization field, enter the length of<br />

time that virtual users are to remain inactive after passing a successful<br />

synchronization point (CitrixWaitForXXX).<br />

20 In the Delay after each user action field, enter the length of time that<br />

virtual users are to remain inactive between actions.<br />

21 Select the Citrix client tab to specify Citrix client options.<br />

22 From the Network protocol drop-down list, select which low-level<br />

network protocol is to be used to locate and connect to the MetaFrame<br />

server (see Citrix client documentation for more information).<br />

23 Select the Use data compression option to compress all transferred data.<br />

This reduces file size, but requires additional processor resources.<br />

SilkPerformer User Guide 103


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

24 Select the Use disk cache for bitmaps option to store commonly used<br />

graphical objects, such as bitmaps, in a local disk cache.<br />

25 Select the Queue mouse movements and keystrokes option to queue<br />

mouse and keyboard updates. This reduces the number of network<br />

packets that are sent from the Citrix client to the MetaFrame server.<br />

26 From the SpeedScreen latency reduction drop-down list, select an option<br />

for enhancing user experience on slower network connections. For<br />

slower connections (e.g., WANs) select On. For faster connections (e.g.,<br />

LANs), select Off. Set the mode to Auto to turn latency reduction on and<br />

off based on the latency of connections.<br />

27 From the Encryption level drop-down list, select a level of encryption for<br />

the ICA connection. The MetaFrame server must be configured to allow<br />

the selected encryption level, or higher.<br />

Note Using an encryption level other than the server default or<br />

Basic disables automatic logon to the MetaFrame server.<br />

.NET options<br />

.NET options<br />

Procedure To set .NET options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon of the profile for which you want to configure<br />

settings.<br />

3 Select Edit Profile from the context menu.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left, scroll down to and select the .NET icon.<br />

5 Select the Replay category.<br />

6 Select the Route HTTP .NET through SilkPerformer Web engine<br />

checkbox to route all http/https traffic that is generated by your .NET test<br />

driver through the SilkPerformer Web engine. This allows you to take<br />

advantage of the features that SilkPerformer offers for accurate load<br />

testing, such as its high performance Web engine, modem simulation,<br />

detailed timing/throughput information for each transmission, HTTP/<br />

XML TrueLog, and IP spoofing.<br />

104 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

7 The Routed Web service proxy classes field displays the .NET<br />

WebService client classes that are used in your .NET test driver. HTTP/<br />

SOAP traffic of selected classes will be routed through SilkPerformer’s<br />

Web engine, regardless of the setting above. This setting can only be<br />

changed via the SilkPerformer .NET AddIn.<br />

8 Select the One application domain for each virtual user container<br />

process option to share one .NET application domain among all virtual<br />

users running in a virtual user process. This minimizes the administrative<br />

overhead for the .NET Common Language Runtime, but may cause<br />

runtime problems because all objects will be loaded into the same<br />

application domain.<br />

9 Select the One application domain for each virtual user option to give<br />

each virtual user its own .NET application domain. This increases the<br />

administrative overhead of the .NET Common Language Runtime, but<br />

ensures that objects from different virtual users won’t interfere with one<br />

another.<br />

10 Click OK to save your settings.<br />

CORBA/IIOP options<br />

Replay options<br />

Procedure To set replay options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon for the profile for which you want to configure<br />

settings.<br />

3 Select Edit Profile from the context menu.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, click the CORBA / IIOP icon.<br />

5 Select the Replay category.<br />

6 Use the IIOP 1.2 area to specify the default settings for IIOP 1.2 replay.<br />

7 In the Max. chunk size for value type field, enter the maximum size for a<br />

single part of a chunked-encoded value type, that is, a value type that has<br />

been broken into smaller parts.<br />

8 Select the Use fragmentation option to fragment IIOP request and<br />

response messages if they exceed the length set in the Fragmentation<br />

size field.<br />

SilkPerformer User Guide 105


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

9 Use the Fragmentation size field to set the fragmentation size for a<br />

chunked-encoded value type. If a request or response message exceeds<br />

this size, the message will be sent using fragmentation.<br />

WChar/WString<br />

options<br />

Procedure To set WChar / WString options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon of the profile for which you want to configure<br />

settings.<br />

3 Select Edit Profile from the context menu.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, click the CORBA / IIOP icon.<br />

5 Select the Replay category.<br />

6 Click the WChar / WString tab.<br />

7 Use the Code set area to specify the settings for the wide-character code<br />

set. In general, a code set determines the encoding rules for characters<br />

and wide characters. Code sets can be byte-oriented or non-byte-oriented<br />

(e.g., ASCII is a byte-oriented code set for single byte characters).<br />

Multibyte characters defined by non-byte-oriented code sets have a byteorientation<br />

(big-endian, little-endian), whereas byte-oriented code sets<br />

do not.<br />

8 Select the Unicode option to use the Unicode code set. Unicode is a nonbyte-oriented<br />

code set for two-byte characters. The byte orientation of<br />

Unicode characters is determined by the IIOP message byte order.<br />

9 From the WChar size drop-down list, select the size of a CORBA wide<br />

character (wchar).<br />

10 Select the Byte-oriented option for a byte-oriented code set to be used for<br />

CORBA wchars and wstrings.<br />

Or, select the Non-byte-oriented option for a non-byte-oriented code set<br />

to be used for CORBA wchars and wstrings. If you select this option, use<br />

the Script byte order drop-down list to select the byte orientation of nonbyte-oriented<br />

CORBA wchar/wstring representation in the BDL script.<br />

The byte orientation can be little-endian (least significant bit first) or bigendian<br />

(most significant bit first).<br />

11 Use the IIOP 1.2 area to specify the settings for IIOP 1.2. The wchar and<br />

wstring encoding in IIOP 1.2 differs from the encoding in previous IIOP<br />

versions. However, not all ORBs use the correct encoding for IIOP 1.2.<br />

106 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

Recording options<br />

12 Select the CORBA compliant option if the ORB uses CORBA compliant<br />

wchar/wstring encoding in IIOP 1.2.<br />

13 In the WChar area, select the No length encoding option to use pre IIOP<br />

1.2 encoding. CORBA compliant IIOP 1.2 encoded wchars use a length<br />

indication for the size of the wchar.<br />

14 In the WString area, select the Null-terminated option if the ORB uses<br />

null-terminated wstrings. CORBA compliant IIOP 1.2 encoded wstrings<br />

are not null-terminated.<br />

15 Select the Chars option if the ORB uses the number of chars as wstring<br />

length. CORBA compliant IIOP 1.2 encoded wstrings specify the string<br />

length in bytes (chars).<br />

Or select the WChars option if the ORB uses the number of wchars as<br />

wstring length.<br />

Procedure To set recording options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon for the profile for which you want to configure<br />

settings.<br />

3 Select Edit Profile from the context menu.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, click the CORBA / IIOP icon.<br />

5 Click the Recording tab.<br />

6 Select the Record category.<br />

7 Use the Proprietary ORB features support area to specify whether to<br />

consider ORB-specific features when generating load test scripts based<br />

on recorded IIOP traffic. If the appropriate options are selected, the<br />

generated script becomes more readable.<br />

8 When generating a load test script based on recorded IIOP traffic<br />

- Select the Orbix option to consider Orbix-specific features<br />

- Select the OrbixWeb option to consider OrbixWeb-specific features<br />

- Select the VisiBroker C++ option to consider features specific to<br />

VisiBroker for C++<br />

- Select the VisiBroker Java to consider features specific to<br />

VisiBroker for Java<br />

SilkPerformer User Guide 107


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

- Select the M3 C++ to consider features specific to BEA Millennium<br />

for C++<br />

- Select the M3 Java to consider features specific to BEA Millennium<br />

for Java<br />

9 From the CORBA version of IDL file drop-down list, select the CORBA<br />

version of the application you are testing. If the application is using a<br />

CORBA version from 2.0 to 2.2 inclusive, select 2.0 from the drop-down<br />

list. If the application is using CORBA 2.3 or CORBA 3.0, select 3.0<br />

from the drop-down list.<br />

10 In the Preprocessor arguments field, enter any number of arguments that<br />

are to be passed to the preprocessor of the .idl file parser. For example,<br />

the arguments may be used to specify the include directory and to<br />

execute some predefined macros.<br />

11 Use the IDL files loaded list to view all the .idl files that are currently<br />

used by the SilkPerformer Recorder to generate high-level load test<br />

scripts. Whenever the corresponding interface is defined in a .idl file, the<br />

Recorder generates type-dependent functions for specifying the<br />

parameters of CORBA operation calls in the load test script.<br />

12 Click OK to exit the dialog and save your changes.<br />

Java options<br />

General options<br />

Procedure To set general Java options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon of the profile that you want to configure.<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, click the Java icon.<br />

5 Select the Replay category.<br />

6 Click the General tab.<br />

7 Use the Settings area to set options for the Java Virtual Machine.<br />

8 From the Version drop-down list, select the version number of the Java<br />

Virtual Machine.<br />

108 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

Advanced options<br />

9 In the Java home field, enter the installation directory of the Java Virtual<br />

Machine. This option enables the Java Virtual Machine to be loaded for a<br />

different path than specified in the PATH environment, so that it is<br />

possible to switch between various Java Virtual Machines without<br />

changing the system PATH environment. If necessary, use the browse<br />

(...) button to navigate to and select the installation directory.<br />

10 Use the Classpath field to view the class path specified for the Java<br />

Virtual Machine. By default the class path is set to the system class path.<br />

11 Click the File button to navigate to a class file and add it to the class path<br />

of the Java Virtual Machine.<br />

12 Click the Dir button to navigate to a directory and add it to the class path<br />

of the Java Virtual Machine.<br />

13 To reorder the files, click the Up and Dwn buttons to move selected files<br />

up or down in the class path hierarchy.<br />

14 To remove a selected file from the class path, click the Remove button.<br />

15 Use the System classpath field to view the full path of the system class<br />

path.<br />

16 Select the Use system classpath option to ensure that the system class<br />

path is used.<br />

Procedure To set advanced options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon of the profile that you want to configure.<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, click the Java icon.<br />

5 Select the Replay category.<br />

6 Click the Advanced tab.<br />

7 Use the Advanced area to set advanced options for the Java Virtual<br />

Machine.<br />

8 In the Command line options field, enter any command line options that<br />

are to be passed to the Java Virtual Machine.<br />

9 Select the Disable JIT compiler option to disable the Just In Time (JIT)<br />

compiler of the Java Virtual Machine.<br />

SilkPerformer User Guide 109


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

Logging options<br />

10 In the JVM dll field, enter the name of any Dynamic Link Library (.dll)<br />

that implements the Java Virtual Machine that is to be used.<br />

11 If necessary, use the browse (...) button to the right of the field to<br />

navigate to and select the Dynamic Link Library that is to be used.<br />

12 Click the Check JVM button to verify your Java Virtual Machine<br />

configuration settings.<br />

13 Click OK to exit the dialog and save your changes.<br />

Procedure To set logging options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon of the profile that you want to configure.<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, click the Java icon.<br />

5 Select the Record category.<br />

6 Click the Logging tab.<br />

7 Use the Record settings area to specify that additional properties have<br />

their values logged during record.<br />

8 Set the log level for virtual user logging from the Log level drop-down<br />

list. To disable logging, set the log level to None. The following log<br />

levels are available:<br />

- None: No additional logs will be written.<br />

- Error: Only errors that occur during replay will be logged.<br />

- Normal: Java messages will be logged.<br />

- Debug: Additional information will be logged (e.g., events).<br />

Database options<br />

SQLSTATE-specific<br />

error handling<br />

Procedure To set SQLSTATE-specific error-handling options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon of the profile you want to configure.<br />

110 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

ODBC-specific error<br />

handling<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, select the Replay category and click<br />

the Database icon.<br />

5 Click the SQLSTATE tab.<br />

6 Use the Simulation exceptions list to define exceptions for specific<br />

ODBC error codes to prevent termination of the simulation. If a database<br />

error occurs, SilkPerformer will automatically terminate the entire<br />

simulation. The list includes all the exceptions that SilkPerformer uses<br />

for handling database-specific errors. The Error field lists the native<br />

error code. The Class field ranks the severity of the error. Class 0 errors<br />

can be handled within a SilkPerformer transaction. Class 1 errors end the<br />

transaction but do not cause the simulation to terminate.<br />

7 To add an error to the list of database-specific error exceptions, click the<br />

Add button.<br />

The Edit Error dialog appears.<br />

8 In the Error field, add the error code for an error to be added to the<br />

exceptions list.<br />

9 In the Class field, add the error class.<br />

10 In the Description field, add a description for the error.<br />

11 Click OK.<br />

12 To edit an error, select it from the list, and click Edit.<br />

The Edit Error dialog appears.<br />

13 Edit the error code, class, and description as required.<br />

14 Click OK.<br />

15 To remove an error from the exceptions list, select it and click the<br />

Remove button.<br />

Procedure To set ODBC-specific error-handling options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon of the profile you want to configure.<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

SilkPerformer User Guide 111


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

ODBC high-level<br />

options<br />

4 In the shortcut list on the left side, select the Replay category and click<br />

the Database icon.<br />

5 Click the ODBC Database Errors tab.<br />

6 Use the Error definition list to define exceptions for specific database<br />

error codes in order to prevent the termination of the simulation.<br />

7 To add an error to the list of database-specific error exceptions, click the<br />

Add button.<br />

The Edit Error dialog appears.<br />

8 In the Error field, add the error code for an error to be added to the<br />

exceptions list.<br />

9 In the Class field, add the error class.<br />

10 In the Description field, add a description for the error.<br />

11 Click OK.<br />

12 To edit an error, select it from the list, and click Edit.<br />

The Edit Error dialog appears.<br />

13 Edit the error code, class, and description as required.<br />

14 Click OK.<br />

15 To remove an error from the exceptions list, select it and click the<br />

Remove button.<br />

Procedure To set ODBC high-level options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon of the profile you want to configure.<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, select the Replay category and click<br />

the Database icon.<br />

5 Click the ODBC High-Level tab.<br />

6 Use the Database area to specify details about the ODBC data source<br />

you will use and how SilkPerformer should interact with the ODBC<br />

driver.<br />

7 From the Data Source Name drop-down list of available ODBC data<br />

sources, select the data source to which you want to connect for load<br />

testing. To set up an additional ODBC data source, use Windows 32-bit<br />

112 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

ODBC Administrator (via the Windows Control Panel. The data source<br />

you select will only be used to replay test scripts with high-level ODBC<br />

functions.<br />

Note that the data source you select here is used only if you use highlevel<br />

ODBC functions that perform an implicit connection to the<br />

database. When you use medium-level ODBC functions, this data source<br />

is not used for connecting. Instead, the connection is performed with an<br />

explicit DB_Connect("connection string") function in the script.<br />

8 In the UserID field, enter the user name that is to be used to connect to<br />

the data source. You must specify a valid user for the DBMS to which<br />

you want to connect. If you use a trusted connection to connect to your<br />

DBMS, leave this field blank.<br />

Note that the user ID you enter here will only be used if you use highlevel<br />

ODBC functions.<br />

9 In the Password field, enter the password that is to be used when<br />

connecting to the data source. You must specify a valid password for the<br />

database user you are connecting. If you use a trusted connection, or if<br />

the user has no password, leave this field blank.<br />

Note that the password you enter here, as well as all remaining options<br />

you choose in this area, are used only if you use high-level ODBC<br />

functions.<br />

10 From the Isolation drop-down list, select the level of isolation for the<br />

entire load test. For a detailed description of isolation levels, consult your<br />

DBMS documentation and see the ODBC functions reference.<br />

You can change the isolation level and any other DBMS specific settings<br />

using the ODBC functions SQLSetConnectOption and<br />

SQLSetStmtOption in your script.<br />

11 From the SQL concurrency drop-down list, select a type of cursor<br />

concurrency to use for the scrollable cursors in your load test script. For<br />

a detailed description of concurrency settings, consult your DBMS<br />

documentation.<br />

12 From the SQL cursor type drop-down list, select a cursor type for the<br />

scrollable cursors in your load test script. For a detailed description of<br />

cursor type settings, consult your DBMS documentation.<br />

13 Select the Autocommit option to commit the database automatically after<br />

each SQL command. Otherwise the database will be committed only<br />

after an explicit commit statement. This setting is effective for all<br />

connected cursors.<br />

SilkPerformer User Guide 113


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

14 Select the Reprepare SQL commands option to prepare and execute a<br />

SQL statement each time it is called. Otherwise SilkPerformer prepares<br />

SQL statements only when necessary. This setting is effective for all<br />

cursors used in the load test.<br />

Recording options<br />

Procedure To set recording options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon of the profile that you want to configure.<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, click the Database icon.<br />

5 Select the Record category.<br />

6 Click the Recording tab.<br />

7 In the Oracle OCI area, select the Generate random input for long<br />

placeholders option to replace large amounts of data exchanged between<br />

the client application and the database server with random data. Since the<br />

original data is rarely required for replay, this option helps to prevent<br />

large data files being carried along with load test scripts.<br />

Select the Generate files for long placeholders option to store large<br />

amounts of data exchanged between the client application and the<br />

database server in a file. During replay, the file is used to send to the<br />

database server exactly the same data as to the client application.<br />

8 Click OK to exit the dialog and save your changes.<br />

COM / ADO options<br />

Note SilkPerformer offers two tutorials that walk you through the<br />

process of load testing ADO and COM-based applications (Load<br />

Testing a COM Application and Load Testing an ADO Application).<br />

These tutorials are available in Miscellaneous Tutorials<br />

(/Documentation/Tutorials/...).<br />

Recording options<br />

Procedure To set COM/ADO recording options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon of the profile you want to configure.<br />

114 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, select the Record category and click<br />

the COM / ADO icon.<br />

5 On the Settings tab, in the Script options area, select the Generate<br />

warnings option for warnings to be included as comments in the test<br />

script which will be generated when you have finished recording.<br />

Warnings may occur at any time while a COM application is running and<br />

indicate that the application might not be working properly. Select this<br />

option to verify that the application you are going to test works properly<br />

before you run an actual load test.<br />

6 Select the Generate OLE32 functions details option to have<br />

SilkPerformer generate test scripts that mimic COM clients with extreme<br />

accuracy. When you select this option, the generated test scripts pass<br />

exactly the same parameters to all OLE32 functions as the COM client<br />

did; this makes test scripts look more complicated. Disable this option to<br />

replace parameters that are not relevant to load testing with default<br />

values; this will make the test scripts look less complicated and they will<br />

be easier to customize.<br />

Note: This option should be used only by testers who have a<br />

comprehensive knowledge of COM.<br />

7 In the Max. number of table elements field, specify the maximum<br />

number of array elements for which SilkPerformer should generate<br />

access functions in the test script. These functions are generated<br />

whenever an array parameter is passed to or received from a COM<br />

object.<br />

8 Select the Enhanced property access option if you want to make use of<br />

the enhanced property access that allows to get/set a property value with<br />

a single ComSet{Type}/ComGet{Type} call.<br />

9 Select the Enhanced function calls option if you want to make use of the<br />

enhanced function call that allows to call a method that takes no<br />

parameters with a single ComCall statement.<br />

10 In the Log options area you can specify details about logging COM<br />

function calls. Select the Show missing type information option to check<br />

if all interfaces of the COM components under test are available to<br />

SilkPerformer. To record interface functions calls, SilkPerformer needs<br />

descriptions of interfaces or COM classes. These descriptions are<br />

contained in type libraries.<br />

SilkPerformer User Guide 115


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

ADO recording<br />

options<br />

11 Select the Show type mismatches option for SilkPerformer to inform you<br />

about mismatches between parameter types that an interface function<br />

expects and actual parameter types. Only late binding clients can cause<br />

type mismatches. A type mismatch happens, for example, if a VBScript<br />

client passes an interface to the server, instead of passing a string value.<br />

SilkPerformer tries to resolve type mismatches automatically.<br />

12 In the Filter (record server types) area, select the Remote out-of-process<br />

server option to capture and record the communication of the client<br />

object with any remote out-of-process server (i.e., a server object that<br />

operates on a different computer than the client object).<br />

13 Select the Local out-of-process server option to capture and record the<br />

communication of the client object with any local out-of-process server<br />

(i.e., a server object that operates on the same computer as the client<br />

object, but in a separate process space).<br />

14 Select the In-process server option to capture and record the<br />

communication of the client object with any in-process server (i.e., the<br />

client and server objects are operating in the same process space in the<br />

computer). In-process servers provide the fastest possible service to the<br />

client. They are typically objects in the same program, or objects loaded<br />

into the same process space ahead of time from an external source.<br />

15 Click OK to exit the dialog and save your changes.<br />

Procedure To set ADO recording options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon of the profile you want to configure.<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, select the Record category and click<br />

the COM / ADO icon.<br />

5 Click the ADO tab.<br />

6 In the Script options area, select the Extract SQL statements option to<br />

extract SQL statements which are passed to ADO interfaces to the dclsql<br />

section.<br />

116 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

COM/ADO result<br />

options<br />

7 Select the Fetch ADO Recordsets option if you want to make use of the<br />

ADO recordset handling support. AdoFetch statements will be scripted<br />

when the client application is browsing through recordset. This feature<br />

reduces the script size significantly and allows ADO customizing with<br />

the TrueLog.<br />

8 Select the Script ADO Parameters option if you want to make use of the<br />

ADO parameter handling support. AdoParam statements will be scripted<br />

when the client application is using ADO parameters with ADO<br />

commands. This feature reduces the script size significantly and allows<br />

ADO customizing with the TrueLog.<br />

9 Click OK to exit the dialog and save your changes.<br />

Procedure To set COM/ADO result options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon of the profile you want to configure.<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, select the Replay category and click<br />

the COM / ADO icon.<br />

5 Click the Results tab.<br />

6 In the Measures area, select the Measure for every COM call option to<br />

get a separate measure for every call to a COM interface method.<br />

7 Click OK to exit the dialog and save your changes.<br />

WAP Options<br />

Note SilkPerformer offers a tutorial that walks you through the<br />

process of load testing WAP-based applications. The tutorial is<br />

available in the Load Testing a WAP Application section of<br />

Miscellaneous Tutorials (/<br />

Documentation/Tutorials/...).<br />

WAP options<br />

Procedure To set WAP replay options:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, expand the Profiles folder.<br />

2 Right-click the icon of the profile you want to configure.<br />

SilkPerformer User Guide 117


3 CONFIGURING PROJECTS<br />

Project Profile Settings<br />

3 Choose Edit Profile.<br />

The Profile - [Loadtest] - Simulation dialog opens.<br />

Alternately, select Settings/Active Profile from the SilkPerformer menu<br />

bar.<br />

4 In the shortcut list on the left side, select the Replay category and click<br />

the WAP icon.<br />

5 On the Phone tab, you can specify WAP-browser-specific settings. From<br />

the Phone drop-down list, select the WAP browser you want to use for<br />

your simulation. The selection you make determines the format of the<br />

header information included in your WAP requests used for load tests.<br />

6 In the Max. outstanding requests field, specify the maximum number of<br />

requests the client can send to the server without receiving a response.<br />

Since the server must allocate more system resources for each request,<br />

server performance decreases as the number of requests increases.<br />

7 From the WAP version drop-down list, select the WAP version of the<br />

browser that is to be simulated.<br />

8 In the User agent field, specify user agent information sent to the server.<br />

This is typically the browser name, including platform information. This<br />

string is used for the HTTP request header “User-Agent:” that is sent to<br />

the server.<br />

9 In the Accept field, specify the document types that the server may send<br />

to the client. This string is used in the HTTP request header “Accept:”<br />

that is sent to the server.<br />

10 In the Additional HTTP headers field, you can specify one or more<br />

additional headers, using exact syntax. Use a new line for each header.<br />

These headers will be appended to each request that is sent to the server.<br />

11 Click the Gateway tab to specify gateway-specific options. A gateway<br />

translates requests from the WAP protocol stack to the WWW protocol<br />

stack.<br />

12 In the Host name or IP address field, enter the name or IP address of the<br />

WAP gateway.<br />

13 Select a Connection type for the gateway:<br />

- Select Connectionless to use an unsecured, connectionless<br />

communication channel to send requests to and receive requests<br />

from the server.<br />

- Select Connection-oriented to use an unsecured, connection-oriented<br />

communication channel to send requests to and receive requests<br />

from the server.<br />

118 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Test Scripts<br />

- Select Secure Connectionless to use a secure, connectionless<br />

communication channel to send requests to and receive requests<br />

from the server.<br />

- Select Secure connection-oriented to use a secure, connectionoriented<br />

communication channel to send requests to and receive<br />

requests from the server.<br />

14 Once you’ve identified a connection type, enter the number of the Port to<br />

which the WAP gateway responds for that particular connection type.<br />

15 Click OK to save your settings.<br />

Test Scripts<br />

Adding test scripts<br />

Compiling test scripts<br />

Removing test scripts<br />

Test scripts prescribe the actions of the virtual users that are run during load<br />

tests. Scripts are written in SilkPerformer's proprietary scripting language, the<br />

Benchmark Description Language (BDL). The usual way to create scripts is to<br />

have the SilkPerformer Recorder generate them from real network traffic that<br />

has been captured and recorded. Scripts can also be generated manually, or<br />

sample scripts provided by SilkPerformer can be used or modified for reuse.<br />

As many load test scripts as necessary can be added to a project, and existing<br />

scripts can be removed. Scripts need to be compiled before they can be used,<br />

and individual scripts in the project can be compiled, or all the scripts associated<br />

with a particular project can be recompiled at once.<br />

Procedure To add a test script:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, right-click the icon for the current project in the tree-view list.<br />

2 Select Add Script from the context menu.<br />

Alternately, select Project/Add Script from the SilkPerformer menu bar.<br />

The Select Script(s) dialog appears.<br />

3 Use the dialog to navigate to, and select, the script to add to the project.<br />

Procedure To compile a test script:<br />

1 Right-click the script you want to compile.<br />

2 From the context menu, select Compile.<br />

Alternately, select Script/Compile from the SilkPerformer menu bar.<br />

Procedure To remove a test script:<br />

1 Expand the folder of the current project in the tree-view list.<br />

2 Expand the Scripts folder.<br />

SilkPerformer User Guide 119


3 CONFIGURING PROJECTS<br />

Data Files<br />

3 Right-click the icon of the script you want to remove.<br />

4 Select Remove Script from the context menu.<br />

5 Click Yes on the deletion confirmation dialog.<br />

Data Files<br />

Adding data files<br />

Removing data files<br />

Data files that are required by SilkPerformer scripts are added to projects by<br />

specifying the directory where the user data files (.csv), certificate files (.pem),<br />

random data files (.rnd files), and type library files (.tlb, .dll, .exe, .ocx, .olb,<br />

.pkg) are located. The compiler searches for random data files first in the<br />

directory where the .bdf file is located, then in the directory specified. If a<br />

random data file from a different location needs to be used, a full path for the file<br />

can be specified in the script file.<br />

Note It is important that all the user data files, random data files,<br />

certificate files, .idl files, and type library files (.tlb, .dll, .exe, .ocx,<br />

.olb, .pkg) needed by a test script are added to the project. Otherwise<br />

they will not be available to remote agent computers during a test.<br />

Procedure To add a data file:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, right-click the icon of the current project.<br />

2 Select Add Data File from the context menu.<br />

Alternately, select Project/Add Data File from the SilkPerformer menu<br />

bar.<br />

The Select Data File(s) dialog appears.<br />

3 Use the dialog to navigate to and select the data file that you want to add<br />

to the project.<br />

Note It is important that all the user data files, random data files,<br />

certificate files, .idl files, and type library files needed by a test script<br />

are added to the project. Otherwise they will not be available to<br />

remote agent computers during a test.<br />

Procedure To remove a data file:<br />

1 Expand the folder for the current project in the tree-view list.<br />

2 Expand the Data Files folder.<br />

3 Right-click the data file you want to remove.<br />

4 Select Remove Data File from the context menu.<br />

5 Click Yes on the deletion confirmation dialog.<br />

120 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Workload Definition<br />

Agent Computers<br />

Adding agent<br />

computers<br />

Removing agent<br />

computers<br />

Agent computers host the virtual users that are run during load tests. As many<br />

agent computers as necessary can be added to a project to support the required<br />

number of virtual users.<br />

Agent computers are assigned to particular projects from the pool of agent<br />

computers available to the controller computer. The maximum number of<br />

virtual users who will run on each agent is computed automatically by<br />

SilkPerformer; Alternately, this number can be set manually. New agents can be<br />

added to the agent pool from the local area network or from other Windows<br />

domains; they will then be available to be added to the project. Agents can be<br />

checked for availability, and agents can be removed from the pool.<br />

Procedure To add an agent computer:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, right-click the icon of the current project in the tree-view list.<br />

2 Select Add Agent from the context menu.<br />

Alternately, select Project/Add Agent from the SilkPerformer menu bar.<br />

The Add Agent(s) From Agent Pool To Project dialog appears.<br />

3 Select an agent computer from the list and click OK to add it to the<br />

project.<br />

To add agents that don’t appear on the list, click the Configure Agent<br />

Pool button and proceed as described in “Configuring agent pool<br />

settings”.<br />

Procedure To remove an agent computer:<br />

1 Expand the folder of the current project in the tree-view list.<br />

2 Expand the Agents folder.<br />

3 Right-click the icon of the agent computer you want to remove.<br />

4 Select the Remove Agent option.<br />

5 Click Yes on the deletion confirmation dialog.<br />

Workload Definition<br />

A full range of options for the workloads to be employed in load tests is<br />

provided. You determine the workload type to be used: queuing, increasing,<br />

steady state, or dynamic workload. For each user group, numerous settings can<br />

be set, including the number of virtual users in the group; simulation times,<br />

warm-up times, and measurement times; and the allocation of virtual users to<br />

SilkPerformer User Guide 121


3 CONFIGURING PROJECTS<br />

Workload Definition<br />

Adding workload<br />

definitions<br />

Editing workload<br />

definitions<br />

agent computers. The start time for load tests can be set, either relatively to the<br />

current time (e.g., two hours from now), or absolutely (at a specific time of day).<br />

All the configuration options for workload are available from the editing version<br />

of the workload definition. From the execution version, it is also possible to run<br />

load tests.<br />

To define additional workloads for your load test and save them for future use,<br />

expand the Workloads section in the tree view, right-click an existing workload<br />

and select New Workload or Copy Workload from the context menu. If you<br />

create a new workload model, the baseline will have to be accepted for the<br />

model. You can copy previous accepted baseline results from an existing<br />

workload model by copying and renaming an existing workload.<br />

Procedure To edit the workload definition:<br />

1 In the Project tab of the tree-view area of the main SilkPerformer<br />

window, right-click the current project in the tree-view list.<br />

2 Select Edit Active Workload from the context menu.<br />

Alternately, select Settings/Active Workload from the SilkPerformer<br />

menu bar.<br />

Alternative In the Project tab of the tree-view area of the main<br />

SilkPerformer window, right-click the workload you want to edit<br />

and select Edit Workload, or double-click the workload.<br />

3 The Workload Configuration dialog appears in the version for workload<br />

editing only.<br />

4 Use the Workload area to configure the workload that you will use in<br />

your load test.<br />

5 Choose a workload model: Increasing, Steady State, Dynamic, All Day,<br />

or Queuing options.<br />

- Select the Increasing option to use the increasing workload model.<br />

At the beginning of a load test, SilkPerformer simulates not the total<br />

number of users defined, but only a certain percentage of them. Step<br />

by step, the workload is increased until all the users specified in the<br />

user list are actually running.<br />

This workload model is especially useful when you want to find out<br />

at which load level your system crashes or does not respond within<br />

acceptable response times or error thresholds.<br />

- Select the Steady State option to use the steady-state workload<br />

model in your load test. In this model, the same number of virtual<br />

users is employed throughout the test. Every virtual user executes<br />

the transactions defined in the load testing script. When work is<br />

finished, the virtual user starts again with executing the transactions.<br />

122 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Workload Definition<br />

There is no delay between transactions. The test finishes when the<br />

simulation time that was specified has been reached.<br />

This workload model is especially useful when you want to find out<br />

about the behavior of your tested system at a specific load level.<br />

- Select the Dynamic option to use the dynamic workload model in<br />

your load test. You can manually change the number of virtual users<br />

in the test while it is being run. The maximum number of virtual<br />

users to be run is set; within this limit, the number can be increased<br />

or decreased at any time during the test. No simulation time is<br />

specified, and you must bring the test to an end manually.<br />

This workload model is especially useful when you want to<br />

experiment with different load levels and to have the control over the<br />

load level during a load test.<br />

- Select the All Day option to use the all day workload model in your<br />

load test. This workload model allows you to define the distribution<br />

of your load in the most flexible way. You can assign different<br />

numbers of virtual users to any interval of the load test. Each user<br />

type can use a different load distribution. Therefore, you can design<br />

very complex workload scenarios such as workday workloads or<br />

even weekly workloads. You can adjust the load level during a load<br />

test for intervals that have not yet started executing.<br />

This workload model is especially useful when you want to model<br />

complex, long lasting workload scenarios in the most realistic way<br />

possible.<br />

- Select the Queuing option to use the queuing workload model in<br />

your load test. In this model, transactions are scheduled following a<br />

prescribed arrival rate. This rate is a random value based on an<br />

average interval calculated from the simulation time and the number<br />

of transactions you have specified in your script (dcluser section:<br />

number of transactions per user). The load test will finish when all of<br />

the virtual users have completed their prescribed tasks.<br />

Note that the test may take longer than the simulation time that was<br />

specified, because of the randomized arrival rates. For example, if<br />

you specify a simulation time of 3000 seconds and want to execute<br />

100 transactions, then you will get an average transaction arrival rate<br />

of 30 seconds.<br />

This workload model is especially useful when you want to simulate<br />

workloads that use queuing mechanisms to handle multiple<br />

concurrent requests. Typically, application servers like servlet<br />

engines or transaction servers, which are receiving their requests<br />

from Web servers and not from end users, can be accurately tested<br />

by using the queuing model.<br />

SilkPerformer User Guide 123


3 CONFIGURING PROJECTS<br />

Workload Definition<br />

6 Use the figure at the top of the dialog to see a graphical representation of<br />

the selected workload model. The figure uses the actual data of the user<br />

group selected in the workload list below.<br />

7 Select the Balance load across agents option to automatically distribute<br />

the virtual users on the agent computers. This option is especially useful<br />

in order to not overload the agent computers.<br />

8 Use the workload list to configure the user groups that are to be run in<br />

your load test.<br />

9 In the User Type (Script / Usergroup / Profile) columns, select the user<br />

groups that you want to run in your test. All of the user groups from your<br />

test scripts for the current project are listed here. Also you can choose the<br />

Profile that should be used for this user.<br />

10 In the Max. Vuser column, specify the maximum number of virtual users<br />

to be run in each user group.<br />

11 To specify that your load test begin at a set period after the time given in<br />

the Start Time area, enter a time value (in seconds) in the Start Time<br />

Offset [s] column.<br />

12 In the Simulation Time column, enter the duration (in seconds) for which<br />

each user group will be run in your load test.<br />

13 In the Warm-up Time column, enter the duration (in seconds) for the<br />

period at the start of a load test during which no measurements will be<br />

performed.<br />

14 In the Measurement Time column, enter the duration (in seconds) for<br />

which measurements will be performed during the load test.<br />

15 If you selected the Increasing workload model, you have three additional<br />

columns:<br />

- Start Users: Specify the number of virtual users to be run at the<br />

beginning of the load test.<br />

- Add Users: Specify the number of virtual users to be added to the<br />

current number of virtual users after each interval defined in the<br />

Increase after column (see below).<br />

- Increase after: Enter the duration of the interval after which virtual<br />

users are to be added to the current number of virtual users.<br />

16 In the Auto-assign column, select the assignment option for each user<br />

group for which you want SilkPerformer to automatically compute and<br />

assign virtual users to agent computers. To assign virtual users manually<br />

to agent computers for a particular user group or groups, leave this<br />

option unselected.<br />

124 SilkPerformer User Guide


3 CONFIGURING PROJECTS<br />

Outlining Projects<br />

Running load tests<br />

17 Use the Agents column to check SilkPerformer's automatic assignment of<br />

virtual users to agent computers, or to manually assign them yourself.<br />

In either case, click the browse (...) button to the left of the Agent column<br />

for the relevant user group.<br />

- For a user group using the Auto-assign option, the Automatic Agent<br />

Assignment for Script / Usergroup appears, where you can view<br />

SilkPerformer's assignment of virtual users to agent computers.<br />

- For a user group not using the Auto-assign option, the Manual Agent<br />

Assignment for Script / Usergroup appears.<br />

18 In the Assigned Vusers column of the Agent Assignment for Script /<br />

Usergroup dialog, enter the number of virtual users from the relevant<br />

user group to run on each agent. All of the users from the user group<br />

must be assigned to agents.<br />

19 Click OK to return to the Workload Configuration dialog.<br />

20 In the Start Time area, set the start time for your load test in hours,<br />

minutes, and seconds. Select the Relative option to have your test start<br />

after the time period you have specified has elapsed. Select the Absolute<br />

option to have the test start at that specific time.<br />

21 In the Loadtest Description field, you can optionally enter a description<br />

of the load test. This feature is provided for project management<br />

purposes only.<br />

22 Click the User distribution Overview button to view the assignment of<br />

virtual users to the agent computers that are currently available.<br />

23 Click OK to save your changes.<br />

Procedure To run a load test:<br />

1 Click the Run Test icon on the SilkPerformer Workflow bar, or select<br />

Run/Run Test from the SilkPerformer menu bar.<br />

2 The Workload Configuration dialog appears in the version from which<br />

tests can be run.<br />

3 If you need to edit the workload definition, follow steps outlined in the<br />

preceding section.<br />

4 Click Run to execute the test.<br />

Outlining Projects<br />

The first step in conducting a SilkPerformer load test is to define the basic<br />

settings for the load testing project. The project is given a name, and optionally a<br />

SilkPerformer User Guide 125


3 CONFIGURING PROJECTS<br />

Outlining Projects<br />

Outlining a project<br />

brief description can be added. The type of application to be tested is specified<br />

from a range of choices that includes all the major traffic that is encountered in<br />

e-business today on the Internet, including the most important database and<br />

distributed applications.<br />

Procedure To outline a load testing project:<br />

1 Click the Outline Project button on the Workflow bar.<br />

2 The Workflow - Outline Project dialog opens.<br />

3 In the Project name field, enter a name for the project.<br />

4 In the Project description field, you can optionally enter a description for<br />

the project. This feature is provided for project management purposes<br />

only.<br />

5 From the Application type list, select the type of application on which<br />

you want to run your load test.<br />

6 Click OK.<br />

126 SilkPerformer User Guide


4<br />

Modeling 4Chapter<br />

Test Scripts<br />

Introduction<br />

What you will learn<br />

This chapter explains how to model load testing scripts in SilkPerformer.<br />

This chapter contains the following sections:<br />

Section<br />

Page<br />

Overview 127<br />

Recording Test Scripts 128<br />

Writing Test Scripts Manually 131<br />

Working From Sample Scripts 131<br />

Trying Out Test Scripts 132<br />

Overview<br />

The second step in conducting a SilkPerformer load test is to create the test<br />

script that will prescribe the actions of the simulated users who will be run<br />

during the test. The script is written in SilkPerformer's proprietary scripting<br />

language, the Benchmark Description Language (BDL).<br />

Scripts can be created in two ways. The easiest way is to use the SilkPerformer<br />

Recorder, which can automate much of the process. An alternate way, for<br />

experienced users, is to create test scripts manually.<br />

• “Recording Test Scripts”: The standard method of creating a test script is<br />

to use SilkPerformer's recording engine, the SilkPerformer Recorder, to<br />

first capture and then record a representative amount of real traffic of the<br />

kind that needs to be simulated in the load test. The SilkPerformer<br />

Recorder then automatically generates the BDL test script from the<br />

recorded traffic.<br />

SilkPerformer User Guide 127


4 MODELING TEST SCRIPTS<br />

Recording Test Scripts<br />

• “Writing Test Scripts Manually”: A second method of creating test<br />

scripts is to manually create them from scratch in BDL.<br />

• “Working From Sample Scripts”: A variant on the second method of<br />

creating test scripts is to base a new script on one of the sample BDL<br />

scripts that is provided with SilkPerformer.<br />

Recording Test Scripts<br />

The standard, and easiest, method of creating a load test script is to use the<br />

SilkPerformer Recorder, SilkPerformer's engine for capturing and recording<br />

traffic and generating test scripts.<br />

The SilkPerformer Recorder can record the following types of Internet traffic<br />

(secure and non-secure):<br />

- Hypertext Transfer Protocol (HTTP)<br />

- File Transfer Protocol (FTP)<br />

- Post Office Protocol (POP)<br />

- Simple Mail Transfer Protocol (SMTP)<br />

- Lightweight Directory Access Protocol (LDAP)<br />

- Internet Inter-ORB Protocol (IIOP)<br />

- SOCKS<br />

The Recorder can capture function calls of the following APIs (see “Available<br />

application types” for the complete list):<br />

- Oracle Call Interface (OCI)<br />

- Open Database Connectivity (ODBC)<br />

- TUXEDO<br />

- Jolt<br />

- COM<br />

- WinSock<br />

- Oracle Forms<br />

- Oracle Applications<br />

- Citrix<br />

- .NET<br />

- ADO<br />

- WAP<br />

128 SilkPerformer User Guide


4 MODELING TEST SCRIPTS<br />

Recording Test Scripts<br />

- Java<br />

- SAPGUI<br />

- Remedy<br />

- Flash<br />

First, the SilkPerformer Recorder captures and records a representative amount<br />

of real traffic between a client application and the server to be load tested. When<br />

recording is complete, the SilkPerformer Recorder then automatically generates<br />

the test script from the recorded traffic. The script is written in SilkPerformer's<br />

proprietary scripting language, the Benchmark Description Language (BDL).<br />

During the recording phase, you define transactions. A transaction is a discrete<br />

piece of work that will later be assigned to a virtual user in a load test and for<br />

which separate time measurements will be made. You should create a new<br />

transaction only for a piece of work that has no dependencies on another piece<br />

of work. Individual time measurements can be made for any action or series of<br />

actions that happen during recording.<br />

Advantages<br />

Using the SilkPerformer Recorder has a number of advantages:<br />

- Recorded traffic and function calls include a lot of static<br />

information. Replay of static information ordinarily does not lead to<br />

reliable benchmark results. Because recorded scripts can easily be<br />

customized, you can add random functions to generate dynamic and<br />

realistic workloads.<br />

- Transactions defined during recording modularize the script inTO<br />

clearly laid out sections. It is easy to modify workloads based on<br />

different statistics or requirements using the randomization functions<br />

embedded in SilkPerformer.<br />

- Timers set during recording provide user-defined granularity for<br />

measuring any part of a transaction.<br />

- Development time and costs can be reduced considerably. There is<br />

no need to change the front-end application to simulate new<br />

behaviors. It is sufficient to modify the script and repeat the<br />

simulation until the requirements are met. The front-end application<br />

has to be implemented only once; the script then becomes its<br />

prototype and reproduces its behavior.<br />

Recording test scripts<br />

Procedure To record a test script:<br />

1 Open the project in which you want to work, or start a new project.<br />

2 Click the Model Script button on the SilkPerformer Workflow bar.<br />

The Workflow - Model Script dialog appears.<br />

SilkPerformer User Guide 129


4 MODELING TEST SCRIPTS<br />

Recording Test Scripts<br />

3 In the Script area, select the Record option.<br />

4 From the Select application profile drop-down list, select the profile for<br />

the client application that you plan to test in your load test.<br />

If a profile has not yet been set up for the application you want to use,<br />

click the button to the right of the drop-down list to set one up.<br />

To add a new profile, see “Adding application profiles”.<br />

5 If you are load testing a Web application, enter its URL in the URL field.<br />

6 Click OK.<br />

The SilkPerformer Recorder dialog opens in minimized form, and the<br />

client application starts.<br />

7 To see a report of the actions that happen during recording, maximize the<br />

Recorder dialog by clicking the Change GUI size button.<br />

The maximized Recorder then opens at the Actions tab.<br />

8 Using the client application, conduct the kind of interaction with the<br />

target server that you want to simulate in your load test. The interaction<br />

is captured and recorded by the Recorder. A report of your actions and of<br />

the data downloaded appears in the Actions tab.<br />

9 Insert transactions and timers into the test script during the recording<br />

phase. You can create as many transactions and timers as you want.<br />

10 To insert a transaction, click the New Transaction button. A transaction<br />

represents a piece of work that can be assigned to a virtual user.<br />

11 In the ensuing dialog, enter a name for the transaction and click OK.<br />

The new transaction appears in the Actions log.<br />

12 To insert a timer, click the New Timer Session button. A timer is a userdefined<br />

measurement period in a load test. You should create timers for<br />

each component of a transaction for which you want to analyze<br />

performance.<br />

In the ensuing dialog, enter a name for the timer and click OK.<br />

13 To end recording, click the Stop Recording button. The test script is<br />

generated from the recorded traffic.<br />

14 In the ensuing dialog, name your test script and specify where to save it.<br />

15 In the SilkPerformer Recorder message that appears, confirm that you<br />

want to close the Recorder.<br />

The new script appears in a script editor window.<br />

130 SilkPerformer User Guide


4 MODELING TEST SCRIPTS<br />

Working From Sample Scripts<br />

Writing Test Scripts Manually<br />

Writing a new test<br />

script<br />

For those who do not want to use the standard method of generating load test<br />

scripts (using the SilkPerformer Recorder), an alternate method is to manually<br />

create new scripts from scratch.<br />

SilkPerformer test scripts are written in the program's proprietary scripting<br />

language, the Benchmark Description Language (BDL). To generate scripts<br />

manually, you will need to be familiar with BDL, which is a high-level language<br />

resembling Pascal. You should be able to create prototypes of user requests, and<br />

define the typical components of a load testing script, including modules,<br />

functions, workload definitions, transactions, Web forms, and more.<br />

Procedure To write a new test script:<br />

1 Open the project in which you want to work, or start a new project.<br />

2 Click the Model Script button on the SilkPerformer Workflow bar.<br />

The Workflow - Model Script dialog appears.<br />

3 In the Script area, select the New script option.<br />

A SilkPerformer script template opens in a new script editor window.<br />

4 Use Benchmark Description Language (BDL), SilkPerformer's<br />

proprietary scripting language to write your script. Refer to the BDL<br />

Function Reference for detailed information about the Benchmark<br />

Description Language.<br />

5 Save your new script.<br />

6 Follow the steps in the SilkPerformer Workflow to use the new script in<br />

your load test.<br />

Working From Sample Scripts<br />

Sample script reuse is a timesaving possibility for those who want to generate<br />

SilkPerformer load test scripts manually (and bypass the standard method,<br />

which uses the SilkPerformer Recorder).<br />

SilkPerformer test scripts are written in the program’s proprietary scripting<br />

language, the Benchmark Description Language (BDL). Testers who want to<br />

generate scripts manually will need to be familiar with BDL, which is a highlevel<br />

language resembling Pascal. A number of sample BDL scripts are<br />

provided with SilkPerformer, and testers can base the new script on one of these.<br />

To work from a sample script you need to be familiar with how to create<br />

prototypes of user requests, and how to define the typical components of a load<br />

SilkPerformer User Guide 131


4 MODELING TEST SCRIPTS<br />

Trying Out Test Scripts<br />

testing script, including modules, functions, workload definitions, transactions,<br />

Web forms, and so on.<br />

Using a sample test<br />

script<br />

Procedure To re-use a sample test script:<br />

1 Open the project in which you want to work, or start a new project.<br />

2 Click the Model Script button on the SilkPerformer Workflow bar.<br />

The Workflow - Model Script dialog appears.<br />

3 In the Script area, select the Sample script option.<br />

4 Click OK.<br />

The Open dialog appears<br />

5 Browse to the Samples folder.<br />

6 Browse to the folder of the specific application type you plan to test.<br />

7 Select a sample script and click Open.<br />

8 In the ensuing dialog, confirm that you want to add the script to the<br />

current project.<br />

9 The script is added to the project, and opens in a new script editor<br />

window.<br />

10 Follow the steps in the SilkPerformer Workflow to use the sample script<br />

in your load test.<br />

Trying Out Test Scripts<br />

The third step in conducting a SilkPerformer load test is to perform a trial run of<br />

the Benchmark Description Language test script that was created in the previous<br />

step. The object of a trial run is to ensure that the test script is free from error,<br />

and that it accurately reproduces the required interaction between the client<br />

application and the server. Normally, this will be the traffic that was recorded by<br />

the SilkPerformer Recorder in the previous step.<br />

For this try-out of the test script, options are automatically selected so that you<br />

can see a live display of the actual data downloaded. Log files, TrueLog files,<br />

report files, output files, and error files are created so that you can also check<br />

later that the script is working properly. Only one user is run, and the stress test<br />

option is enabled so that there is no think time and no delay between<br />

transactions. However, at this stage, the measurements typical of a real load test<br />

are not performed.<br />

For Try Script runs, the following options are automatically set to these<br />

specified values:<br />

- The Stress test option is on.<br />

132 SilkPerformer User Guide


4 MODELING TEST SCRIPTS<br />

Trying Out Test Scripts<br />

Trying out test scripts<br />

- The Stop virtual users after simulation time (Queuing Workload)<br />

option is off.<br />

- The Virtual user log files (.log) option is on.<br />

- The Virtual user output files (.wrt) option is on.<br />

- The Virtual user report files (.rpt) option is on.<br />

- The Virtual user report on error files (.rpt) option is on.<br />

- The TrueLog files (.xlg) option is on.<br />

- The TrueLog On Error files (.xlg) option is off.<br />

- The Compute time series data (.tsd) option is off.<br />

- All logging detail options (Results/Logging and Results/Internet<br />

logging tab) are on.<br />

- The Enable all measure groups (TSD measure groups) option is off.<br />

- The Bandwidth option is set to High Speed (unlimited).<br />

- The Downstream option is set to unlimited.<br />

- The Upstream option is set to unlimited.<br />

- The Duplex option is off.<br />

- The Modem compression rate is set to 1.0 x.<br />

Procedure To try out a test script:<br />

1 Click the Try Script button on the SilkPerformer Workflow bar.<br />

The Workflow - Try Script dialog appears.<br />

2 The currently active profile name is displayed in the Profile field. To edit<br />

the script replay settings for this profile, click the button to the right of<br />

the field. Note that appropriate settings for script try-outs are<br />

automatically selected by SilkPerformer.<br />

3 From the Script drop-down list, select the script that is to be tried out.<br />

4 Select the Animated option for a live view of the data downloaded during<br />

the test.<br />

5 To configure project attributes, click the Project Attributes button. See<br />

Project Attributes Overview in the BDL Function Reference for details<br />

on these attributes.<br />

6 Click Run to execute your test script try-out.<br />

7 During the trial run, monitor the test progress in the Monitor window,<br />

and view downloaded data using TrueLog Explorer.<br />

SilkPerformer User Guide 133


4 MODELING TEST SCRIPTS<br />

Trying Out Test Scripts<br />

134 SilkPerformer User Guide


5<br />

Validating 5Chapter<br />

Test Scripts<br />

Introduction<br />

What you will learn<br />

This chapter explains how to validate test scripts.<br />

This chapter contains the following sections:<br />

Section<br />

Page<br />

Overview 135<br />

Visual Analysis with TrueLog Explorer 135<br />

Log Files 136<br />

Report Files 137<br />

Output Files 138<br />

Overview<br />

SilkPerformer offers several means of evaluating test scripts after the execution<br />

of TryScript runs.<br />

Visual Analysis with TrueLog Explorer<br />

TrueLog Explorer guides you through the process of visually analyzing Try<br />

Script runs with its Workflow bar. The steps are as follows:<br />

1 Examine the Virtual User Summary report.<br />

2 Find replay errors.<br />

3 Compare a replay TrueLog with the TrueLog that was produced during<br />

recording of the application.<br />

SilkPerformer User Guide 135


5 VALIDATING TEST SCRIPTS<br />

Log Files<br />

TrueLog Explorer provides an accurate view of the actual data that is<br />

downloaded during load tests. This enables you to verify that the data specified<br />

to be received from the server under test was, in fact, received. In the case of<br />

Web application testing for example, TrueLog Explorer shows the actual Web<br />

pages that are received during tests. Through the use of TrueLog Explorer’s<br />

animated mode, live monitoring of downloaded data is available—data is<br />

displayed as it is received during tests.<br />

TrueLog Explorer provides different views of received data, enabling you to:<br />

- Inspect the rendered HTML code, as a real user would see it.<br />

- Inspect the native HTML code.<br />

- Inspect a difference table that shows the differences between replay<br />

and recorded TrueLogs.<br />

Viewing Web pages<br />

accessed during tests<br />

Procedure To view the Web pages that were accessed during a load test:<br />

1 Checking the Animated checkbox before running a Try script operation<br />

opens TrueLog Explorer automatically.<br />

Alternately, TrueLog Explorer can be accessed by selecting Results/<br />

Explore TrueLog from the SilkPerformer menu bar.<br />

2 A Virtual User Report is shown automatically when the first node of the<br />

tree view at the left side of the window is checked. In the report you will<br />

find detailed information about the Try Script run in tabular form.<br />

3 Use the tree view area on the left of the window to expand and collapse<br />

folders as necessary to locate and view data downloaded during the test.<br />

4 To view a downloaded Web page, select its URL or link description in<br />

the tree view area.<br />

5 To locate replay errors, click the Analyze Test button on the workflow<br />

bar and select Find Errors. A new window appears that helps you<br />

navigate from one error to the next. HTML errors often occur one or two<br />

steps before they are apparent to end users. With TrueLog Explorer you<br />

can easily examine the Web pages that were displayed preceding errors.<br />

Log Files<br />

Any errors that are encountered in load tests are reported in log files (assuming<br />

log file generation has been enabled). Log files contain a record of all the<br />

function calls that are invoked by the transactions of each virtual user in load<br />

tests. These files contain session and error information, including details for<br />

each type of event executed during a simulation, the API calls in a transaction,<br />

and the data exchanged with the server, as well as other information.<br />

136 SilkPerformer User Guide


5 VALIDATING TEST SCRIPTS<br />

Report Files<br />

However, generating log files alters the time measurements of load tests.<br />

Therefore, these files should be used for debugging purposes only, and should<br />

never be generated for full load tests.<br />

Viewing log files<br />

Procedure To view log files:<br />

1 Select File/Open/Virtual User Log File from the SilkPerformer menu<br />

bar.<br />

2 Locate the appropriate file (or right-click a virtual user in the<br />

SilkPerformer Monitor window and select Show Log File). The log file<br />

will then display.<br />

Report Files<br />

Report files contain the same information as baseline reports for one specific<br />

virtual user. This report is based on XML/XSL and includes the most important<br />

test results in tabular format. It comprises the following sections:<br />

- General Information<br />

- Virtual User<br />

- Summary Tables<br />

- Transaction Response Times<br />

- HTML Page Timers<br />

- Web Form Measurements<br />

General information<br />

User types<br />

Summary tables<br />

Transactions<br />

The general information section includes administrative information in a tabular<br />

form.<br />

Administrative information includes the SilkPerformer version info, the project<br />

name, a description of the project, the date and time of the load test, the<br />

workload definition, the workload model and the number of errors that occurred.<br />

For the virtual user, a section is available with details of the measured response<br />

times. The summary line shows the duration of the test, the session time, the<br />

session busy time, the average page time, the number of transactions executed<br />

successfully, cancelled, failed and the number of errors, if any, that occurred.<br />

This section contains summary measurements in a tabular form, that is,<br />

aggregate measurements. The first table provides general information, such as<br />

the number of transactions that were executed and the number of errors, if any,<br />

that occurred. All the following tables provide summary information relevant to<br />

the type of application that was tested.<br />

This section contains summary measurements in a tabular form, that is,<br />

aggregate measurements for all transactions of the specific user. For every<br />

SilkPerformer User Guide 137


5 VALIDATING TEST SCRIPTS<br />

Output Files<br />

Page timers<br />

Web forms<br />

Viewing report files<br />

transaction, the transaction response time and the transaction busy time are<br />

displayed.<br />

The transaction response time is measured from the beginning to the end of the<br />

transaction, including all think times.<br />

The transaction busy time is the transaction response time without any think<br />

time included.<br />

This section contains summary measurements in a tabular form for every<br />

accessed Web page. For every page, the download time of the whole page, the<br />

HTML-document download time, the server busy time, the amount of data<br />

downloaded with this page, and the amount of data downloaded for embedded<br />

objects are displayed.<br />

This section contains summary measurements in tabular form for every used<br />

Web form. For every form, the round trip time, the server busy time, the number<br />

of HTTP hits, the amount of request data sent and the response data received are<br />

displayed.<br />

Procedure To view report files:<br />

1 If TrueLog Explorer opens, the Virtual User Report File will be<br />

displayed automatically.<br />

2 You can access report files by selecting File/Open/Virtual User Report<br />

File from the SilkPerformer menu bar and then locating the appropriate<br />

file, or by right-clicking the line for a virtual user in the SilkPerformer<br />

Monitor window and selecting Show Report File from the context menu.<br />

The report file is then displayed.<br />

Output Files<br />

Viewing output files<br />

Output files contain the output of write statements that are used in test scripts.<br />

An output file is generated for a particular user only if write statements are<br />

executed by that user.<br />

However, generating output files alters the time measurements of load tests.<br />

Therefore, these files should be used for debugging purposes only, and should<br />

not be generated for full load tests.<br />

Procedure To view output files:<br />

1 Select File/Open/Virtual User Output File from the SilkPerformer menu<br />

bar.<br />

2 Locate the appropriate file (or right-click a virtual user in the<br />

SilkPerformer Monitor window and select Show Output File from the<br />

context menu). The output file will then display.<br />

138 SilkPerformer User Guide


6<br />

Customizing 6Chapter<br />

Test Scripts<br />

Introduction<br />

What you will learn<br />

This chapter explains how to customize your test scripts with session handling,<br />

verification functions, and more.<br />

This chapter contains the following sections:<br />

Section<br />

Page<br />

Overview 139<br />

Inserting Function & Transaction Declarations 141<br />

Customizing Workload 142<br />

Customizing Session Handling 149<br />

Inserting Parsing Functions 153<br />

Adding Verifications to Test Scripts 155<br />

Manual Script Editing 159<br />

Using the System Configuration Manager 160<br />

Serializing and Synchronizing Virtual Users 160<br />

Using Custom DLLs in Test Scripts 166<br />

Matrix: Functions, the Recorder, and TrueLog Explorer 174<br />

Overview<br />

The fourth step in conducting a SilkPerformer load test is to customize the test<br />

script. If a test script is used that has not been customized, the load tests will<br />

repeatedly reproduce the behavior recorded on that one particular occasion, and<br />

this will not provide very accurate results. To realistically emulate the varied<br />

traffic of a large number of different users, the transactions in the test script need<br />

to be modified and, where necessary, randomized.<br />

SilkPerformer User Guide 139


6 CUSTOMIZING TEST SCRIPTS<br />

Overview<br />

Web server applications often generate session IDs at runtime that are necessary<br />

for further client requests. If a session ID needs to be customized, TrueLog<br />

Explorer assists you by inserting the right BDL functions into the script.<br />

Virtual users can be furnished with different personal data, such as names,<br />

addresses, credit card numbers, and so on. They can vary in the products they<br />

search for information about, in the products they order, and in many other<br />

ways. SilkPerformer provides extensive facilities for customizing virtual users.<br />

- “Adding Verifications to Test Scripts”: The content of HTML page<br />

titles, HTML text and HTML tables can be verified during the<br />

execution of a load test. In order to add verification functions to the<br />

script, TrueLog Explorer allows you to visually identify and then<br />

mark the text to be verified in the respective HTML page. The BDL<br />

script will be automatically updated to reflect your verifications.<br />

- “Inserting Parsing Functions”: Similar to the verification functions,<br />

the parsing functions can be used to parse content returned from a<br />

Web server and check if the values meet your testing criteria.<br />

- “Defining modem speeds”: Virtual users can be customized to use<br />

the bandwidth associated with any of the major connection types in<br />

wide use among consumers today.<br />

- “Defining browser types”: A wide choice of Web browsers, and of<br />

the functionality they embody, is available to be assigned to virtual<br />

users.<br />

- Parameter Wizard: Realistic and varied personal data can be created<br />

for the virtual users in a test script by means of parameters, which<br />

can be easily generated using this wizard. For details on the<br />

Parameter Wizard, please refer to TrueLog Explorer User Guide.<br />

- “Customizing Workload”: The Customize User Groups dialog<br />

enables you to add new user groups, copy user groups, rename user<br />

groups, and delete user groups.<br />

- “Manual Script Editing”: A common way to customize the behavior<br />

of virtual users is to manually edit the test scripts using BDL, the<br />

Benchmark Description Language.<br />

- “Using the System Configuration Manager”: When the application<br />

being tested uses load balancers, realistic simulation can be provided<br />

by giving virtual users individual IP addresses.<br />

140 SilkPerformer User Guide


6 CUSTOMIZING TEST SCRIPTS<br />

Inserting Function & Transaction Declarations<br />

Inserting Function & Transaction Declarations<br />

Inserting function<br />

declarations<br />

SilkPerformer offers GUI tools that assist you in inserting function and<br />

transaction declarations into test scripts.<br />

Procedure To insert a function declaration into a test script:<br />

1 With the test script into which you want to insert a new function open,<br />

select Script/New Function from the SilkPerformer menu bar.<br />

The New Function dialog appears.<br />

You can also access this dialog by right-clicking within the body of the<br />

script and selecting New Function. A function is used to encapsulate<br />

some tasks that a script requires. Functions can access and change data<br />

declared outside themselves, either through variables or parameters.<br />

Optionally, a function can return a value of a specific type.<br />

2 In the Name field, enter a name for the function you want to insert into<br />

your test script. The name must begin with a character and may consist<br />

of any number of letters of the alphabet, digits, and underscores.<br />

3 From the Return type drop-down list, select the data type of the<br />

function's return value. Choose one of the following:<br />

- none - for the function to return nothing<br />

- boolean - for the function to return either true or false<br />

- float - for the function to return any positive or negative floatingpoint<br />

value or zero<br />

- number - for the function to return any positive or negative whole<br />

number or zero<br />

- string - for the function to return a sequence of characters<br />

4 In the Parameters list, insert the parameters that you want to pass to the<br />

function. For each parameter, enter a name in the Name column and<br />

select the data type from the Type drop-down list:<br />

- boolean - for the parameter to contain either true or false<br />

- float - for the parameter to contain any positive or negative floatingpoint<br />

- value or zero<br />

- number - for the parameter to contain any positive or negative whole<br />

number or zero<br />

- string - for the parameter to contain a sequence of characters<br />

SilkPerformer User Guide 141


6 CUSTOMIZING TEST SCRIPTS<br />

Customizing Workload<br />

Inserting transaction<br />

declarations<br />

5 Use the Preview area to see how the function declaration looks when it is<br />

inserted into your script. The declaration contains the parameters you<br />

insert into the list as well as the return type. Keep in mind that it is up to<br />

you to add the function code after the function declaration has been<br />

inserted into the script.<br />

6 Click OK.<br />

The new function is placed in your script, and appears in the script editor<br />

window.<br />

Procedure To insert a new transaction declaration:<br />

1 With the test script into which you want to insert a new transaction open,<br />

select Script/New Transaction from the SilkPerformer menu bar.<br />

2 The New Transaction dialog appears.<br />

3 You can also access this dialog by right-clicking in the body of the script<br />

and selecting New Transaction.<br />

4 In the Name field, enter the name of the transaction you want to insert.<br />

The name must begin with a character and may consist of any number of<br />

letters of the alphabet, digits, and underscores.<br />

5 Click OK.<br />

The new transaction is placed in your script, and appears in the script<br />

editor window.<br />

Customizing Workload<br />

“User groups” are groups of virtual users who share similar, though not<br />

identical, behavior. The members of user groups perform slightly different<br />

transactions with the goal of simulating real-world client behavior while<br />

maintaining load balance.<br />

User groups are used in conjunction with parameterized user input data and<br />

profiles (browser types, connection speeds, etc) to simulate typical end-user<br />

activity.<br />

User groups are defined by the “transactions” that they call and the frequency at<br />

which they call those transactions. For example, you might have a user group<br />

called “Searcher” that performs a TLogon transaction once, a TSearch<br />

transaction five times, and a TLogoff transaction once. You might also have a<br />

user group called “Updater” that performs the TLogon transaction once, the<br />

TSearch transaction three times, the TUpdate transaction twice, and the TLogoff<br />

transaction once. A third user group called ”Inserter” might perform the TLogon<br />

transaction once, the TSearch transaction once, the TInsert transaction three<br />

times, and the TLogoff transaction once. Collectively, these user groups can be<br />

142 SilkPerformer User Guide


6 CUSTOMIZING TEST SCRIPTS<br />

Customizing Workload<br />

used to simulate real-world client activity while maintaining load balance (i.e.<br />

transactions are distributed in such a way that all users don’t perform the same<br />

transaction at the same moment).<br />

By assigning different profiles to a user group and a script you can define new<br />

“user types,” which are unique combinations of scripts, user groups, and<br />

profiles.<br />

When multiple users have the same workload profile, they can be combined into<br />

a user group. The workload description of a user group contains the name of the<br />

user group, the transactions that are to be invoked by the user group, and the<br />

frequency at which the transactions are to be invoked (TransCount). User group<br />

workload descriptions are included in the workload sections of SilkPerformer<br />

test scripts (UserDcl).<br />

Visual user group<br />

customization<br />

The Customize User Groups dialog enables you to add new user groups, copy<br />

user groups, rename user groups, and delete user groups. The Customize User<br />

Groups dialog also enables you to insert new transactions, copy transactions,<br />

remove transactions, and rename transactions. Transactions can be added and<br />

removed for each user group. The transaction renaming process renames<br />

transactions in all user groups to which they have been assigned.<br />

The Customize User Groups dialog is available via SilkPerformer’s Script menu<br />

(Script/Customize User Groups). This menu option is only available when a<br />

BDF script is open and active. The Customize User Groups dialog works only<br />

on the active BDF script.<br />

Procedure To customize a user group or transaction:<br />

1 Open and activate the BDF script you want to customize.<br />

2 Select Customize User Groups from SilkPerformer’s Script menu.<br />

3 Right-click a user group or transaction node to open a context menu that<br />

lists the available operations:<br />

User Group Operations:<br />

- Add a new user group<br />

- Copy a user group<br />

- Rename a user group<br />

- Delete a user group<br />

Transaction Operations:<br />

- Insert a transaction<br />

- Copy a transaction<br />

- Rename a transaction<br />

- Remove a transaction<br />

SilkPerformer User Guide 143


6 CUSTOMIZING TEST SCRIPTS<br />

Customizing Workload<br />

4 Select the desired action from the context menu and follow the prompts.<br />

5 Begin and End transactions can be defined for each user group by<br />

selecting/deselecting the checkboxes in the Begin/End column.<br />

6 Entries in the Count column, which represent the number of times that<br />

transactions are to be called, can be edited directly by clicking them.<br />

7 When the Choose transactions randomly checkbox is selected and a user<br />

group contains at least two transactions that are neither “begin”<br />

transactions nor “end” transactions, the Random Order column shows<br />

how the transaction distribution will be weighted, by percentage. For<br />

example, if two non-begin and non-end transactions are present, each<br />

transaction will have a random order distribution of 50%. If three nonbegin<br />

and non-end transactions are present, the transactions will have<br />

random order distributions of 33%, 33%, and 34%.<br />

8 Click OK when you’ve completed user group and transaction<br />

customization. The modified data will then be written to the dcluser<br />

section (and dcltrans section if necessary) of your test script.<br />

User Profiles<br />

Defining browser<br />

types<br />

Defining modem<br />

speeds<br />

Virtual users in a load test can be customized to use any of a wide choice of Web<br />

browsers, and of the functionality they embody. The most popular browsers in<br />

use today can be emulated, with a wide range of versions of Microsoft Internet<br />

Explorer and of Netscape Communicator. Lesser-known browsers are also<br />

available, as are browsers serving mobile phone users. Custom browsers can be<br />

defined, using different versions of threading technologies and of HTTP.<br />

Modems are the means that home users typically use to access the Internet.<br />

Since a user’s modem is usually the slowest link in the network communication<br />

chain, modems need to be simulated in load tests.<br />

Virtual users can be customized to use the bandwidth associated with any of the<br />

major connection types in wide use among consumers today—standard voiceline<br />

modems, ISDN, Digital Subscriber Line, and mobile phone. Custom<br />

settings can be defined where connections use different bandwidth settings for<br />

downstream (from the server to the client) and upstream (from the client to the<br />

server) traffic.<br />

User Types<br />

Setting up individual<br />

IP addresses<br />

Procedure To set up individual IP addresses:<br />

1 Click the Customize Test button on the SilkPerformer Workflow bar.<br />

The Workflow - Customize Test dialog appears.<br />

144 SilkPerformer User Guide


6 CUSTOMIZING TEST SCRIPTS<br />

Customizing Workload<br />

2 Click the System Configuration Manager link.<br />

The System Configuration Manager opens.<br />

3 Click the IP Address Manager tab.<br />

You can also access this by selecting Tools/System Configuration<br />

Manager from the SilkPerformer menu bar, and clicking the IP Address<br />

Manager tab.<br />

4 From the Adapter drop-down list, select the network adapter for which<br />

you want to configure IP addresses. The list contains all the network<br />

adapters to which IP is bound on the computer in question.<br />

5 Use the IP addresses area to find out information about the current<br />

configuration of the network adapter, and to set up IP addresses for the<br />

adapter.<br />

6 To add new IP addresses to the network adapter configuration, click the<br />

Add button.<br />

The Add IP Addresses dialog appears.<br />

7 In the From IP address field enter the IP address you want to add to the<br />

network adapter configuration. If you specify that you want to add<br />

multiple addresses, the System Configuration Manager generates<br />

sequential IP addresses, starting with this address.<br />

8 In the Subnet mask field, enter the subnet mask number for the IP<br />

addresses. This number, combined with the IP addresses, identifies<br />

which network the computers are on.<br />

9 To add multiple IP addresses, either select the Number option and enter<br />

the number of addresses you want in the field; or select the To IP address<br />

option.<br />

In the latter case, specify the highest IP address you want to add to the<br />

network adapter configuration. The System Configuration Manager<br />

generates sequential IP addresses, starting with the address you type in<br />

the From IP address field and ending with this address.<br />

10 Select the Do not add conflicting addresses option to only add IP<br />

addresses to the network adapter configuration that do not cause<br />

conflicts.<br />

11 When enabling the Allow CIDR addresses checkbox, the verification of<br />

the IP address and subnet mask pair is disabled. Classless Inter-Domain<br />

Routing (CIDR) has been adopted as a solution to the scaling problem in<br />

the Internet. CIDR is not as restrict as the "normal" IP-Routing.<br />

12 Click OK.<br />

13 To edit a selected IP address, click the Edit button.<br />

The Edit IP Addresses dialog appears.<br />

SilkPerformer User Guide 145


6 CUSTOMIZING TEST SCRIPTS<br />

Customizing Workload<br />

14 Edit the IP address and the subnet mask.<br />

15 Select the Do not add conflicting addresses option to automatically<br />

remove the modified IP address from the network adapter configuration<br />

if it causes any conflicts.<br />

16 Click OK.<br />

17 To save the network adapter configuration to a file, click the Save button.<br />

By default, the file is stored in the System Configuration Manager home<br />

directory.<br />

18 To load a network adapter configuration from a file, click the Load<br />

button and locate the appropriate file.<br />

19 To remove IP addresses, click the Remove button. The Remove IP<br />

Addresses dialog appears.<br />

Note Be cautious about removing multiple IP address at once.<br />

20 In the From IP address field, enter the IP address you want to remove<br />

from the network adapter configuration. If you elect to remove multiple<br />

addresses, the System Configuration Manager deletes all successive IP<br />

addresses, starting with this address.<br />

21 In the Subnet mask field, enter the subnet mask number for the IP<br />

addresses you want to remove.<br />

22 To remove multiple IP addresses, select either the Number or the To IP<br />

address option.<br />

Select the Number option to specify the number of IP addresses you want<br />

to remove from the network adapter configuration, and enter the number<br />

of addresses in the field. The System Configuration Manager deletes that<br />

number of successive IP addresses, starting with the address you type in<br />

the From IP address field.<br />

23 Select the To IP address option to specify the highest IP address you<br />

want to remove from the network adapter configuration. The System<br />

Configuration Manager deletes all successive IP addresses, from the<br />

address you type in the From IP address field to this address.<br />

24 Click OK.<br />

25 If you want to check whether IP routing to a specified computer works<br />

for all configured IP addresses, enter the name or IP address of the<br />

computer in the Host name or IP address field in the Network area.<br />

26 Click Check. A report from this check will be provided at the bottom of<br />

the dialog.<br />

27 Click OK to exit the dialog and save your changes.<br />

146 SilkPerformer User Guide


6 CUSTOMIZING TEST SCRIPTS<br />

Customizing Workload<br />

Working with Web<br />

forms<br />

Web forms are defined in the dclform section of test scripts.<br />

Form declaration syntax<br />

The form declaration is specified by a form name (for example, FORM_<br />

NAME) which can be any valid identifier string and must be followed by a<br />

colon. The left side string specifies the name of the field or parameter. An empty<br />

string is allowed for nameless URL parameters, such as image map coordinates.<br />

The right value specifies the data value of the field or parameter. These can be<br />

global constants, global variables and random variables.<br />

The example below illustrates the required syntax for Web form declarations:<br />

dclform<br />

FORM_NAME:<br />

"field-name" := R-Value;<br />

Web form string encoding<br />

All strings used in the forms declaration will be URL encoded when sent to the<br />

server. This means that unsafe characters will automatically be converted into a<br />

hexadecimal sequence (%xx). Parameters added directly to the URL will not be<br />

encoded (for example, WebUrl("http://host/cgi-bin/doit?MyUnSafeMessage&-<br />

?%?-?", 0.0). This allows applications to use non-standard URL parameters.<br />

Web form script example<br />

The following example shows a portion of a SilkPerformer script for simulating<br />

a form submission. Random variables rsEmail and rsPlatform with two different<br />

random functions (RndFile and RndInd) are defined in the random variables<br />

section. With each subsequent call to WebFormPost and WebFormGet, the<br />

random variables are refreshed and contain new random values. These random<br />

values are used to generate the URL encoded form string automatically sent<br />

within the request to the Web server. WebFormPost adds the form content string<br />

at the end of the HTTP header while WebFormGet adds it at the end of the URL<br />

separated by a “?”.<br />

dclrand<br />

rsEmail : RndFile<br />

("elname.rnd", 20);<br />

rsPlatform : RndInd("Windows NT" = 0.3;<br />

"Windows 2000" = 0.6;<br />

"other" = 0.1);<br />

dcltrans<br />

transaction TWebFormPost<br />

begin<br />

WebFormPost("http://www.comp.com/cgi/FormMail.pl", CGI_<br />

CUST_SUPPORT, nWait);<br />

WebFormGet("http://www.comp.com/cgi/form", CGI_CUST_<br />

SUPPORT, nWait);<br />

end TWebFormPost;<br />

dclform<br />

CGI_CUST_SUPPORT:<br />

"email" := rsEmail,<br />

SilkPerformer User Guide 147


6 CUSTOMIZING TEST SCRIPTS<br />

Customizing Workload<br />

"sitetype" := "business",<br />

"sitelang1" := "english",<br />

"platform" := rsPlatform;<br />

Working with cookies<br />

SilkPerformer supports record and replay for cookies used in Web applications.<br />

Cookies enable Web servers to store and retrieve state information on the client<br />

computer. A server, when submitting an HTTP object, may also send a<br />

“cookie,” a state object that the client will store for a specified amount of time.<br />

The cookie includes a description that defines a range of URLs for which it is<br />

valid. The next time a client reconnects from within this range of URLs, the<br />

contents of the cookie will be submitted to the server in addition to the request.<br />

Cookies may either be persistent or non-persistent. Persistent cookies are stored<br />

in a cookie database on the client computer and are deleted only after a specified<br />

expiration date occurs. Non-persistent cookies are maintained only during a<br />

single Web browser session and are deleted when the client Web application is<br />

closed. To create as realistic a simulation as possible, only persistent cookies are<br />

recorded (and thus replayed) by the Internet Recorder.<br />

Cookie database functions<br />

SilkPerformer creates a non-persistent cookie database for each virtual user.<br />

During a load test, cookies are automatically received into and sent from the<br />

database. To allow you to evaluate or modify cookies during a load test,<br />

WebCookie functions are provided for users to set cookies into, and access them<br />

from, the cookie database.<br />

Function<br />

Description<br />

WebCookieGet Returns cookies for the specified URL and all its<br />

parent URLs.<br />

WebCookieSet<br />

Sets a cookie in SilkPerformer’s cookie database<br />

for the specified URL.<br />

WebCookieListFirst Retrieves the first cookie in the cookie database.<br />

WebCookieListNext Retrieves the next cookie in the cookie database.<br />

WebCookieResetDb Deletes all cookies from the cookie database.<br />

Table 2: Cookie database functions<br />

Before you use these functions, you should be familiar with cookies as outlined<br />

at http://www.netscape.com/newsref/std/cookie_spec.html.<br />

Important notes<br />

Keep in mind the following when you work with cookies with SilkPerformer:<br />

- The SilkPerformer cookie database is non-persistent and therefore<br />

only exists while a load test is running.<br />

148 SilkPerformer User Guide


6 CUSTOMIZING TEST SCRIPTS<br />

Customizing Session Handling<br />

- Each virtual user has a cookie database of its own and therefore the<br />

contents of the cookie database varies from virtual user to virtual<br />

user.<br />

- Although cookies are generally created at server side, you can<br />

simulate already existing cookies using the WebCookieSet function.<br />

Customizing Session Handling<br />

Session handling for<br />

Web applications<br />

Web server applications often generate information at runtime that is necessary<br />

in order to identify further client requests. In the response to the browser, the<br />

server may include a unique string, commonly known as the Session ID. This<br />

string is returned by the browser to the server as a part of each subsequent<br />

request, allowing the server to identify the unique Web session of which the<br />

request is a part. Generally, Session IDs refer to the method the Web server<br />

application uses to identify individual users and to associate this identification<br />

with the state of the user session information that the application has previously<br />

had with those users.<br />

Session IDs can be sent to the client in a number of ways. Most often you will<br />

find them included in cookies, or inside HTML as part of URL's used in hyper<br />

links or embedded objects, or in hidden HTML form fields. Session IDs are sent<br />

back to the server in cookies, URL's, and HTTP post data.<br />

Example<br />

Session information inside cookies:<br />

From the server:<br />

Set-Cookie: SessionID=LGIJALLCGEBMIBIMFKOEJIMM; path=/<br />

To the server:<br />

Cookie: SessionID=LGIJALLCGEBMIBIMFKOEJIMM<br />

Session information in the URL's of HTML links:<br />

From the server:<br />

<br />

...<br />

<br />

Enter Shop<br />

<br />

...<br />

<br />

To the server:<br />

GET /ShopIt/acknowledge.asp? SessionID =<br />

LGIJALLCGEBMIBIMFKOEJIMM HTTP/1.1<br />

SilkPerformer User Guide 149


6 CUSTOMIZING TEST SCRIPTS<br />

Customizing Session Handling<br />

Session information in hidden form fields:<br />

From the server:<br />

<br />

...<br />

<br />

Currently we only accept Credit Cards<br />

<br />

<br />

<br />

<br />

...<br />

<br />

To the server:<br />

POST /ShopIt/kindofpayment.asp HTTP/1.1<br />

...<br />

SessionId=LGIJALLCGEBMIBIMFKOEJIMM&name=Jack&paymentButt<br />

on=Submit<br />

Value of customized<br />

session handling<br />

When to use<br />

customized session<br />

handling<br />

Assuming that a WebPageUrl call in your script uses a URL that contains a<br />

session ID as part of the query string of the URL. When replaying the script, this<br />

hard coded static session ID is sent to the server. Because the session ID does<br />

not correctly identify your replayed session—it still identifies the recording<br />

session—the replay won’t work correctly. By not replacing static session IDs in<br />

your script with dynamic values that had been generated at runtime, your Web<br />

application will usually generate errors such as “We are sorry, your session has<br />

expired. Please return to the login screen and try again”.<br />

The good news is that with SilkPerformer, session customization is not often<br />

necessary and, even if manual session customization is needed, SilkPerformer's<br />

TrueLog Explorer will guide you through the process.<br />

Most often when you record a script, it will work without any modifications<br />

necessary for the customization of session handling. SilkPerformer therefore<br />

uses multiple, highly sophisticated methods that prevent the user from manually<br />

handling hard coded session IDs:<br />

• Cookie Management: When your server uses cookies to exchange<br />

session information, SilkPerformer will automatically handle dynamic<br />

session ID values. Because SilkPerformer exactly emulates the cookie<br />

management of a browser, it will send cookies the same way a browser<br />

sends them to your server. No manual interaction is needed for state<br />

management.<br />

• Page-based browser level API (Page-level API): Using the Page-level<br />

API when recording (which is the default setting) will generate scripts<br />

that mainly generate context-full Web API function calls such as<br />

150 SilkPerformer User Guide


6 CUSTOMIZING TEST SCRIPTS<br />

Customizing Session Handling<br />

WebPageLink and WebPageSubmit. Context-full Web API calls are<br />

working on the HTML level, not the HTTP level, and thus they do not<br />

use URL's as parameters. For all context-full API calls, manual session<br />

customization is not needed. The page-level API is used if you choose<br />

the application type Web business transaction (HTML/HTTP) in the<br />

Outline Project dialog. Therefore it is strongly recommended that you<br />

use SilkPerformer's page-level API instead of the low-level browserlevel<br />

API.<br />

Due to the heavy use of client side Java Script for dynamically generating<br />

HTML, the SilkPerformer recorder sometimes loses the HTML context and<br />

scripts context-less Web API calls. Context-less Web API calls, such as<br />

WebPageUrl and WebPageForm, contain URL's as parameters. In these rare<br />

cases, your script may contain hard coded session IDs. You will find them in the<br />

URL parameters of Web API calls and in the form fields declared in the<br />

DCLFORM section of your script.<br />

Example<br />

Context-full script (there is nothing to customize):<br />

transaction TMain<br />

begin<br />

WebPageUrl("http://lab38/ShopIt/"); // first call is<br />

always context-less<br />

WebPageLink("Join the experience!");<br />

WebPageSubmit("Enter", SHOPIT_MAIN_ASP001);<br />

WebPageLink("Products");<br />

end TMain;<br />

dclform<br />

SHOPIT_MAIN_ASP001:<br />

"SessionID" := "" , // hidden value:<br />

"LGIJALLCGEBMIBIMFKOEJIMM"<br />

// recognized as a hidden form<br />

// field, the value is taken from<br />

// the actual HTML form field.<br />

"name" := "Jack", // changed<br />

"New-Name-Button" := "" ; //unchanged<br />

value: "Enter"<br />

Scripts with context-less functions (static session data that needs to be<br />

customized is included in the DCLFORM section):<br />

transaction TMain<br />

begin<br />

WebPageUrl("http://lab38/ShopIt/"); // first call is<br />

always context-less<br />

SilkPerformer User Guide 151


6 CUSTOMIZING TEST SCRIPTS<br />

Customizing Session Handling<br />

WebPageUrl("http://lab38/ShopIt/main.asp", NULL,<br />

SHOPIT_MAIN_ASP001);<br />

WebPageForm("http://lab38/ShopIt/main.asp", SHOPIT_<br />

MAIN_ASP002);<br />

WebPageUrl("http://lab38/ShopIt/products.asp");<br />

end TMain;<br />

dclform<br />

SHOPIT_MAIN_ASP001:<br />

"from" := "welcome";<br />

Customizing session<br />

handling<br />

Identifying Session<br />

IDs<br />

SHOPIT_MAIN_ASP002:<br />

"SessionID" := "LGIJALLCGEBMIBIMFKOEJIMM",<br />

"name"<br />

:= "Jack",<br />

"New-Name-Button" := "Enter";<br />

The following basic steps can be used to customize session handling. Each of<br />

these steps is detailed in the following sections:<br />

1 Identify the session ID that needs to be customized.<br />

2 Search for the first response (Web API call in the script) in which the<br />

session ID is sent from the server to the client.<br />

3 Parse out the session ID from the found response of the Web API call<br />

into a variable.<br />

4 Replace all occurrences of the hard coded session ID in the script with<br />

this variable.<br />

Without the support of SilkPerformer's TrueLog Explorer functionality, even<br />

the first step of this process, that is, identifying the session relevant data, could<br />

be challenging.<br />

As previously mentioned, session IDs are dynamic values generated by Web<br />

application to maintain the state of a Web application. Because of their dynamic<br />

nature, session IDs differ between each user session. Thus they can also differ<br />

between the recorded session and the replayed session. By comparing record<br />

and replay logs for differences, you can find these dynamic values.<br />

Finding session IDs can be easily done using SilkPerformer's TrueLog Explorer.<br />

Choosing Customize Session Handling from the workflow bar will<br />

automatically open the corresponding record TrueLog file of the opened replay<br />

TrueLog. By going through your record and replay log step by step, you can<br />

look for differences in the HTML responses between the record and replay<br />

scripts. The HTML Source Differences tab shows you an overview of all the<br />

differences between two corresponding HTML documents.<br />

The differences found between the recording session and the replay session<br />

scripts are the first source to consider for locating possible session IDs. Not all<br />

of the differences that you find in the returned data of your recording session and<br />

152 SilkPerformer User Guide


6 CUSTOMIZING TEST SCRIPTS<br />

Inserting Parsing Functions<br />

the returned data of your replay session are relevant for session customization.<br />

Only if you find differences between the record and replay scripts, will you then<br />

have found a possible candidate for session customization.<br />

More precisely:<br />

If the differing phrase in the server response data of the recording session can<br />

also be found in the URLs of Web API calls or in the form fields inside the<br />

DCLFORM section of your script, you have identified a possible session ID that<br />

can be customized.<br />

Parsing and replacing<br />

session IDs<br />

Now that you have identified the session ID and the Web API call in the BDL<br />

script which returns the session ID, you must parse out the session ID from the<br />

response to the Web API call. SilkPerformer offers numerous parsing functions<br />

that enable you to parse out values from server responses and store the result in a<br />

variable in your script (for details see WebParse* functions in the BDL Function<br />

Reference). The next step is to replace all occurrences of the hard coded session<br />

ID in the script with this variable.<br />

SilkPerformer 's TrueLog Explorer also supports this task so that no manual<br />

interaction with your script is needed. TrueLog Explorer will generate the<br />

appropriate parsing and replacement statements automatically without the need<br />

to manually change a single line of code in your BDL script. It automatically<br />

recognizes relevant session data and shows it in the view HTML Source<br />

Difference. There, you simply can select the line that contains the session ID and<br />

customize it by double clicking on the row. A dialog, in which you can check<br />

the parameters of the parsing function, will be shown. Accepting the dialog will<br />

generate the parsing and replacement statements that are needed to customize<br />

the session handling for the selected session ID.<br />

Inserting Parsing Functions<br />

Similar to the verification functions, parsing functions can be used to parse<br />

content returned from a Web server and check if the values meet your testing<br />

criteria. Different from the verification functions, which basically check the<br />

occurrence of a specified input value, the parsing functions parse the content of<br />

a server response and return the parsed value in a BDL variable. Typically, you<br />

will use parsing functions for the following tasks:<br />

- Parse session IDs and replace static session IDs in the script with<br />

parsed, dynamic session IDs to maintain state information in Web<br />

applications. This is one of the main fields of application of parsing<br />

functions.<br />

- Build enhanced verifications into your script with parsing functions,<br />

which cannot be done with verification functions. For example, if<br />

you want to verify that the value of column 2 of row 3 in an HTML<br />

SilkPerformer User Guide 153


6 CUSTOMIZING TEST SCRIPTS<br />

Inserting Parsing Functions<br />

table is equal to the sum of the values of column 2 of row 1 and<br />

column 2 of row 2. By using parsing functions to parse out the three<br />

values and compare them in our script, you can build this enhanced<br />

verification check.<br />

- Conditional execution of parts of your testing script which depends<br />

on the data returned from the server. For example, an HTTP request<br />

returns an HTML page which includes: "Results: items<br />

found". You want to execute different actions depending on the<br />

value of . Let's say you want to exit the transaction if =<br />

0, and you want to go to link "Details" if = 1, and you want to<br />

go to link "Next" if is greater than 0. To accomplish this, you<br />

need to parse the value of from the HTML page and script the<br />

actions, depending on the value you have parsed out.<br />

SilkPerformer offers two means to enhancing your test scripts with parsing<br />

functionality:<br />

- Apply parsing functions visually in TrueLog Explorer without the<br />

need to write a single line of BDL code. TrueLog Explorer will<br />

automatically generate parsing functions in your script.<br />

- Directly enhance your script by coding verification functions<br />

manually.<br />

The following parsing functions are available with SilkPerformer:<br />

HTML content parsing<br />

Response data<br />

parsing<br />

HTML content parsing functions parse out portions of the rendered, visible<br />

HTML content. You can apply HTML content parsing functions in the HTML<br />

view of TrueLog Explorer.<br />

- WebParseHtmlBound<br />

- WebParseHtmlTitle<br />

- WebParseTable<br />

- WebParseResponseTag<br />

- WebParseResponseTagContent<br />

Data parsing functions parse out portions of the response data returned from the<br />

server. In cases in which an HTML document is returned from the server, the<br />

complete source code of the HTML document is parsed. You can apply data<br />

verification functions in the source view of TrueLog Explorer.<br />

- WebParseDataBound (this function replaces the obsolete<br />

WebParseResponseData function)<br />

- WebParseResponseHeader<br />

See “Matrix: Functions, the Recorder, and TrueLog Explorer” for more<br />

details.<br />

154 SilkPerformer User Guide


6 CUSTOMIZING TEST SCRIPTS<br />

Adding Verifications to Test Scripts<br />

Adding Verifications to Test Scripts<br />

Value of verification<br />

checks<br />

Often application errors do not cause erroneous HTTP responses. Instead, the<br />

application responds with incorrect data values or with error messages<br />

incorporated in the HTML content, such as “A Servlet Exception<br />

occurred&ldots;" or "Server Too Busy&ldots;”. A simple check of the HTTP<br />

status code will not uncover this class of errors. Therefore, application errors are<br />

often overseen if you do not build additional checks into your test script.<br />

Verification functions help you to check for application errors that are not<br />

simple, standard HTTP errors. With verification built into your test scripts, your<br />

test evolves from being a simple load test to a becoming a combined load and<br />

functionality test. You can use these scripts without major performance<br />

penalties, even during large load test scenarios. They will, therefore, be able to<br />

detect a new class of application errors—errors which only occur under load,<br />

but which would be overlooked by a simple load test script without additional<br />

verification checks.<br />

SilkPerformer offers three means of enhancing your test scripts with verification<br />

functionality:<br />

• Automatically let the Recorder generate verification functions during the<br />

recording session.<br />

• Apply verifications visually via TrueLog Explorer without the need to<br />

write a single line of BDL code. TrueLog Explorer will automatically<br />

generate verification functions into your script.<br />

• Directly enhance the script by coding verification functions manually.<br />

All three approaches are based on SilkPerformer's verification functions. The<br />

following verification functions are available with SilkPerformer.<br />

HTML content<br />

verification<br />

HTML content verification functions verify the rendered, visible HTML<br />

content. You can apply HTML content verification functions in the HTML view<br />

of TrueLog Explorer.<br />

- WebVerifyHtml<br />

- WebVerifyHtmlBoundEx<br />

- WebVerifyHtmlTitle<br />

- WebVerifyTable<br />

See the BDL Function Reference for details.<br />

Data verification<br />

Data verification functions verify the complete response data returned from the<br />

server. In cases in which an HTML document is returned from the server, it<br />

provides the complete source code of the HTML document. You can apply data<br />

verification functions in the Source view of TrueLog Explorer.<br />

- WebVerifyData<br />

SilkPerformer User Guide 155


6 CUSTOMIZING TEST SCRIPTS<br />

Adding Verifications to Test Scripts<br />

Automatically<br />

generating<br />

verifications during<br />

recording<br />

- WebVerifyDataBoundEx<br />

- WebVerifyDataDigest<br />

See the BDL Function Reference for details.<br />

See “Matrix: Functions, the Recorder, and TrueLog Explorer” for more<br />

details.<br />

HTML title verifications and response data digest verifications can be<br />

automatically generated during a recording session. To enable automatically<br />

generated verifications during recording, go to the Menu Settings/Active Profile/<br />

Record/Web/Verification/Recording and check the Record title verification and<br />

the Record digest verification checkboxes.<br />

Title Verification<br />

Title verification is especially useful if you want a simple and automatic means<br />

of checking if your application returns the correct Web pages. It is not useful if<br />

the title (the content of the HTML tag ) of all of your HTML pages is<br />

not set or they all have the same title.<br />

The recorder can automatically generate a title verification function for each<br />

Web Page-level API call or each browser-level API call when retrieving an<br />

HTML document.<br />

Example script generated by SilkPerformer's Recorder with Record title<br />

verification enabled:<br />

transaction TMain<br />

begin<br />

WebVerifyHtmlTitle("ShopIt - Greetings");<br />

WebPageUrl("http://bi_dell/shopit/", ...);<br />

WebVerifyHtmlTitle("ShopIt - Confirm your name");<br />

WebPageLink("Join the experience!", ...);<br />

end TMain;<br />

Title Verification can also be generated visually for selected Web pages with<br />

TrueLog Explorer.<br />

Digest Verification<br />

Digest verification is useful if you want to verify the complete content of a<br />

rather static HTML page. Digest verification is not useful if your HTML page is<br />

dynamic or contains session information in links, embedded objects, and hidden<br />

form fields and therefore changes with each call.<br />

The function call WebVerifyDataDigest checks if the data that SilkPerformer<br />

receives during replay differs from the data that the Recorder captured during an<br />

earlier recording session. As does the Recorder, SilkPerformer generates a<br />

digest containing information about the occurrence of each character and<br />

compares the results with the digest generated by the Recorder. Using this<br />

function, it is possible to check if SilkPerformer receives the same data as the<br />

client application did during recording. The recorder automatically generates a<br />

digest verification function for each Web Page-level API call or each browser-<br />

156 SilkPerformer User Guide


6 CUSTOMIZING TEST SCRIPTS<br />

Adding Verifications to Test Scripts<br />

level API call retrieving a document with a content type specified for digest<br />

verification (by default: text/html). To enable digest verifications during replay,<br />

go to Settings/Active Profile/Replay/Web/Verification/Data and select check the<br />

Digest verification option.<br />

For details about digest verification, see WebVerifyDataDigest in the BDL<br />

Function Reference.<br />

Example script generated by SilkPerformer's Recorder with Record digest<br />

verification enabled:<br />

const<br />

gsVerDigest_ShopIt_Greetings := "\h014200000B&ldots;"<br />

"\h160005000A&ldots;"<br />

"\h030001000A&ldots;"<br />

"\h0900410020&ldots;";<br />

transaction TMain<br />

begin<br />

...<br />

WebVerifyDataDigest(gsVerDigest_ShopIt_Greetings,<br />

162);<br />

WebPageUrl("http://bi_dell/shopit/", "ShopIt -<br />

Greetings");<br />

...<br />

end TMain;<br />

Visually generating<br />

verifications with<br />

TrueLog Explorer<br />

With SilkPerformer, you can apply verifications visually in TrueLog Explorer<br />

without the need to write a single line of BDL code. You can apply verification<br />

checks in the Rendered HTML view and the HTML Source view of TrueLog<br />

Explorer. Just mark the text you want to verify, and choose the verification<br />

method you want to use. You can choose the verification method from four<br />

different places:<br />

• Script-Menu,<br />

• Add Verifications dialog,<br />

• Context menu of the Rendered HTML view and the HTML Source view,<br />

or<br />

• Tool bar.<br />

TrueLog Explorer automatically generates the appropriate verification function<br />

into your script.<br />

HTML verification<br />

HTML verifications check rendered, visible HTML content. They verify the<br />

textual content that you see in your browser. Verifications that you apply in the<br />

Rendered HTML view will generate the following HTML verification<br />

functions:<br />

SilkPerformer User Guide 157


6 CUSTOMIZING TEST SCRIPTS<br />

Adding Verifications to Test Scripts<br />

• WebVerifyHtmlTitle: Checks the title (the content of the HTML tag<br />

) of the selected HTML page (no selection of text is needed to<br />

apply a title verification). This function is generated when you select<br />

Verify Page Title from the menu or when you select Verify the page title<br />

from the Add Verifications dialog.<br />

• WebVerifyHtml: Checks the text you have marked in the Rendered<br />

HTML view of the selected HTML document. TrueLog Explorer will<br />

automatically detect the number of occurrences of the marked text in the<br />

selected HTML document. Selecting Verify Selected Text from the menu<br />

or the Add Verifications dialog will open up the Insert Content<br />

Verification dialog that generates the function.<br />

• WebVerifyHtmlBoundEx: Checks the text you have marked in the<br />

Rendered HTML view. TrueLog Explorer will automatically detect<br />

unique boundaries that identify the position of the marked text. Selecting<br />

Verify Selected Text from the menu or the Add Verifications dialog will<br />

open up the Insert Content Verification dialog. The function is generated<br />

when checking the Require boundary strings checkbox.<br />

• WebVerifyTable: Checks the text you have marked within a cell of an<br />

HTML table in Rendered HTML view. TrueLog Explorer automatically<br />

identifies the HTML table, as well as the row and the column of the cell<br />

you have marked. Selecting Verify Selected Text in an HTML Table from<br />

the menu or the Add Verifications dialog will open the Insert Table<br />

Verification dialog that generates the function.<br />

Note If the HTML document is contained within a set of frames, the<br />

text will only be verified against the frame that contains the selected<br />

text, not the whole page.<br />

Response data<br />

verification<br />

Response data verification functions can be applied to the complete response<br />

data returned from the server. Using TrueLog Explorer, you can visually apply<br />

them by marking the text in the HTML Source view. Depending on the selection<br />

you choose, TrueLog Explorer generates the following data verification<br />

functions:<br />

• WebVerifyData: Checks the text you have marked in the HTML Source<br />

view of the selected HTML document. TrueLog Explorer will<br />

automatically detect the number of occurrences of the marked text in the<br />

HTML source. Selecting Verify Selected Text from the menu or the Add<br />

Verifications dialog will open the Insert Content Verification dialog that<br />

generates the function.<br />

• WebVerifyDataBoundEx: Checks the text you have marked in the HTML<br />

Source view. TrueLog Explorer will automatically detect unique<br />

boundaries that identify the position of the marked text. Selecting Verify<br />

158 SilkPerformer User Guide


6 CUSTOMIZING TEST SCRIPTS<br />

Manual Script Editing<br />

Selected Text from the menu or the Add Verifications dialog will open up<br />

the Insert Content Verification dialog. This function is generated by<br />

checking the Require boundary strings checkbox.<br />

Enabling verification<br />

checks during replay<br />

Verification functions can be enabled/disabled in the profile settings dialog<br />

Profile/Replay/Web/Verification:<br />

- HTML/Title verification: Enables/disables the function<br />

WebVerifyHtmlTitle.<br />

- HTML/HTML verification: Enables/disables the functions<br />

WebVerifyHtml and WebVerifyHtmlBoundEx.<br />

- HTML/Table verification: Enables/disables the function<br />

WebVerifyTable.<br />

- HTML/Link checking: Enables/disables link checks for all Web<br />

Page-level API calls. You can select this option to check the validity<br />

of links in HTML documents received during a load test. For each<br />

link included in an HTML document, additional requests are sent to<br />

check that the link is valid.<br />

- Data/Data verification: enables/disables the functions<br />

WebVerifyData and WebVerifyDataBoundEx.<br />

- Data/Digest verification: enables/disables the function<br />

WebVerifyDataDigest.<br />

You can overrule the profile settings in your script with the BDL function<br />

WebSetOption.<br />

Specifying verification<br />

and parsing functions<br />

All parsing and verification functions must be specified before the Web API<br />

calls that will offer the response data that is to be parsed/verified. You can<br />

specify multiple parse/verification functions before a Web API call. The order<br />

of the parse/verification functions is not relevant (Exception:<br />

WebParseDataBound and WebVerifyDataBound using the flag WEB_FLAG_<br />

SYNCHRON).<br />

Example BDL:<br />

WebVerifyHtml("Proper equipment leads to a successful<br />

trip", 1, ...);<br />

WebPageLink("ShopIt");<br />

Manual Script Editing<br />

An effective means of customizing the behavior of virtual users is to manually<br />

edit the test scripts. SilkPerformer scripts are written in the program's<br />

proprietary scripting language, the Benchmark Description Language (BDL).<br />

SilkPerformer User Guide 159


6 CUSTOMIZING TEST SCRIPTS<br />

Using the System Configuration Manager<br />

To edit scripts manually you need to be familiar with BDL, which is a high-level<br />

language resembling Pascal.<br />

You must be familiar with how to create prototypes of user requests, and how to<br />

define the typical components of a load testing script, including modules,<br />

functions, workload definitions, transactions, Web forms, and more. Extensive<br />

help on those topics is available in the BDL Function Reference.<br />

Using the System Configuration Manager<br />

The System Configuration Manager enables a wide range of options to be set for<br />

any agent computer from the controller computer. The agent software and the<br />

launcher service can be configured, started, stopped, locked, and unlocked from<br />

here.<br />

For load testing, some of the most important functions of the System<br />

Configuration Manager are those that allow agents to be easily optimized for<br />

large load tests. The number of current TCP/IP connections that can be<br />

established from the computer to the server being tested can be increased; this is<br />

affected by a simple slider control. Also, if the application under test uses a load<br />

balancer, individual IP addresses can be allotted to the virtual users.<br />

The System Configuration Manager also enables information about the<br />

hardware, operating system, and memory being used by a selected agent to be<br />

viewed; reports can be written, settings can be changed, and the agent computer<br />

can be started to make the changes effective.<br />

Serializing and Synchronizing Virtual Users<br />

There are several SilkPerformer functions that allow you to either serialize or<br />

synchronize transactions in your test scripts in to better control the timing of<br />

loads in your simulation.<br />

Both serialization and synchronization are implemented using high-level<br />

functions that call pre-existing Windows NT functions.<br />

Serialization enables you to test the effects of transactions executed one at a<br />

time. This is useful, for instance in connecting to a server that is not able to<br />

handle a large number of concurrent logins. Serialization uses a function called<br />

CreateMutex, which creates a token (semaphore) that only one user can possess<br />

at a time. When the user completes the transaction, the token is released and<br />

made available to another user.<br />

Synchronization is useful in testing the effects of a large number of<br />

simultaneously called transactions. It allows you to create stress on your system<br />

to test specific concurrency issues. Synchronization works by employing an<br />

160 SilkPerformer User Guide


6 CUSTOMIZING TEST SCRIPTS<br />

Serializing and Synchronizing Virtual Users<br />

Function overview<br />

additional user called an Event Starter, which functions like the starting gun at<br />

the beginning of a race. Using the CreateEvent function, you can use the Event<br />

Starter user to send an Event object after a specified period of time. You can set<br />

up the users in the simulation to wait for this event and thus perform a specified<br />

transaction simultaneously when the event is released.<br />

The following functions are used in serializing and synchronizing transactions<br />

and users in SilkPerformer scripts.<br />

Function<br />

Description<br />

CloseHandle<br />

Closes an open object handle<br />

previously opened with CreateEvent,<br />

CreateEventEx, CreateMutex, or<br />

CreateMutexEx.<br />

CreateEvent<br />

Uses the Win32 CreateEventEx<br />

function to create a named event<br />

object.<br />

CreateEventEx<br />

Creates a named or unnamed event<br />

object.<br />

CreateMutex<br />

Uses the Win32 CreateMutexEx<br />

function to create a named mutex<br />

object. Mutex objects are used to<br />

serialize access to critical sections<br />

inside transactions for multiple<br />

concurrent users.<br />

PulseEvent<br />

Provides a single operation that sets<br />

the state of a specified event object<br />

to signaled and then resets it to<br />

nonsignaled after releasing the<br />

appropriate number of waiting<br />

threads.<br />

ReleaseMutex<br />

Releases ownership of the specified<br />

mutex object.<br />

WaitFor<br />

Waits for a number of users to call<br />

this function.<br />

WaitForSingleObject<br />

Returns when a specified object is in<br />

the signaled state or when the<br />

timeout interval elapses.<br />

Table 3: Functions for serializing and synchronizing virtual users<br />

SilkPerformer User Guide 161


6 CUSTOMIZING TEST SCRIPTS<br />

Serializing and Synchronizing Virtual Users<br />

Note Refer to the SilkPerformer Benchmark Description Language<br />

Reference manual and online Help for complete details and<br />

examples of all SilkPerformer functions.<br />

Serialization<br />

Serialization functions<br />

Serializing users and transactions requires the use of a token or mutex object.<br />

Named mutex objects are created by calling the CreateMutex function. The<br />

users to be synchronized have to wait until they receive the mutex object. This<br />

guarantees that only one user executes a transaction at a time.<br />

After a user has completed the transaction, the user must release the token by<br />

calling the ReleaseMutex function. This makes the mutex object available for<br />

other users.<br />

The following functions are used in serializing transactions and users:<br />

- CreateMutex<br />

- CreateMutexEx<br />

- ReleaseMutex<br />

- WaitForSingleObject<br />

For details on these functions, refer to the BDL Function Reference<br />

Serialization sample<br />

script<br />

The following example is excerpted from a sample script called Mutexlogin.bdf,<br />

located in the Samples\Database folder in the SilkPerformer installation<br />

directory. The script consists of three transactions. TMain waits until the user<br />

possesses the token, and then connects to the DBMS; Selling executes the<br />

database transaction; and CleanUp closes the connection to the database and<br />

releases all the resources.<br />

Initially, a mutex object called MyConnectMutex is created to serialize access to<br />

critical sections inside transactions for multiple concurrent users. Calling the<br />

WaitForSingleObject function effects a delay until the mutex object is in the<br />

signaled state. This means that from that point forward, only the current<br />

transaction is executed, and this condition remains until the token is released.<br />

During execution time a connection to a database system is established. After<br />

successfully connecting, the ownership of the mutex object is released. After<br />

these steps have been completed successfully, the transaction is committed. In<br />

this example, only connecting to the database system is serialized.<br />

benchmark MutexLogin<br />

use "dbapi.bdh"<br />

var<br />

gHdbc1 : number; // handle for database connection<br />

gHMutex : number; // mutex handle<br />

dcluser<br />

user<br />

Seller<br />

transactions<br />

TMain : begin;<br />

Selling : 50;<br />

162 SilkPerformer User Guide


6 CUSTOMIZING TEST SCRIPTS<br />

Serializing and Synchronizing Virtual Users<br />

CleanUp : end;<br />

dcltrans<br />

transaction TMain<br />

var<br />

str: string;<br />

begin<br />

// SYNC: serialize connect transaction with mutex object<br />

// (enter critical section)<br />

gHMutex := CreateMutex("MyConnectMutex");<br />

WaitForSingleObject(gHMutex, INFINITE);<br />

gHdbc1 := DB_Connect("dsn=sqs_purple;uid=u1;pwd=u1");<br />

Print("Connected!", 1, 1);<br />

// SYNC: leave critical section and pass control to<br />

other user<br />

ReleaseMutex(gHMutex);<br />

end TMain;<br />

// process database transaction<br />

transaction Selling<br />

begin<br />

...<br />

end Selling;<br />

transaction CleanUp<br />

begin<br />

DB_Disconnect(gHdbc1);<br />

end CleanUp;<br />

Synchronization<br />

Synchronization<br />

functions<br />

Synchronizing users and transactions requires at least one event object and an<br />

additional user to start the events. The event starter user has to be defined in the<br />

user declaration section of the script. This user functions to control the sequence<br />

of events by setting the state of corresponding event objectS to signaled and by<br />

resetting them to nonsignaled after releasing the appropriate number of waiting<br />

users. SilkPerformer provides the PulseEvent function for this purpose.<br />

The other users call the WaitForSingleObject function to wait until the specified<br />

event is in the signaled state. Using the WaitFor function, users are able to<br />

synchronize themselves without the use of event objects.<br />

The following functions are used in synchronizing users and transactions:<br />

- CreateEvent<br />

- PulseEvent<br />

- WaitFor<br />

- WaitForSingleObject<br />

For details on these functions, refer to BDL Function Reference.<br />

Synchronization<br />

sample script<br />

In the following example, the users create an event object called StarterEvent<br />

and establish a connection to an FTP server. The Starter user sets the state of the<br />

event object StarterEvent to signaled every ten seconds and resets it after the<br />

SilkPerformer User Guide 163


6 CUSTOMIZING TEST SCRIPTS<br />

Serializing and Synchronizing Virtual Users<br />

appropriate number of waiting users process the transaction. In this way, all the<br />

Uploader users are forced to execute the TUpload transaction at the same time.<br />

The Uploader's wait until the event object is in the signaled state, and then<br />

execute their Upload transaction.<br />

dcluser<br />

user<br />

Starter<br />

transactions<br />

TInit : begin;<br />

TStartEvent : 20;<br />

user<br />

Uploader<br />

transactions<br />

TInit : begin;<br />

TUpload : 20;<br />

var<br />

hEventGo : number; // handle for starting event<br />

hFTP : number;<br />

dcltrans<br />

transaction TInit<br />

begin<br />

hEventGo := CreateEvent("StarterEvent");<br />

WebFtpConnect(hFTP, "standardhost", WEB_PORT_FTP,<br />

"username", "password");<br />

end TInit;<br />

transaction TStartEvent<br />

begin<br />

wait 10.0;<br />

// every 10 seconds the starter event forces all<br />

// seller users to execute the selling transaction<br />

// at the same time<br />

PulseEvent(hEventGo);<br />

end TStartEvent;<br />

transaction TUpload<br />

begin<br />

WaitForSingleObject(hEventGo, INFINITE);<br />

WebFtpPut(hFTP, 4096, "test.dat", true);<br />

end TUpload;<br />

Rendezvous<br />

functionality<br />

SilkPerformer includes the following rendezvous function:<br />

- WaitFor<br />

This function is used to create a delay until the specified virtual users reach a<br />

certain state, and then to proceed with all the users simultaneously. This tests the<br />

ability of the system to handle a number of concurrent transactions by making it<br />

possible to generate very specific stress on the system. For example, in a<br />

transaction that stores a number of files on an FTP server, you may want your<br />

164 SilkPerformer User Guide


6 CUSTOMIZING TEST SCRIPTS<br />

Serializing and Synchronizing Virtual Users<br />

script to wait until all the users are logged on, and then to store all the files at the<br />

same time.<br />

Script example<br />

Multiple agents<br />

const<br />

USERS := 5;<br />

dcluser<br />

user<br />

Buyer<br />

transactions<br />

TBuy : 10;<br />

dcltrans<br />

transaction TBuy<br />

const<br />

TIMEOUT := 60;<br />

begin<br />

// wait for users rendezvousing at this point<br />

if not WaitFor("Rendezvous", USERS, TIMEOUT) then<br />

write("timeout"); halt;<br />

end;<br />

// proceed with transaction<br />

print("rendezvous", 1, TEXT_RED);<br />

end TBuy;<br />

In this example, the script waits until five virtual users (Buyer) are at the line in<br />

the script containing the WaitFor function, and it then proceeds with the<br />

transaction.<br />

The functionality described above is available only on a single agent computer.<br />

SilkPerformer provides an additional number of functions that extend the use of<br />

serialization and synchronization across multiple agents.<br />

Serialization across multiple agents is made possible by the<br />

GlobalResourceEnter and GlobalResourceRelease functions.<br />

GlobalResourceEnter defines a resource that can be occupied by only a limited<br />

number of users. The caller has to wait until the number of users who occupy the<br />

resource is less than the maximum number of users who are allowed to occupy<br />

the resource. The GlobalResourceRelease function releases a resource that was<br />

occupied with the GlobalResourceEnter function. If there are users still waiting<br />

for the resource, the next user in the queue resumes the simulation.<br />

Synchronization across multiple agents is made possible by the GlobalWaitFor<br />

function. This function defines a checkpoint (rendezvous point) and blocks the<br />

calling user. The caller waits until a specified number of users (including the<br />

caller) have reached or passed the checkpoint, or until a specified timeout<br />

occurs. The checkpoint is identified by name and is visible to all the users,<br />

including those running on various remote agents. A waiting user continues<br />

when the specified timeout is reached or the given number of users have called<br />

the function for a checkpoint. A user who has timed out is also regarded as<br />

having passed the checkpoint.<br />

SilkPerformer User Guide 165


6 CUSTOMIZING TEST SCRIPTS<br />

Using Custom DLLs in Test Scripts<br />

The functions GlobalVarGet, GlobalVarInc, and GlobalVarSet are used,<br />

respectively, to get, increment, and set the values of global integer variables that<br />

are accessible for all the users on all the agents.<br />

Using Custom DLLs in Test Scripts<br />

In SilkPerformer scripts, it’s possible to call functions that are provided in<br />

Dynamic Link Libraries (DLLs). This feature allows you to implement<br />

functions in any programming language that can generate DLLs and then utilize<br />

such external functions in SilkPerformer load test scripts.<br />

Declaring and calling<br />

external functions<br />

Two files are typically required to create a DLL:<br />

• A source file that contains the implementation of one or more functions<br />

• A definition file that specifies which functions are to be exported<br />

When developing a DLL using a common C/C++ compiler, the source file (.c,<br />

.cpp) and the definition file (.def) must be included in the project.<br />

In BDL, all external functions called from a script must be declared before they<br />

can be used. This must be done in the external functions section of<br />

SilkPerformer scripts.<br />

Note When a DLL file isn’t located in the SilkPerformer installation<br />

directory or a directory included in the path specification, it’s<br />

necessary to add the DLL file to the project’s data files.<br />

Please see the External functions sections of the BDL Function Reference for<br />

more information and an exact syntax description.<br />

Function prototypes<br />

In the external functions section of scripts, after the name of a DLL has been<br />

declared, any number of prototypes of DLL functions can be defined. Each<br />

function that is to be used in a SilkPerformer script must be declared; these<br />

declarations are case-sensitive. Additionally, identifiers that specify the names<br />

of all functions that are to be used in BDL scripts must be defined.<br />

When parameters are passed to external functions, it’s necessary to indicate<br />

whether they are passed into functions by reference or by value (default).<br />

Parameters can be declared with BDL data types or basic C data types (long,<br />

short, char, float, double, or pointer).<br />

The following table shows the data-type mapping between formal parameters of<br />

native functions exported by DLLs, formal parameters of external functions<br />

166 SilkPerformer User Guide


6 CUSTOMIZING TEST SCRIPTS<br />

Using Custom DLLs in Test Scripts<br />

declared in the DLL sections of BDH files, and actual parameters (BDL data<br />

types).<br />

C Data Type DLL Section (BDH) BDL Data Type<br />

char char Number<br />

unsigned char unsigned char Number<br />

short short Number<br />

unsigned short unsigned short Number<br />

long long, number, boolean Number, Boolean<br />

unsigned long long, number Number<br />

char* string String<br />

*(Pointer) long, number Number<br />

float float Float<br />

double double Float<br />

Ptr (C data type<br />

representing a pointer to<br />

any data type)<br />

string<br />

String<br />

Table 4: Data-type mapping<br />

Script example<br />

In the following example, the external functions DemoSum and DemoDiff are<br />

declared and then called in the TMain transaction.<br />

dll "DemoFunctions.dll"<br />

// function without parameters and return value<br />

"DemoOutput"<br />

function Output;<br />

// function declared using C data types<br />

"DemoSum"<br />

function Sum(in long, in long): long;<br />

// function declared using BDL data types<br />

"DemoDiff"<br />

function Diff(in number, in number): number;<br />

// DLL is not located in the SilkPerformer directory<br />

dll "C:\\Debug\\Functions.dll"<br />

dcltrans<br />

transaction TMain<br />

SilkPerformer User Guide 167


6 CUSTOMIZING TEST SCRIPTS<br />

Using Custom DLLs in Test Scripts<br />

var<br />

x, y, nSum, nDiff: number;<br />

begin<br />

x := 4; y := 5;<br />

nSum := Sum(x, y); // external function calls<br />

nDiff := Diff(x, y);<br />

Output();<br />

end TransMain;<br />

Passing parameters<br />

Simple types<br />

Any type of parameter can be passed to external functions. While using simple<br />

data types is easy, handling arrays and structured data types requires knowledge<br />

about the alignment and size of the specific data types in use.<br />

Simple data types allowed as input and output parameters are<br />

C Data Type<br />

BDL Data Type<br />

Char, unsigned char Number<br />

Short, unsigned short Number<br />

Long<br />

Number<br />

Double<br />

Float<br />

Float<br />

Float<br />

Char*<br />

String<br />

Table 5: Simple data types<br />

C source code<br />

Note The unsigned long data type is converted to long when used in<br />

SilkPerformer scripts.<br />

When a parameter is passed to a function by value, it’s declared simply by<br />

specifying its type. If a parameter is passed by reference (for example, if it’s<br />

used as an output parameter), a pointer to the data type must be defined.<br />

The example below illustrates how function parameters are declared in C and<br />

how corresponding external functions must be declared in BDL. In addition, an<br />

example of an external function call is provided.<br />

In the example below, the external function T_PARAM receives the following<br />

input parameters: inChar, inShort, inLong, inDouble, inFloat, inUShort, and<br />

inUChar. A corresponding output parameter belongs to each: outChar, outShort,<br />

outLong, outDouble, outFloat, outUShort, and outUChar. These parameters<br />

must be declared as pointers because during function calls references to the<br />

variables are passed to the functions. Additionally, a string called inoutString is<br />

declared as an input and output parameter.<br />

168 SilkPerformer User Guide


6 CUSTOMIZING TEST SCRIPTS<br />

Using Custom DLLs in Test Scripts<br />

BDL external function<br />

declarations<br />

BDL external function<br />

calls<br />

char* T_PARAM( char inChar, // in<br />

short<br />

inShort,<br />

long<br />

inLong,<br />

double<br />

inDouble,<br />

float<br />

inFloat,<br />

unsigned short inUShort,<br />

unsigned char inUChar,<br />

char*<br />

inoutString, // in/out<br />

char* outChar, // out<br />

short*<br />

outShort,<br />

long*<br />

outLong,<br />

double*<br />

outDouble,<br />

float*<br />

outFloat,<br />

unsigned short* outUShort,<br />

unsigned char* outUChar )<br />

{<br />

char sBuffer[1000];<br />

// copy the values of the input parameters to the<br />

// output parameters and the return value<br />

return sBuffer;<br />

}<br />

To use the above-defined T_PARAM function in BDL, the function must be<br />

declared in the external functions section of a SilkPerformer script. This is<br />

illustrated in the below example. In this case, the parameters are defined as<br />

formal data types. The comments attached to each parameter indicate the<br />

corresponding BDL data type.<br />

"T_PARAM" function t_param(<br />

in char,<br />

// in number<br />

in short,<br />

// in number<br />

in long,<br />

// in number<br />

in double,<br />

// in float<br />

in float,<br />

// in float<br />

in unsigned short,<br />

// in number<br />

in unsigned char,<br />

// in number<br />

inout string,<br />

// inout string<br />

out char,<br />

// out number<br />

out short,<br />

// out number<br />

out long,<br />

// out number<br />

out double,<br />

// out float<br />

out float,<br />

// out float<br />

out unsigned short,<br />

// out number<br />

out unsigned char): string(100); // out number<br />

The following example illustrates how to call the T_PARAM function. In this<br />

example, random values are assigned to the variables and passed to the function<br />

as input parameters.<br />

dcltrans<br />

transaction TMain<br />

SilkPerformer User Guide 169


6 CUSTOMIZING TEST SCRIPTS<br />

Using Custom DLLs in Test Scripts<br />

var<br />

n1, n2, n3, n4, n5, n6, n7, n8, n9, n10 : number;<br />

f1, f2, f3, f4 : float;<br />

s1, sRet : string;<br />

begin<br />

n1 := 127; n2 := 32000; n3 := 2000000;<br />

n4 := 64000; n5 := 255;<br />

f1 := 12345.12345; f2 := 12.99;<br />

s1 := "Teststring";<br />

sRet := t_param(n1, n2, n3, f1, f2, n4, n5, s1,<br />

n6, n7, n8, f3, f4, n9, n10);<br />

end TMain;<br />

Arrays<br />

C source code<br />

examples<br />

Fixed boundaries<br />

Variable upper bounds<br />

An array is an ordered list of variables of the same type. Arrays of the Boolean,<br />

number, float, and string data types are available in BDL. Passing array<br />

parameters to external functions is more complex than handling simple data<br />

types.<br />

It’s possible to pass arrays with either fixed boundaries or variable upper<br />

bounds. When an upper bound is variable, it must be specified by an additional<br />

parameter.<br />

Note Lower bounds are always zero (0) in C and one (1) in BDL.<br />

The two examples below show a function that manipulates the contents of a<br />

string and a number array.<br />

In the first example, an array with fixed boundaries (1 - 20 in BDL) must be<br />

passed to the function.<br />

#define ARRAYSIZE 20<br />

void T_ARRAY( char as1[ARRAYSIZE][101],<br />

long an1[ARRAYSIZE],<br />

char as2[ARRAYSIZE][101],<br />

long an2[ARRAYSIZE] )<br />

{<br />

// copy the values of the input arrays to<br />

// the output arrays for demonstration purpose<br />

for (i=0; i


6 CUSTOMIZING TEST SCRIPTS<br />

Using Custom DLLs in Test Scripts<br />

void T_ARRAY( char as1[][101],<br />

long an1[],<br />

char as2[][101],<br />

long an2[],<br />

long array_upper_bound )<br />

{<br />

// copy the values of the input arrays to<br />

// the output arrays for demonstration purpose<br />

for (i=0; i


6 CUSTOMIZING TEST SCRIPTS<br />

Using Custom DLLs in Test Scripts<br />

Structured Data Types<br />

When using structured data types, it’s important to pay attention to the<br />

alignment and size of structure elements. The table below shows the size of all<br />

conventional data types that can be used within function declarations in<br />

SilkPerformer scripts.<br />

Data Type<br />

Size<br />

Char, unsigned char 1<br />

Short, unsigned short 2<br />

Long 4<br />

Double 8<br />

Float 4<br />

Char[x]<br />

x<br />

Table 6: Conventional data type sizes<br />

C source code<br />

For more information, refer to the Introduction to data structure functions<br />

sections of the BDL Function Reference.<br />

The example below clarifies structure composition by showing a data structure<br />

that contains all the simple data types.<br />

// declare a demo data structure<br />

#pragma pack(1) // alignment to 1-byte boundaries<br />

typedef struct {<br />

char myChar; // size: 1 byte pos: 1<br />

short myShort; // size: 2 bytes pos: 2<br />

long myLong; // size: 4 bytes pos: 4<br />

double myDouble; // size: 8 bytes pos: 8<br />

float myFloat; // size: 4 bytes pos: 16<br />

unsigned short myUShort; // size: 2 bytes pos: 20<br />

char myString[10]; // size: 10 bytes pos: 22<br />

unsigned char myUChar; // size: 1 byte pos: 32<br />

} TESTSTRUCT;<br />

#pragma pack()<br />

char* T_STRUCT(TESTSTRUCT * s)<br />

{<br />

char sBuf[10000];<br />

// manipulate values of data structure and generate a<br />

// return value for demonstration purpose<br />

...<br />

return sBuf;<br />

}<br />

172 SilkPerformer User Guide


6 CUSTOMIZING TEST SCRIPTS<br />

Using Custom DLLs in Test Scripts<br />

BDL external function<br />

declarations<br />

BDL external function<br />

calls<br />

To handle structured data types, BDL uses strings of appropriate length and<br />

number of type-dependent Get and Set functions. For each structured data type<br />

passed to a function, an inout string parameter must be defined. These strings<br />

must be exactly as long as the data structures defined in the DLLs.<br />

The first position in a BDL string that can hold a structured data type is one (1).<br />

When variables are aligned to one-byte boundaries, the starting position of the<br />

next element is derived by adding the current position to the size of the current<br />

element. For the data structure declared in the example above, a 32-byte string is<br />

required.<br />

"T_STRUCT"<br />

function t_struct(inout string(32)): string(1000);<br />

In the following example, arbitrary values are assigned to all the elements of the<br />

data structure using the corresponding Set functions. Next, the external function<br />

t_struct is called to manipulate the data structure.<br />

dcltrans<br />

transaction TMain<br />

var<br />

n1, n2, n3, n4, n5 : number;<br />

n6, n7, n8, n9, n10 : number;<br />

f1, f2, f3, f4 : float;<br />

sStruct<br />

: string(100);<br />

sRet<br />

: string(1000);<br />

begin<br />

/* one-byte alignment */<br />

SetChar (sStruct, 1, 127);<br />

SetShort (sStruct, 2, 32000);<br />

SetLong (sStruct, 4, 2000000);<br />

SetDouble(sStruct, 8, 12345.12345);<br />

SetFloat (sStruct, 16, 12.99);<br />

SetUShort(sStruct, 20, 64000);<br />

SetString(sStruct, 22, "123456789", 10);<br />

SetUChar (sStruct, 32, 255);<br />

sRet := t_struct(sStruct);<br />

end TMain;<br />

SilkPerformer User Guide 173


6 CUSTOMIZING TEST SCRIPTS<br />

Matrix: Functions, the Recorder, and TrueLog Explorer<br />

Matrix: Functions, the Recorder, and TrueLog Explorer<br />

HTML content<br />

Response data<br />

Verification/<br />

Parsing Usage Description<br />

WebVerifyHtml WebVerifyData Verification TrueLog Explorer's<br />

Visual verification,<br />

scripting<br />

WebVerifyHtmlBound WebVerifyDataBound Verification TrueLog Explorer's<br />

Visual verification,<br />

scripting<br />

WebVerifyHtmlTitle - Verification TrueLog Explorer's<br />

Visual verification,<br />

automatically<br />

generated by the<br />

Recorder, scripting<br />

WebVerifyTable - Verification TrueLog Explorer's<br />

Visual verification,<br />

scripting<br />

- WebVerifyDataDigest Verification Automatically<br />

generated by the<br />

Recorder<br />

WebParseHtmlBound WebParseDataBound Parsing TrueLog Explorer's<br />

Visual parsing,<br />

scripting<br />

Checks if a<br />

specified string<br />

occurs in the<br />

HTML content/<br />

response data.<br />

Checks if a<br />

specified string<br />

occurs in the<br />

HTML content/<br />

response data<br />

within given<br />

boundaries.<br />

Checks if a<br />

specified string<br />

occurs in the title of<br />

the HTML<br />

document.<br />

Checks if a<br />

specified string<br />

occurs in an HTML<br />

table.<br />

Checks if the<br />

response data<br />

differs from the<br />

response data that<br />

the Recorder<br />

captured during an<br />

earlier recording<br />

session.<br />

Parses the HTML<br />

content/response<br />

data within given<br />

boundaries.<br />

WebParseHtmlTitle - Parsing Scripting Parses the title of an<br />

HTML document.<br />

Table 7: Functions, the Recorder, and TrueLog Explorer<br />

174 SilkPerformer User Guide


6 CUSTOMIZING TEST SCRIPTS<br />

Matrix: Functions, the Recorder, and TrueLog Explorer<br />

HTML content<br />

Response data<br />

Verification/<br />

Parsing Usage Description<br />

WebParseTable - Parsing Scripting Parses the content<br />

of a cell in an<br />

HTML table.<br />

- WebParseResponseTag Parsing Scripting Parses the value of<br />

the specified<br />

HTML attribute.<br />

Also applicable for<br />

XML response<br />

data.<br />

- WebParseResponseTagContent Parsing Scripting Parses the content<br />

of the specified<br />

HTML attribute.<br />

Also applicable for<br />

XML response<br />

data.<br />

- WebParseResponseheader Parsing Scripting Parses HTTP<br />

response headers.<br />

- WebParseResponseRedirect Parsing Scripting Parses the URL of a<br />

redirection<br />

response for URL<br />

encoded<br />

parameters.<br />

Table 7: Functions, the Recorder, and TrueLog Explorer<br />

HTML Content<br />

Response Data<br />

HTML content verification functions and HTML content parsing functions can<br />

be applied to the rendered, visible HTML content. You can apply HTML<br />

content verification and parsing functions in the HTML view of TrueLog<br />

Explorer. The HTML content verification and parsing functions allow you to<br />

verify and/or parse the textual content that you see in your browser.<br />

Data verification and data parsing functions can be applied to all of the response<br />

data returned from the server. In cases in which an HTML document is returned<br />

from the server, this includes the complete source code of the HTML document.<br />

You can apply data verification and parsing functions in the source view of<br />

TrueLog Explorer.<br />

SilkPerformer User Guide 175


6 CUSTOMIZING TEST SCRIPTS<br />

Matrix: Functions, the Recorder, and TrueLog Explorer<br />

176 SilkPerformer User Guide


7<br />

Establishing 7Chapter<br />

Baseline<br />

Performance<br />

Introduction<br />

What you will learn<br />

This chapter explains how to establish baseline performance with<br />

SilkPerformer.<br />

This chapter contains the following sections:<br />

Section<br />

Page<br />

Overview 177<br />

Identifying Baseline Performance 179<br />

Confirming Test Baselines 179<br />

Setting Response Time Thresholds 182<br />

Setting Up Server Monitoring 183<br />

Overview<br />

The fifth step in conducting a SilkPerformer load test is to ascertain the baseline<br />

performance (i.e., to determine the ideal performance of the application under<br />

test). The now customized test is run with just one user per user type, and the<br />

results from this unstressed performance of the application form the basis for<br />

calculating the number of concurrent users per user type and for setting the<br />

appropriate boundaries for the HTML page response times and transaction<br />

response times. Additionally, the required bandwidth for running the load test<br />

will be calculated from the baseline results. The measurements typical of a real<br />

load test are used, and report and output files are generated.<br />

If you have set the option Random thinking time for your load test, it will be<br />

ignored for the baseline test. The think times do not influence the transaction<br />

SilkPerformer User Guide 177


7 ESTABLISHING BASELINE PERFORMANCE<br />

Overview<br />

response times and you receive accurate results when comparing different<br />

baseline tests.<br />

A secondary function of the baseline-finding test is to serve as a trial run of the<br />

customized test that was created in the fifth step. Here the objective is to ensure<br />

that the customization has not introduced new errors into the script, and that the<br />

script will accurately and fully reproduce the interaction that is intended<br />

between the client application and the server.<br />

For baseline runs the following options are automatically set to these specified<br />

value:<br />

- A Baseline report file will automatically be created.<br />

- The Stop virtual users after simulation time (Queuing Workload)<br />

option is on.<br />

- The Random thinking time option is set off.<br />

- The Loadtest description field is set to "BaseLine Test".<br />

- The Display All Errors Of All Users option in the Monitor window is<br />

on.<br />

- The Virtual user output files (.wrt) option is on.<br />

- The Virtual user report files (.rpt) option is on.<br />

Specifying user types<br />

Output files<br />

By adding different profiles to your load test project, you can define different<br />

user types, which provide a unique combination from which to create a load<br />

testing script with a user group contained in the script and a load testing profile.<br />

With this combination, it is very easy to assign different behaviors to one user<br />

group contained in the script.<br />

Before you can define user types, you must add the profiles to your load test<br />

project. If you want to emulate 3 different modem speeds during your load test,<br />

you must add a profile for each modem speed first.<br />

The Find Baseline dialog allows you to define many user types (i.e., a<br />

combination of a script, a user group, and a profile).<br />

You can run a baseline test to establish the baseline performance of your load<br />

test for the selected user types. The different user types can be run at the same<br />

time. For the baseline test, only one virtual user per user type is executed; the<br />

think times contained in the script will not be randomized for comparison<br />

reasons.<br />

Output files contain the output of write statements used in test scripts. An output<br />

file is generated for a particular user only if write statements are executed by that<br />

user.<br />

However, generating output files alters the time measurements of a load test.<br />

Therefore, these files should be used for debugging purposes only, and should<br />

not be generated for full load tests.<br />

178 SilkPerformer User Guide


7 ESTABLISHING BASELINE PERFORMANCE<br />

Confirming Test Baselines<br />

Identifying Baseline Performance<br />

Finding the test<br />

baseline<br />

Procedure To find the test baseline:<br />

1 Click the Find Baseline button on the SilkPerformer Workflow bar.<br />

The Workflow - Find Baseline dialog appears.<br />

2 Add different user types (unique combinations of a script, a user group,<br />

and a profile).<br />

3 Select the user types that you want to execute simultaneously.<br />

4 Click Run to execute your test.<br />

5 During the baseline test, monitor the test progress in the Monitor<br />

window.<br />

Confirming Test Baselines<br />

The sixth step in conducting a SilkPerformer load test is to confirm that the test<br />

baseline established by the test in the previous step actually reflects the desired<br />

performance of the application under test. These measurements are taken into<br />

account in calculating the number of concurrent virtual users, setting acceptable<br />

thresholds for the load test, and for calculating the required bandwidth.<br />

This can be achieved by inspecting the results from the test in the baseline<br />

report. If the results are satisfactory, they can be stored for further processing.<br />

• “Viewing Baseline Reports”: A detailed XML/XSL based report that<br />

provides you with a summary table, transaction response-time details,<br />

timers for all accessed HTML pages, Web forms and errors that<br />

occurred. This information is available for all user types involved in the<br />

baseline test.<br />

• “Viewing Accepted Baseline Reports”: All accepted baseline reports for<br />

this project so far. All accepted results for every user type are stored and<br />

can be inspected with this report.<br />

• “Setting Response Time Thresholds”: Thresholds for response times can<br />

be set by using the accepted results from previous baseline tests. With<br />

these thresholds, the analysis of future load tests will be very easy,<br />

because the boundaries are set separately for every user type for every<br />

Web page, form, and transaction response time.<br />

• “Setting Up Server Monitoring”: A server-monitoring template can now<br />

be set up. The template will then be used for live monitoring during the<br />

load test, so that server-side results information can be generated for<br />

exploration and correlation after the test.<br />

SilkPerformer User Guide 179


7 ESTABLISHING BASELINE PERFORMANCE<br />

Confirming Test Baselines<br />

Baseline Reports<br />

Once a baseline test is complete, a baseline report can be displayed. The<br />

baseline report can be displayed for any load test you want to use as a baseline.<br />

If, for example, you run a load test with 100 users and you want to use the<br />

results of this test as your baseline, treat this test as you would a baseline test.<br />

The baseline report is based on XML/XSL and includes the most important test<br />

results in a tabular form. It comprises the following sections:<br />

• General information<br />

• User Types<br />

- Summary tables<br />

- Transaction response times<br />

- HTML Page Timers<br />

- Web form measurements<br />

• Accept Results Button<br />

General Information<br />

The general information section includes administrative information in a tabular<br />

form.<br />

Administrative information includes the SilkPerformer Version information, the<br />

project name, a description of the project, the date and time of the baseline test,<br />

the workload definition, the workload model, and the number of errors that<br />

occurred.<br />

User Types<br />

For each user type involved in the baseline test run, a separate section is<br />

available with details on the measured response times. In the summary line, the<br />

number of virtual users (1 for a baseline test), the duration of the test, the session<br />

time, the session busy time and, the average page time, the number of<br />

transaction executed OK, cancelled, failed and the number of errors that<br />

occurred.<br />

The session time consists of the execution time of all transactions defined in the<br />

dcluser section of a virtual user, without the initial and end transactions. The<br />

session busy time is calculated as the session time minus think times.<br />

For example:<br />

dcluser<br />

user<br />

Vuser1<br />

transactions<br />

TInit : begin;<br />

T1 : 1;<br />

T2 : 3;<br />

Tend : end;<br />

180 SilkPerformer User Guide


7 ESTABLISHING BASELINE PERFORMANCE<br />

Confirming Test Baselines<br />

The session time is the average response time of T1 + 3 * average response time<br />

of T2; the session busy time is the same without any think time.<br />

If you are satisfied with these results, you can accept them as baseline results<br />

and save them for further processing, such as the calculation of the number of<br />

concurrent virtual users and the network bandwidth needed for the load test.<br />

For each user type, the following detailed results are available:<br />

• Summary Tables<br />

This section contains summary measurements in a tabular form, that is,<br />

the aggregate measurements of all virtual users. The first table provides<br />

general information, such as the number of transactions that were<br />

executed and the number of errors that occurred. All the following tables<br />

provide summary information relevant to the type of application that was<br />

tested.<br />

• Transactions<br />

This section contains summary measurements in a tabular form, that is,<br />

aggregate measurements for all transactions of a specific user type. For<br />

every transaction, the transaction response time and the transaction busy<br />

time are displayed.<br />

The transaction response time is measured from the beginning to the end<br />

of the transaction, including all think times.<br />

The transaction busy time is the transaction response time without any<br />

think time.<br />

• Page Timers<br />

This section contains summary measurements in a tabular form for every<br />

accessed Web page. For every page, the download time of the whole<br />

page, the HTML-document download time, the server busy time, the<br />

amount of data downloaded with this page, and the amount of data<br />

downloaded for embedded objects are displayed.<br />

• Web Forms<br />

This section contains summary measurements in a tabular form for every<br />

used Web form. For every form, the roundtrip time, the server busy time,<br />

the number of HTTP hits, the amount of request data sent and the<br />

response data received are displayed.<br />

• Accept results button<br />

If the results of the inspected load test are acceptable for use as a<br />

baseline, you can store these results for further calculations and<br />

processing by clicking on the Accept Results button. The results of tests<br />

with all user types involved in the test are stored in the file<br />

\BaselineResults\baselineReport_.brp. If<br />

SilkPerformer User Guide 181


7 ESTABLISHING BASELINE PERFORMANCE<br />

Setting Response Time Thresholds<br />

you define different workloads in your load test project, every workload<br />

must have a separately defined baseline. If you create a copy of a<br />

workload, the accepted baseline results will also be copied.<br />

Viewing Baseline<br />

Reports<br />

Viewing Accepted<br />

Baseline Reports<br />

Procedure To view a baseline report:<br />

1 Click the Confirm Baseline button on the SilkPerformer Workflow bar.<br />

2 In the ensuing dialog, click the Baseline Report link or button.<br />

The Baseline Report appears, showing the results of the previous test<br />

run.<br />

3 Click the Accept Baseline button to store the displayed results of all user<br />

types for further processing.<br />

An Accepted Baseline Report contains the same information as a baseline report<br />

for all accepted user types within the actual load test project.<br />

The results stored in this report are used for the generation of thresholds for the<br />

accessed Web pages and for thresholds for transaction response times and<br />

custom timers. These thresholds are displayed in the overview report at the end<br />

of a load test. With this information you can easily check if the response times of<br />

a load test are acceptable.<br />

The accepted baseline report will also be used to calculate the number of<br />

concurrent virtual users and to show the network bandwidth needed for a test.<br />

The accepted baseline reports are stored in the file:<br />

\BaselineResults\baselineReport_.brp<br />

If you define different workloads in your load test project, each workload must<br />

have a separate baseline defined. If you create a copy of a workload, the<br />

accepted baseline results will also be copied.<br />

Viewing these reports can be useful for verifying the accepted results.<br />

Procedure To view an accepted baseline report:<br />

1 Click the Confirm Baseline button on the SilkPerformer Workflow bar.<br />

2 On the Workflow - Confirm Baseline dialog, click the Accepted Baseline<br />

Report link or button.<br />

A report showing all accepted baseline results appears.<br />

Setting Response Time Thresholds<br />

With the accepted results from the previous baseline tests, thresholds for<br />

response times can be set for subsequent load tests. These thresholds will be<br />

used in the general overview report of a load test to separate good, acceptable<br />

and unacceptable Web response times.<br />

182 SilkPerformer User Guide


7 ESTABLISHING BASELINE PERFORMANCE<br />

Setting Up Server Monitoring<br />

Therefore, two boundaries must be specified:<br />

- Good response times are below boundary 1.<br />

- Unacceptable response times are above boundary 2.<br />

- Acceptable response times are between these boundary values.<br />

Thresholds can be set for:<br />

- Transaction response times<br />

- Custom timers<br />

- HTML page timers<br />

For the calculation of the boundaries from the baseline results, you must specify<br />

a multiplier. The average response times of the timers will be multiplied with<br />

these factors and the boundaries are set accordingly.<br />

For example: A multiplier of 3 means that you set a boundary 3 times higher<br />

than the average response time of the timer in the baseline test.<br />

If the measured value in the baseline test was 0, you can specify a minimum<br />

value for the boundaries.<br />

The load testing scripts connected with the user types will be updated to set the<br />

thresholds accordingly.<br />

Setting response time<br />

thresholds<br />

Procedure To set response time threshold:<br />

1 Click the Confirm Baseline button on the SilkPerformer Workflow bar.<br />

2 On the Workflow - Confirm Baseline dialog, click the set response time<br />

thresholds link or button.<br />

The Automatic Threshold Generation dialog appears.<br />

3 Select the timers you want to set thresholds for.<br />

4 Specify the appropriate multipliers for your load tests (Lower bound and<br />

Upper bound).<br />

5 Specify minimum values, if the corresponding timers from the baseline<br />

test are 0.<br />

Setting Up Server Monitoring<br />

One of the most important facilities provided by SilkPerformer during a load<br />

test is server monitoring—where you can watch a live graphical display of the<br />

performance of your server while a test is running.<br />

Monitoring servers is also important in that it enables server-side results<br />

information to be generated. This can then be viewed and correlated with other<br />

test measurements at the results exploration stage.<br />

SilkPerformer User Guide 183


7 ESTABLISHING BASELINE PERFORMANCE<br />

Setting Up Server Monitoring<br />

Monitoring a server helps you find out whether there are bottlenecks on the<br />

server, and, if so, where exactly they are. In this way, you examine the<br />

performance of both the operating system and the server application.<br />

A template for server monitoring can be set up to monitor performance data or<br />

you can use a default template that is already generally configured for the type<br />

of application you are testing.<br />

Procedure To set up a template for server monitoring:<br />

1 Click the Confirm Baseline button on the SilkPerformer Workflow bar.<br />

2 On the Workflow - Confirm Baseline dialog, click the Monitoring<br />

template link or button.<br />

The Profile Settings dialog opens, showing the Monitoring tab of the<br />

Results category.<br />

3 In the Monitoring options area, select the Automatically start monitoring<br />

option to automatically launch the monitoring facility of Performance<br />

Explorer when you start a load test. Performance Explorer will then<br />

display the server performance data that is relevant to the type of server<br />

you are testing.<br />

- Select the Use default monitoring template option to activate the<br />

default monitor template.<br />

- Select the Use custom monitoring template option to use a custom<br />

monitor template. Enter the name of the custom template file (.pew)<br />

that you want to use to monitor your server. Click the browse (...)<br />

button next to the field to locate the file.<br />

4 Click the Create Custom Monitor Template button to create the template.<br />

- To subsequently edit the template, click the Edit Custom Monitor<br />

Template button; Performance Explorer will open and you will have<br />

the choice of adding or removing any monitoring performance data.<br />

Finally, save the workspace to apply your changes to the template<br />

and close Performance Explorer.<br />

5 Click OK.<br />

6 Once you start a load test, server monitoring for the load test will start<br />

and stop automatically. To save monitoring results for future exploration,<br />

have the results of server monitoring written to a monitoring report file<br />

(see “Monitoring server performance during tests” for details).<br />

184 SilkPerformer User Guide


8<br />

Defining 8Chapter<br />

Workload<br />

Introduction<br />

What you will learn<br />

This chapter explains how to define workload for SilkPerformer load tests.<br />

This chapter contains the following sections:<br />

Section<br />

Page<br />

Overview 185<br />

Setting Up Workload 187<br />

Adjusting Session Times 191<br />

Maintaining Transaction Rates 191<br />

Overview<br />

The seventh step in conducting a SilkPerformer load test is to configure<br />

workload. SilkPerformer offers different workload models to be used as a basis<br />

for your load test. Before configuring workload you must select the model that<br />

best fits your needs.<br />

The following workload models are offered:<br />

• Increasing workload model:<br />

At the beginning of a load test, SilkPerformer simulates not the total<br />

number of users defined, but only a specified part of them. Step by step,<br />

the workload is increased until all the users specified in the user list are<br />

actually running.<br />

This workload model is especially useful when you want to find out at<br />

which load level your system crashes or does not respond within<br />

acceptable response times or error thresholds.<br />

SilkPerformer User Guide 185


8 DEFINING WORKLOAD<br />

Overview<br />

• Steady state workload model:<br />

In this model, the same number of virtual users is employed throughout<br />

the test. Every virtual user executes the transactions defined in the load<br />

testing script. When work is finished, the virtual user starts again with<br />

executing the transactions. There is no delay between transactions. The<br />

test finishes when the simulation time that was specified has been<br />

reached.<br />

This workload model is especially useful when you want to find out<br />

about the behavior of your tested system at a specific load level.<br />

• Dynamic workload model:<br />

You can manually change the number of virtual users in the test while it<br />

is being run. The maximum number of virtual users to be run is set;<br />

within this limit, the number can be increased or decreased at any time<br />

during the test. No simulation time is specified, and you must bring the<br />

test to an end manually.<br />

This workload model is especially useful when you want to experiment<br />

with different load levels and to have the control over the load level<br />

during a load test.<br />

• All day workload model:<br />

This workload model allows you to define the distribution of your load in<br />

the most flexible way. You can assign different numbers of virtual users<br />

to any interval of the load test. Each user type can use a different load<br />

distribution. Therefore, you can design very complex workload scenarios<br />

such as workday workloads or even weekly workloads. You can adjust<br />

the load level during a load test for intervals that have not yet started<br />

executing.<br />

This workload model is especially useful when you want to model<br />

complex, long lasting workload scenarios in the most realistic way<br />

possible.<br />

• Queuing workload model:<br />

In this model, transactions are scheduled following a prescribed arrival<br />

rate. This rate is a random value based on an average interval calculated<br />

from the simulation time and the number of transactions you have<br />

specified in your script (dcluser section: number of transactions per<br />

user). The load test will finish when all of the virtual users have<br />

completed their prescribed tasks.<br />

Note that the test may take longer than the simulation time that was<br />

specified, because of the randomized arrival rates. For example, if you<br />

specify a simulation time of 3000 seconds and want to execute 100<br />

transactions, then you will get an average transaction arrival rate of 30<br />

seconds.<br />

This workload model is especially useful when you want to simulate<br />

186 SilkPerformer User Guide


8 DEFINING WORKLOAD<br />

Setting Up Workload<br />

workloads that use queuing mechanisms to handle multiple concurrent<br />

requests. Typically, application servers like servlet engines or transaction<br />

servers, which are receiving their requests from Web servers and not<br />

from end users, can be accurately tested by using the queuing model.<br />

• Verification workload model:<br />

A verification test run is especially useful when combined with<br />

SilkPerformer's extended verification functionality. This combination<br />

can then be used for regression tests of Web-based applications. A<br />

verification test run always runs a single user of a specific user type on a<br />

specified agent computer.<br />

This workload is especially useful when you want to automate the<br />

verification of Web applications and when you want to start the<br />

verification test from the command line interface.<br />

Additionally the required network bandwidth per user type is displayed. This<br />

helps you to check the network infrastructure used for the load test, if any<br />

bottlenecks exist. The required bandwidth is calculated from the accepted<br />

baseline results.<br />

You can define more than one workload model in your load test project and save<br />

them for further usage, but only one workload model can be active at a time. The<br />

accepted baseline results are associated with a workload model, if you copy or<br />

rename a workload model, the accepted baseline results are copied or renamed<br />

accordingly.<br />

Setting Up Workload<br />

Procedure To set up the workload:<br />

1 Click the Adjust Workload button on the SilkPerformer Workflow bar.<br />

The Workflow - Select Workload Model dialog appears.<br />

2 Select the workload model that you want for your load test. Choose from<br />

either the Increasing, Steady State, Dynamic, All Day, Queuing, or<br />

Verification option.<br />

3 For the Increasing, Steady State and All Day workload models a<br />

Workload Wizard is available to help you calculate the number of<br />

concurrent virtual users and the required network bandwidth. If you have<br />

selected on of these workload models, we recommend using the wizard<br />

by clicking on the Workload Wizard button.<br />

4 Enter the amount of time you want your load test to run and click Next.<br />

SilkPerformer User Guide 187


8 DEFINING WORKLOAD<br />

Setting Up Workload<br />

Note Depending on the workload model you’ve selected, you can<br />

adjust the duration of each phase of your load test on this dialog.<br />

During the Increasing phase, workload increases in increments to<br />

the specified maximum number of virtual users. In the Steady phase,<br />

all specified virtual users are running. In the Decreasing phase<br />

workload decreases in increments.<br />

The Warm-Up phase specifies the time at the beginning of the load<br />

test in which measurements are not factored into results calculations.<br />

The Measurement phase, which begins at the completion of the<br />

warm-up phase (or immediately in cases in which no warm-up time<br />

is specified) restricts the time measurements that are taken for results<br />

calculation.<br />

5 The Calculate the Virtual Users dialog appears. If you know the number<br />

of sessions per-hour per-virtual-user type, you can enter the value, and<br />

the number of concurrent virtual users will be calculated automatically.<br />

If you enter the number of virtual users, the number of expected sessions<br />

per hour will be calculated. The required network bandwidth per user<br />

type is also displayed.<br />

Note This task is very important to achieve accurate results by<br />

emulating real user behavior. If you know the number of expected<br />

real user sessions per hour for your application under test, the<br />

number of concurrent virtual users will be calculated based on the<br />

results from the accepted baseline tests.<br />

6 To adapt think times so as to modify session times or to guarantee<br />

particular transaction rates, enable static or dynamic pacing of<br />

transaction think times. When the Goal Session Time column is enabled<br />

you can enter a desired session time for each user type. The wizard then<br />

automatically calculates the think time factors and stores them in the<br />

workload.<br />

Note The think time adjustment mode can be set on a global basis<br />

using this dialog. When think time adjustment is required on the<br />

user-type level, the SetThinkTimeAdjustment() API function should<br />

be applied.<br />

7 Click Finish to close the wizard.<br />

8 Back on the Workload Configuration screen, if you have chosen the All<br />

Day workload model, some intervals proposed by SilkPerformer will be<br />

displayed. You can change every value by editing the table, adding or<br />

deleting rows, changing the number of virtual users or the duration of the<br />

intervals.<br />

188 SilkPerformer User Guide


8 DEFINING WORKLOAD<br />

Setting Up Workload<br />

Note Once a load test begins, you can change the number of virtual<br />

users for intervals that have not yet started, but you cannot exceed<br />

the maximum number of virtual users specified for the load test.<br />

9 The diagram at the top of the Workload Configuration screen serves as a<br />

graphical representation of the workload model you’ve selected. The<br />

diagram uses the actual data of the user group selected in the workload<br />

list at the bottom of the dialog.<br />

10 Use the workload list to configure the user groups that are to be run in<br />

your test scripts. In the User Type area, select the user types that you<br />

want to run in your test. All of the user types selected prior to the<br />

baseline test are listed here.<br />

11 In the Max. Vusers column, specify the number of virtual users that are to<br />

be run in each user type.<br />

12 To specify that your load test for a specific user type will begin at a set<br />

period after the time given in the Start Time field, enter a time value (in<br />

seconds) in the Start Time Offset column.<br />

13 In the Simulation Time column, enter the duration (in seconds) for which<br />

each user type is to be run in your load test.<br />

14 In the Warm-up Time column, enter the duration (in seconds) for the<br />

period at the start of a load test during which no measurements are to be<br />

performed. When you enter zero, there won't be a warm-up time and the<br />

measuring will start immediately.<br />

15 In the Measurement Time column, enter the duration (in seconds) for<br />

which measurements will be performed during the load test. When a<br />

value of zero is entered, then the measurement time is equal to the<br />

simulation time.<br />

16 In the Profile column, you can change the settings of the profile to be<br />

used for each user type from the drop-down list(s).<br />

17 In the Auto-assign column, select the assignment option for each user<br />

type for which you want SilkPerformer to automatically compute and<br />

assign virtual users to agent computers. To assign virtual users manually<br />

to agent computers for a particular user type or types, leave this option<br />

unselected.<br />

18 Use the Agents column to check SilkPerformer's automatic assignment of<br />

virtual users to agent computers, or to manually assign them. Click the<br />

Browse (...) button to the left of the Agents column.<br />

- For user types using the Auto-assign option, the Automatic Agent<br />

Assignment for Script/Usertype dialog appears, where you can view<br />

SilkPerformer's assignment of virtual users to agent computers.<br />

SilkPerformer User Guide 189


8 DEFINING WORKLOAD<br />

Setting Up Workload<br />

- For user types not using the Auto-assign option, the Manual Agent<br />

Assignment for Script/Usertype dialog appears.<br />

19 In the Assigned Vusers column, enter the number of virtual users from<br />

the relevant user type to run on each agent. All of the users from the user<br />

type must be assigned to agents.<br />

20 Click OK.<br />

21 In the Start Time field in the Start time portion of the dialog, set the start<br />

time for your load test in hours, minutes, and seconds.<br />

- Select the Relative option to start your test after the time period you<br />

have specified has elapsed.<br />

- Select the Absolute option to have the test start at that specific time.<br />

22 Check the Automatically start monitoring option, when you have<br />

established a monitoring template and want Performance Explorer to<br />

start and stop automatically with the load test.<br />

23 Check the TrueLog On Error option to have SilkPerformer generate<br />

TrueLog files for any transactions that generate errors.<br />

24 Optionally, in the Load Test Description area, enter a description for the<br />

load test. This feature is provided only for your project management<br />

purposes.<br />

25 Click the User distribution overview button to view the assignment of<br />

virtual users to the agent computers that are currently available.<br />

26 Click Close to close this dialog.<br />

27 Back on the Workload Configuration dialog, click OK to save your<br />

changes. Or, if enabled, click the Run button to execute the test. Or click<br />

Connect to initialize the agent connection and then start the test manually<br />

from the monitor view by clicking the Start all button.<br />

Note To define additional workloads for your load test and save<br />

them for future use, expand the Workloads section in the tree view,<br />

right-click an existing workload and select New Workload or Copy<br />

Workload from the context menu. If you create a new workload<br />

model, the baseline will have to be accepted for the model. You can<br />

copy previous accepted baseline results from an existing workload<br />

model by copying and renaming an existing workload.<br />

190 SilkPerformer User Guide


8 DEFINING WORKLOAD<br />

Maintaining Transaction Rates<br />

Adjusting Session Times<br />

In some cases it’s desirable to adjust the session time of user types to a specific<br />

duration. By adjusting a user type’s session time, throughput can be influenced<br />

on a per-virtual-user basis to meet particular load test requirements.<br />

Session time manipulation can be achieved by adjusting think times within a<br />

session’s transactions. Think time adjustment is achieved on the user type level<br />

by implicitly defining a think time factor, which is considered during think time<br />

calculation.<br />

SilkPerformer supports two different methods of adjusting think times: static<br />

and dynamic.<br />

Whereas static think time adaptation simply multiplies think times by a static<br />

factor to adjust session time, dynamic think time adaptation factors in time slowdown<br />

to keep throughput rates constant. See the following section for more<br />

details on dynamic think time adaptation.<br />

Maintaining Transaction Rates<br />

A commonly used load test model is to keep transaction rates constant<br />

regardless of the amount of load on the server. With dynamic think time<br />

adaptation, you can specify workloads based on transaction rates that<br />

SilkPerformer will meet even when server response times slow due to load<br />

increases. This means that when server response time slows, SilkPerformer will<br />

automatically reduce think times to avoid an increase in session times, which<br />

would directly result in a decrease of throughput and ultimately result in server<br />

busy times increasing as load on the server increases.<br />

SilkPerformer offers dynamic think time adaptation for the following workload<br />

models:<br />

- Increasing<br />

- Steady State<br />

- All-Day<br />

- Dynamic<br />

SilkPerformer User Guide 191


8 DEFINING WORKLOAD<br />

Maintaining Transaction Rates<br />

192 SilkPerformer User Guide


9<br />

Executing 9Chapter<br />

Load Tests<br />

Introduction<br />

What you will learn<br />

This chapter explains how to execute load tests.<br />

This chapter contains the following sections:<br />

Section<br />

Page<br />

Overview 193<br />

Starting Load Tests 194<br />

Monitoring Load Tests 194<br />

Launching Load Tests Via the Command Line 205<br />

Overview<br />

The eighth step in conducting a SilkPerformer load test is to run the full load<br />

test. Multiple virtual users are run, by means of the test script(s), to test the target<br />

server. A large load test requires that an appropriate testing environment be set<br />

up on the local area network, including a full complement of agent computers to<br />

host the virtual users.<br />

It is essential that you carefully set options for the appropriate type of test that is<br />

to be used, accurately define the necessary workloads, and enable generation of<br />

the kinds of test results you will need to assess the performance of the server.<br />

The logging option, however, should be disabled to prevent interference with<br />

load test results.<br />

Comprehensive information is provided to testers while load tests are run. This<br />

includes real-time information about agent computers, virtual users, and<br />

transactions as they are conducted. In addition, real-time monitoring of the<br />

target server is available in graphical form.<br />

If a test is configured as a verification run, the following options will be<br />

automatically set to the specified values:<br />

SilkPerformer User Guide 193


9 EXECUTING LOAD TESTS<br />

Starting Load Tests<br />

- A Baseline report file will automatically be created.<br />

- The Stop virtual users after simulation time (Queuing Workload)<br />

option is off.<br />

- The Virtual user log files (.log) option is set off.<br />

- The Virtual user report files (.rpt) option is on.<br />

- The Virtual user report on error files (.rpt) option is on.<br />

- The Compute time series data (.tsd) option is off.<br />

Starting Load Tests<br />

Procedure To start a load test:<br />

1 Click the Run Test button on the SilkPerformer Workflow bar.<br />

The Workload Configuration dialog appears.<br />

You can also access this dialog by right-clicking the project name in the<br />

tree-view area of the main SilkPerformer window, and selecting Run<br />

Test; or by selecting Run/Run Test from the SilkPerformer menu bar.<br />

2 Configure the workload that you will use in your load test.<br />

3 Click Run to start the load test, or click Connect to initialize the agent<br />

connection and then start the test manually from the monitor view by<br />

clicking the Start all button.<br />

Monitoring Load Tests<br />

Detailed real-time information is available to testers while SilkPerformer load<br />

tests are run. Graphic displays and full textual reporting of activity on both the<br />

client side and the server side offer intuitive monitoring of the progress of tests<br />

as they are happening.<br />

Directly from the workbench where the test is conducted, the tester can see<br />

comprehensive overview information about the agent computers and virtual<br />

users in the test. There is full control of the level of detail of the information<br />

presented, from a global view of the progress of all the agent computers in the<br />

test down to exhaustive detail of the transactions conducted by each virtual user.<br />

Progress information for each agent and each user is available in multiple<br />

categories. Run-time details for each user include customizable, color-coded<br />

readouts on transactions, timers, functions, and errors as they happen.<br />

In addition, real-time monitoring of the performance of the target server is<br />

available in graphical form. Charts display the most relevant performance<br />

information from a comprehensive collection of the Web servers, application<br />

194 SilkPerformer User Guide


9 EXECUTING LOAD TESTS<br />

Monitoring Load Tests<br />

Monitoring all agent<br />

computers<br />

Monitoring a specific<br />

agent computer<br />

Monitoring a specific<br />

virtual user<br />

Monitoring server<br />

performance during<br />

tests<br />

servers, and database servers running on all of the operating systems most<br />

widely used today. Multiple charts can be open at the same time, and these can<br />

be juxtaposed to provide the most relevant comparisons and contrasts for the<br />

tester. A tree-view editor allows elements from any data source to be combined<br />

in the charts. Performance information from the client application—for<br />

example, response times—can easily be placed in the same chart as performance<br />

data from the server. This enables a direct visual comparison to be made, so that<br />

you can see how shortcomings on the server influence client behavior.<br />

Procedure To monitor all agent computers:<br />

1 While a load test is running, view progress in the Monitor window.<br />

2 View information about the progress of agent computers and user groups<br />

in the top part of the window. Among the comprehensive number of<br />

information options presented, you can see the status of a particular<br />

agent, what percentage of the test is complete on the agent, and the<br />

number of transactions executed.<br />

Procedure To monitor a specific agent computer:<br />

1 In the top part of the Monitor window, select the specific agent to<br />

monitor.<br />

Information on all of the virtual users running on that agent appears in<br />

the bottom of the Monitor window.<br />

2 Among the many information options presented for each user, you can<br />

check its status, the name of the current transaction, what percentage of<br />

its work is complete, and the number of transactions executed.<br />

Procedure To monitor a specific virtual user:<br />

1 In the bottom part of the Monitor window, right-click the virtual user you<br />

want to monitor.<br />

2 Select Show Output of Vuser.<br />

SilkPerformer displays detailed run-time information about the selected<br />

user in the Virtual User window, for example, the transactions and<br />

functions the user executes, and the data the user sends to and receives<br />

from the server.<br />

To view the columns that are to be shown, right click the virtual user<br />

area, and click Select Columns. Then select all the columns you want to<br />

view.<br />

Procedure To monitor server performance in a graph:<br />

1 Click the Confirm Baseline button on the SilkPerformer Workflow bar.<br />

The Workflow - Confirm Baseline dialog appears.<br />

SilkPerformer User Guide 195


9 EXECUTING LOAD TESTS<br />

Monitoring Load Tests<br />

2 Click the Monitoring Template button or link to specify the settings for<br />

receiving online performance data. In the Profile Results dialog choose<br />

to automatically start monitoring while running a load test and then<br />

choose either the default-monitoring template or to create a customized<br />

monitoring template.<br />

3 Click Create/Edit Custom Monitor Template.<br />

Performance Explorer appears.<br />

4 Close all monitor windows that you are not currently using.<br />

5 Click the Monitor Server button on the Performance Explorer Workflow<br />

bar.<br />

The Data Source Wizard appears at the System Selection dialog.<br />

You can also access the wizard by selecting Results/Monitor Server from<br />

the SilkPerformer menu bar.<br />

6 Select from predefined data sources if you are sure which data sources<br />

the server provides, otherwise let Performance Explorer scan the server<br />

for available data sources.<br />

7 In the tree view, expand the folder that corresponds to the operating<br />

system on which the server and the application you are testing is running.<br />

8 Select the server application you want to monitor from the list that<br />

appears. To monitor the operating system, select System.<br />

9 Click Next.<br />

The Connection Parameters dialog appears.<br />

10 In the Hostname field, enter connection parameters such as the host<br />

name or IP address of the computer that hosts the application, the<br />

connection port, the user name, and the password. The data you enter<br />

here depends on the operating system running on the computer you are<br />

monitoring.<br />

11 Click Next.<br />

The Select Displayed Measures dialog appears.<br />

12 Expand the tree view and select the factors you want to monitor.<br />

13 Click Finish.<br />

A Monitor Graph appears, with the elements you specified being shown<br />

in a live, color-coded display of the server performance. Beneath the<br />

graph is a list of the elements included, with the key to the color-coding,<br />

and performance information about each element.<br />

Vendors of hardware and software systems provide information about the nature<br />

of their systems via MIBs (Management Information Base). This information<br />

can be retrieved with the help of the SNMP protocol by specifying the<br />

196 SilkPerformer User Guide


9 EXECUTING LOAD TESTS<br />

Monitoring Load Tests<br />

Monitoring server<br />

performance in a<br />

graph via a SNMP<br />

appropriate OID (Object Identifier). MIB browsers assist you in selecting the<br />

right OID stored in the MIB.<br />

Performance Explorer offers you the possibility of selecting OIDs of MIBs from<br />

several sources for use as data sources for server monitoring. For example,<br />

database systems, such as Oracle, offer extensive performance data to be<br />

collected via a SNMP protocol.<br />

Procedure To monitor server performance in a graph via a SNMP:<br />

1 Click the Monitor Server button on the Performance Explorer Workflow<br />

bar.<br />

The Data Source Wizard appears in the System Selection dialog.<br />

2 Select from the predefined data sources.<br />

3 In the tree view, expand the Custom Data folder.<br />

4 Select the SNMP Data option.<br />

5 Click Next.<br />

The Connection Parameters dialog appears.<br />

6 In the Host name field, enter connection parameters, such as the host<br />

name or IP address of the server system you want to monitor, the port<br />

number and other data required to connect to the data source. You must<br />

have access to the specified server, access rights, and the SNMP service<br />

must be configured properly on the server system.<br />

7 Click Next.<br />

The Add SNMP Measures dialog appears.<br />

To use the contents of an MIB with Performance Explorer, the MIB must<br />

be compiled first. A number of common MIBs are delivered in a<br />

precompiled format.<br />

8 Select one of the precompiled MIBs delivered with Performance<br />

Explorer, or select Compile New MIB for an MIB that has been shipped<br />

with the server system. See the procedure below for compiling new<br />

MIBs.<br />

Once you have selected a compiled MIB, its contents will be shown in a<br />

tree view.<br />

9 Select the OID you are interested in and click Get Value(s).<br />

Connection to the server will then be established and the actual data item<br />

shown.<br />

10 Select the corresponding data item and click Add.<br />

11 Repeat step 8 and 9 until you have selected all the OIDs you want.<br />

12 Click Close.<br />

The Select Displayed Measures dialog appears.<br />

SilkPerformer User Guide 197


9 EXECUTING LOAD TESTS<br />

Monitoring Load Tests<br />

13 Select the factors to be monitored and click Finish.<br />

A monitor graph appears with the elements you specified shown in a<br />

live, color-coded server performance display.<br />

To use the contents of an MIB with Performance Explorer, the MIB must<br />

first be compiled. A number of common MIBs are delivered in a<br />

precompiled format.<br />

Compiling a new MIB<br />

Monitoring server<br />

performance in a<br />

report<br />

Monitoring multiple<br />

servers<br />

Procedure To compile a new MIB:<br />

1 In the Add SNMP Measure dialog, select Compile New MIB for an MIB<br />

that has been shipped with the server system.<br />

The Compile New MIB dialog appears.<br />

2 Browse for the MIB file you want to compile and click Open.<br />

3 Click Compile.<br />

If the compilation succeeds, a new name will be added to the list of<br />

compiled MIBs.<br />

If the error message "Could not IMPORT from -MIB" is<br />

returned, compile the MIB referred to in the error message.<br />

4 Click Close.<br />

Now the new MIB can be used as outlined in the above procedure.<br />

Procedure To monitor server performance in a report:<br />

1 Follow the steps for monitoring server performance in a graph, as<br />

explained above.<br />

2 Click Finish.<br />

3 Select Monitor/Clone Monitor Report from the Performance Explorer<br />

menu bar.<br />

A monitor report appears containing the same performance factors as<br />

selected in the graph.<br />

Monitoring information now appears in tabular form in the report.<br />

Note To save the monitoring report to be used for results<br />

exploration together with the load test results, select Monitor/Write<br />

Monitor Data from the Performance Explorer menu bar.<br />

Procedure To monitor multiple servers:<br />

1 For each server you want to monitor, follow the procedure given at the<br />

top of this topic for monitoring server performance in a graph.<br />

2 Separate graphs will appear for each server.<br />

3 Reposition and resize the graphs to facilitate viewing and comparison.<br />

4 To monitor factors from more than one server in a single graph, use the<br />

tree-view area to locate the factors you want to view.<br />

198 SilkPerformer User Guide


9 EXECUTING LOAD TESTS<br />

Monitoring Load Tests<br />

5 Drag and drop them onto your selected graph.<br />

Storing server<br />

monitoring data<br />

Procedure To store server-monitoring data:<br />

1 Create a monitor report that monitors server performance, as outlined in<br />

the above procedures. You can store server-monitoring data only from a<br />

monitor report, not from a monitor graph.<br />

2 Once you have populated the monitor report by dragging and dropping<br />

the relevant performance factors, select Monitor/Write Monitor Data<br />

from the Performance Explorer menu bar. The monitor data will be<br />

stored in a time series data (.tsd) file.<br />

3 The file name appears in the File section of the Monitor information area<br />

in the report dialog.<br />

4 To view the data in a graph, select File/New/Monitor Graph from the<br />

Performance Explorer menu bar.<br />

A new monitor graph appears.<br />

5 Drag and drop the performance factors of your choice from the report<br />

onto the graph.<br />

The data appears in graphical form.<br />

Requirements for server monitoring<br />

This section gives information about the installation and configuration<br />

requirements for the servers for which real-time monitoring is available in<br />

SilkPerformer.<br />

Server<br />

Active Server Pages<br />

Anny Way Wap Server<br />

1.0<br />

ColdFusion 4.0, 4.5, 5.0<br />

Installation and configuration requirements<br />

SilkPerformer can monitor Active Server Pages without custom<br />

configuration. Varying counters may be displayed depending on which<br />

Internet Information Server version is installed.<br />

Anny Way Wap Servers are monitored by the Performance Monitor.<br />

No special configuration is required.<br />

To monitor ColdFusion, select the Enable Monitoring option in the<br />

Debug dialog box of the ColdFusion administration site. This is the default<br />

value for Windows NT. For UNIX, you need to perform this same action<br />

after you have installed SilkPerformer.<br />

To monitor ColdFusion on UNIX systems, SNMP is used.<br />

SilkPerformer User Guide 199


9 EXECUTING LOAD TESTS<br />

Monitoring Load Tests<br />

Server<br />

BEA WebLogic 8.x and<br />

9.x<br />

<strong>Borland</strong> Application<br />

Server 6.6<br />

IBM WebSphere<br />

Application Servers 3.5 /<br />

4.0<br />

IBM WebSphere 6.0, 6.1<br />

Internet Information<br />

Server 3.0 / 4.0 / 5.0/5.1/<br />

6.0<br />

Installation and configuration requirements<br />

SilkPerformer can monitor WebLogic 8.x and 9.x servers without custom<br />

configuration of the application server. The JNDI protocol is used to<br />

connect via the Management EJB (MEJB) to the MBean Server. Default<br />

connection parameters are preconfigured in SilkPerformer.<br />

SilkPerformer needs to know the appserver installation directory or a copy<br />

of it to build the correct classpath.<br />

A JMX browser allows the selection of the MBean attributes to monitor.<br />

An Easy JMX profile can be used to pre-select interesting MBeans.<br />

SilkPerformer can monitor <strong>Borland</strong> Application Server 6.6 via JSR-160<br />

standard using the Corbaloc protocol over IIOP. The application server<br />

must be configured to allow access to the MBean Server via IIOP.<br />

SilkPerformer needs to know the appserver installation directory or a copy<br />

of it to build the correct classpath.<br />

A JMX browser allows the selection of the MBean attributes to monitor.<br />

An Easy JMX profile can be used to pre-select interesting MBeans.<br />

Certain MBeans will not work properly without applying patch 7697 to<br />

<strong>Borland</strong> Application Server.<br />

A browser is provided for selecting WebSphere performance counters.<br />

Requirements: WebSphere AdminService must be running on the<br />

WebSphere host. It runs by default unless IBM WebSphere Application<br />

Server Standard Edition is used.<br />

SilkPerformer can monitor WebSphere 6.0 and 6.1 Server without custom<br />

configuration of the application server.<br />

JNDI protocol is used to connect via the Management EJB (MEJB) to the<br />

MBean Server. Default connection parameters are preconfigured in<br />

SilkPerformer.<br />

SilkPerformer needs to know the appserver installation directory or a copy<br />

of it to build the correct classpath. SilkPerformer needs to use the same<br />

IBM JVM version for monitoring.<br />

A JMX browser allows the selection of the MBean attributes to monitor.<br />

SilkPerformer can monitor IIS Web servers without custom configuration.<br />

SNMP is supported only with a custom monitoring configuration.<br />

Windows NT SNMP Service must be installed before the IIS Web server is<br />

installed.<br />

200 SilkPerformer User Guide


9 EXECUTING LOAD TESTS<br />

Monitoring Load Tests<br />

Server<br />

JBoss 4.0<br />

Netdynamics 5<br />

Netscape Enterprise<br />

Server 3.0<br />

Installation and configuration requirements<br />

SilkPerformer can monitor JBoss 4.0 Server without custom configuration<br />

of the application server.<br />

JNDI protocol is used to connect via the Management EJB (MEJB) to the<br />

MBean Server. Default connection parameters are preconfigured in<br />

SilkPerformer.<br />

SilkPerformer needs to know the appserver installation directory or a copy<br />

of it to build the correct classpath.<br />

A JMX browser allows the selection of the MBean attributes to monitor.<br />

Two Easy JMX profiles may be used to pre-select interesting MBeans.<br />

Netdynamics, is supported using SNMP.<br />

For standard SNMP, Netdynamics uses a custom port (default 14600)<br />

instead of port 161.<br />

If the SNMP agent still needs to be configured, you may run the ndConfig<br />

utility.<br />

Note Access to MIB data is restricted to a select list of<br />

communities and computers. You must add the machine on<br />

which SilkPerformer is running to this list. The file containing this<br />

list is called jaw.acl. It is located in the directory<br />

\[Netdynamics?Home]\program \properties\[partitionname]\.<br />

Without this file, any user from any machine would be able to<br />

access the data.<br />

See the NetDynamics Administration Guide, Chapter 7, for the MIB<br />

Scheme of the NetDynamics MIB.<br />

Netscape Enterprise 3.0 server is monitored using the Performance<br />

Monitor. No custom configuration is required.<br />

SNMP is supported only with custom monitoring configuration. Use the<br />

Custom Data Source dialog to create custom measurements.<br />

To support SNMP, a subagent must be deployed for each instance of<br />

Netscape's server manager.<br />

On Solaris, a master agent must be deployed to collect and coordinate<br />

subagent data.<br />

SilkPerformer User Guide 201


9 EXECUTING LOAD TESTS<br />

Monitoring Load Tests<br />

Server<br />

Netscape Enterprise<br />

Server 4.x<br />

Netscape Enterprise<br />

Server 5.x<br />

Oracle Application<br />

Server 10.1.3<br />

Installation and configuration requirements<br />

Netscape Enterprise Server 4.x can only be monitored with a custom<br />

configuration. You can use either NT Performance Monitor Data or SNMP<br />

Data. Run the Custom Data Source dialog to create the custom measures.<br />

Netscape Enterprise 4.0 Setup automatically installs and configures<br />

SilkPerformer counters.<br />

Netscape Server 4.1 has been known to have problems automatically<br />

registering SilkPerformer counters. In such instances, an error message is<br />

generated in the event log. You may have to manually rectify this problem.<br />

To support SNMP, a subagent must be deployed for each instance of<br />

Netscape's server manager.<br />

On Solaris, a master agent must be deployed to collect and coordinate all<br />

subagent data.<br />

Netscape Enterprise Server 5.x can only be monitored using a custom<br />

configuration. You can use either NT Performance Monitor Data or SNMP<br />

Data. Run the Custom Data Source dialog to create the custom measures.<br />

Netscape Enterprise 5.0 Setup automatically installs and configures<br />

SilkPerformer counters.<br />

To support SNMP, a subagent must be deployed for each instance of<br />

Netscape's server manager.<br />

On Solaris, a master agent must be deployed to collect and coordinate all<br />

subagent data.<br />

SilkPerformer can monitor Oracle Application Server 10.1.3 without<br />

custom configuration of the application server.<br />

JNDI protocol is used to connect via the Management EJB (MEJB) to the<br />

MBean Server. Default connection parameters are preconfigured in<br />

SilkPerformer.<br />

SilkPerformer needs to know the appserver installation directory or a copy<br />

of it to build the correct classpath.<br />

A JMX browser allows the selection of the MBean attributes to monitor.<br />

An Easy JMX profile can be used to pre-select interesting MBeans.<br />

202 SilkPerformer User Guide


9 EXECUTING LOAD TESTS<br />

Monitoring Load Tests<br />

Server<br />

Installation and configuration requirements<br />

Oracle 7.3<br />

SilkPerformer can monitor Oracle 7.3 servers without custom<br />

configuration. All counters specified in the opctrnm.ini file can be<br />

monitored. However, only the most important ones are automatically<br />

displayed in SilkPerformer.<br />

If registration of performance counters fails during installation of Oracle<br />

server, you can manually register the opctrnm.ini file by running the lodctr<br />

command.<br />

For SNMP support (custom configuration monitoring only), the Oracle<br />

Intelligent Agent must be installed and running.<br />

Oracle 8<br />

Same as Oracle 7.3, however the .ini file for the counters is called<br />

opctrn8.ini.<br />

No custom configuration is required.<br />

For SNMP support (custom configuration monitoring only), the Oracle<br />

Intelligent Agent must be installed and running.<br />

Oracle 9 Same as Oracle 8.<br />

No special configuration is required.<br />

Silverstream 3.0, 3.7 This application server can be monitored on Windows NT using SNMP.<br />

SUN JVM 1.5 and 1.6<br />

Procedure To enable SNMP support:<br />

1 Run SilverStream designer.<br />

2 Select SilverMaster3 database/Objects.<br />

3 Open AgSNMPGetStats in design mode.<br />

4 Double-click the trigger symbol to open the Properties page.<br />

5 Set the Enabled option to true.<br />

6 Close and save the changes.<br />

SilkPerformer can monitor SUN JVM 1.5 and 1.6 via JSR-160 standard<br />

using the RMI protocol. Any application or application server using the<br />

platform MBean Server may be monitored this way. No custom<br />

configuration is necessary.<br />

A JMX browser allows the selection of the MBean attributes to monitor.<br />

An Easy JMX profile can be used to pre-select interesting MBeans.<br />

SilkPerformer User Guide 203


9 EXECUTING LOAD TESTS<br />

Monitoring Load Tests<br />

Server<br />

Apache<br />

Installation and configuration requirements<br />

The monitoring of Apache Web Servers is supported for the following<br />

operating systems:<br />

HP-UX, Linux, Solaris, OSF1<br />

Requirements: With Apache Web servers, you have the option of using the<br />

built-in status report functionality. This requires that the "mod_status"<br />

module be built in, which is done by default. To get more detailed<br />

information it’s useful to select the compile option "ExtendedStatus On".<br />

To enable status reports only for browsers from the foo.com domain, add<br />

code to your "access.conf" configuration file. The Apache configuration is<br />

maintained in a set of files, usually located in /usr/local/apache/etc or /usr/<br />

local/apache/conf (Solaris) or /etc/httpd/conf (Linux). By default the code<br />

below should be “commented out” in one of the configuration files. If it’s<br />

not, add it to the main Apache config file, httpd.conf. Ensure that the<br />

"Allow" statements are correct, otherwise monitoring won’t work.<br />

SetHandler server-status<br />

order deny, allow deny from all allow from .foo.com<br />

<br />

Restart your server. To verify the server's performance module, type the<br />

following url into your browser:<br />

http://hostname/server-status?auto<br />

Monitoring will work if you get a response such as that below:<br />

Total Accesses: 210<br />

Total kBytes: 94<br />

CPULoad: .000278279<br />

Uptime: 366539<br />

ReqPerSec: .000572927<br />

BytesPerSec: .262608<br />

BytesPerReq: 458.362<br />

BusyServers: 1<br />

IdleServers: 6<br />

Scoreboard: ______W.................................................................................<br />

Note: The default Apache monitor only works if Telnet is enabled. If you want to<br />

monitor an Apache server with Telnet disabled, you need to use the WGet<br />

command instead of the default Rexec commands, for example:<br />

wget -q -O - http://hostname/server-status | grep "requests/sec" |<br />

cut -c5- | cut -d\ -f1<br />

204 SilkPerformer User Guide


9 EXECUTING LOAD TESTS<br />

Launching Load Tests Via the Command Line<br />

Server<br />

Stronghold<br />

iPlanet Directory Server<br />

5.0<br />

Netscape Directory<br />

Server 4.0/4.1<br />

Operating System Data<br />

Microsoft Proxy Server<br />

2.0<br />

SQL Server 6.5, 7, 2000<br />

Installation and configuration requirements<br />

Stronghold Web Servers running on Linux can be monitored using the<br />

SilkPerformer. Setting up monitoring for Stronghold Web Servers is<br />

analogous to setting up monitoring for Apache Web Servers.<br />

To verify whether Stronghold's performance module is active, type the<br />

following url into your browser:<br />

http://hostname/stronghold-status?auto<br />

iPlanet Directory Servers are monitored by the Performance Monitor.<br />

No special configuration is required.<br />

Netscape Directory Servers are monitored by the Performance Monitor.<br />

No special configuration is required.<br />

Operating System Data can be monitored for the following platforms:<br />

• NT<br />

• Windows 2000<br />

• Windows XP<br />

• Linux<br />

• Solaris<br />

• HP-UX<br />

• AIX<br />

• OSF1<br />

If available on the host, information such as processor utilization, disc<br />

usage, swapfile utilization, and network packets can be monitored.<br />

On Microsoft systems, operating system data is monitored by the<br />

Performance Monitor. For UNIX systems, a ‘Remote Execution Daemon’<br />

must be running. Such daemons run on UNIX systems by default.<br />

Microsoft Proxy Servers are monitored by the Performance Monitor.<br />

No special configuration is required.<br />

The most significant versions of SQL Server can be monitored with the<br />

Performance Monitor.<br />

No special configuration is required.<br />

Launching Load Tests Via the Command Line<br />

SilkPerformer enables load tests to be started directly from a command prompt<br />

window. This is useful when, for example, you want to perform a number of<br />

load tests consecutively by creating and executing a batch file.<br />

SilkPerformer User Guide 205


9 EXECUTING LOAD TESTS<br />

Launching Load Tests Via the Command Line<br />

To start SilkPerformer from a command line, observe the following syntax:<br />

performer [project file [/Automation [refresh rate] [/<br />

WL:workloadname] [/StartMonitor]] [/PatrolReport] [/<br />

Dev]]<br />

Parameter<br />

project file<br />

/Automation<br />

refresh rate<br />

/WL:workloadname<br />

/StartMonitor<br />

/PatrolReport<br />

/Dev<br />

/SOA<br />

Description<br />

Name of the project file; that defines<br />

the load test to be executed.<br />

Automatically start the load test that<br />

is defined by the specified project<br />

file. If you omit this parameter,<br />

SilkPerformer opens the specified<br />

project.<br />

Refresh rate, in seconds, at which<br />

the Monitor window is to be<br />

refreshed. If you omit this<br />

parameter, then no refresh will<br />

occur.<br />

Name of the workload in the<br />

specified project file. If you specify<br />

a workload, it will be set as the<br />

Active Workload in the project file.<br />

Start Performance Explorer’s<br />

monitoring facility when running<br />

the test.<br />

Create a result file, named<br />

LoadTestReport.xml, at the end of<br />

the load test where all agent<br />

summary measurements are stored.<br />

Note: You must be licensed for Silk<br />

Performer KM to use this switch.<br />

Specifies that SilkPerformer<br />

Developer Workbench be launched.<br />

Specifies that SilkPerformer SOA<br />

Workbench be launched.<br />

/? or -? Displays help about the<br />

SilkPerformer command line<br />

interface.<br />

Table 8: Command line parameters<br />

206 SilkPerformer User Guide


9 EXECUTING LOAD TESTS<br />

Launching Load Tests Via the Command Line<br />

Example<br />

performer<br />

"\Working\Projects\AllDayWorkload\AllDayWorkl<br />

oad.ltp"<br />

/Automation 5 /WL:AllDayWorkload10 /PatrolReport<br />

Note The parentheses (") around the project path are needed when<br />

files or folders in the project path contain spaces.<br />

Note SilkPerformer will close immediately if an error (e.g., a<br />

misspelled project path, script error, workload not in the specified<br />

project file) occurs during the execution of the command line<br />

instruction. Errors can be found in the Event Viewer of the operating<br />

system.<br />

SilkPerformer User Guide 207


9 EXECUTING LOAD TESTS<br />

Launching Load Tests Via the Command Line<br />

208 SilkPerformer User Guide


10<br />

Exploring 10 Chapter<br />

Test Results<br />

Introduction<br />

What you will learn<br />

This chapter explains how to analyze the test results that are generated by<br />

SilkPerformer.<br />

This chapter contains the following sections:<br />

Section<br />

Page<br />

Overview 209<br />

Performance Explorer 212<br />

Reports 229<br />

Measurements 230<br />

Overview<br />

The ninth and final step in conducting a SilkPerformer load test is to display and<br />

analyze the results of the test to assess the performance of the application and<br />

the server under test.<br />

Results overview<br />

SilkPerformer’s Results tab in the top left area of the GUI offers full control over<br />

your test results. Selecting the Results tab displays a tree view containing all test<br />

results of the currently active project, including TryScript runs, load test results,<br />

and Test Manager results (if your SilkPerformer project is linked to a Test<br />

Manager test definition).<br />

Depending on the logging options that you have set for test runs (see “Result<br />

options”), the following items are displayed in the results tree:<br />

• Baseline Report<br />

• Time Series<br />

• TrueLog Files (contains TrueLog files for each virtual user)<br />

SilkPerformer User Guide 209


10 EXPLORING TEST RESULTS<br />

Overview<br />

• User Results (contains user profiles, which list all result files per virtual<br />

user)<br />

• Test Manager (displays results from Test Manager, if the project is<br />

linked to a Test Manager test definition)<br />

To view results, double-click a file in the results tree, or use the context menu by<br />

right-clicking a result file and selecting Open or Explore. Opening a results file<br />

invokes the respective viewing facility (see “Results viewing facilities”).<br />

To delete locally stored results (this does not affect results that are stored in Test<br />

Manager), right-click a top-level results node and select Delete Results.<br />

To refresh displayed results (the results that are displayed in the tree view do not<br />

update if they are changed outside of SilkPerformer), right-click a top-level<br />

results node and select Update Results.<br />

If the icon of a parent node in the results tree is marked with a red X symbol, an<br />

error has occurred during the test execution. If an icon (parent node or result file)<br />

is marked with a blue exclamation mark (!), an error log file contains an<br />

informational message, a warning, or an error.<br />

Test Manager<br />

integration<br />

Results viewing<br />

facilities<br />

SilkPerformer is tightly integrated with SilkCentral Test Manager. If your<br />

SilkPerformer project is linked to Test Manager, you can store your test<br />

results centrally in Test Manager where they can be accessed from both Test<br />

Manager and SilkPerformer.<br />

To view Test Manager results, your project must be linked to a Test Manager<br />

test definition (see “SilkCentral Test Manager Integration” for detailed<br />

information on linking SilkPerformer projects to Test Manager). Once your<br />

project is linked to Test Manager, you can view the centrally stored results by<br />

clicking the Click here to add Test Manager results node in the results tree<br />

(see “Downloading Test Results from Test Manager” for information on<br />

downloading Test Manager results).<br />

Additionally, you can upload results to Test Manager by right-clicking a toplevel<br />

results node and selecting Upload Results to Test Manager (see<br />

“Uploading Test Results to Test Manager” for detailed information).<br />

Comprehensive facilities are available in SilkPerformer for displaying,<br />

reporting, and analyzing test results. Defined measurements take place during<br />

tests and can be displayed in a variety of graphical and tabular forms.<br />

• “Performance Explorer”: This is the primary area for viewing test<br />

results. A fully comprehensive array of graphic features displays the<br />

results—primarily in user-defined graphs—with as many elements as are<br />

required. The results of different tests can be compared, and there are<br />

extensive features for server monitoring. A comprehensive HTML based<br />

overview report that combines usergroup data from the baseline report<br />

file (baselineReport.brp) with time series test result information, is<br />

available.<br />

210 SilkPerformer User Guide


10 EXPLORING TEST RESULTS<br />

Overview<br />

Verification under load<br />

• “TrueLog On Error”: SilkPerformer provides full visual verification<br />

under load capabilities for Web applications. It allows you to combine<br />

extensive content verification checks with full error drill-down analysis<br />

during load tests.<br />

• “Virtual User Report files”: These files contain the simulation results for<br />

each user, if their generation is enabled. Details of the measurements for<br />

each individual user are presented in tabular form.<br />

• “Virtual User Output files”: These files contain the output of write<br />

statements used in test scripts, if their generation is enabled.<br />

• “Viewing Baseline Reports”: A detailed XML/XSL-based report that<br />

provides you with a summary table, transaction response-time details,<br />

timers for all accessed HTML pages, Web forms, and errors that<br />

occurred. This information is available for all user types involved in<br />

baseline tests.<br />

• SilkCentral Test Manager Reports: SilkPerformer projects can be<br />

integrated into SilkCentral Test Manager (Test Manager) test plans and<br />

directly executed via Test Manager. This allows for powerful test-result<br />

analysis and reporting. For detailed information on Test Manager<br />

reporting, please refer to the SilkCentral Test Manager User Guide.<br />

SilkPerformer provides full visual verification under load capabilities for Web<br />

applications. It allows you to combine extensive content verification checks<br />

with full error drill down analysis during a load test. SilkPerformer verification<br />

checks can be done from all virtual users without major performance loss.<br />

Thanks to SilkPerformer's innovative TrueLog technology, it is possible to<br />

collect details regarding the errors of all virtual users that take part in a load test.<br />

Traditional probing clients, separated from the load testing tool, are only able to<br />

detect content verification errors that occur for users that actually perform<br />

verifications. Since a functional testing tool is only able to drive a very limited<br />

number of concurrent users, the functional test covers only a very small subset<br />

of all users that visit your Web application. Such a probing client cannot detect<br />

verification errors that occur to users that are not contained within this small<br />

subset. Hence, SilkPerformer redefines the type of testing that can be done with<br />

a load testing tool.<br />

With the TrueLog technology, you are able to find a new class of errors and<br />

their root causes—including errors that usually occur to only a subset of users<br />

when your application is under a heavy load. For most applications, this is the<br />

type of load that will most likely be experienced once the application is<br />

deployed in the real world. Typical errors include incorrect text on a Web page,<br />

incorrectly computed and displayed values, or application-related messages,<br />

such as "Servlet Error" or "Server Too Busy" errors. These are not system-level<br />

errors and are displayed on Web pages with HTTP 200 status codes.<br />

SilkPerformer User Guide 211


10 EXPLORING TEST RESULTS<br />

Performance Explorer<br />

Additionally, SilkPerformer provides a visual view of its new verification under<br />

load capability to simplify its use:<br />

- Visual content verification allows you to visually define the content<br />

that needs to be verified.<br />

- TrueLog On Error generation and TrueLog On Error analysis allow<br />

you to visually analyze errors to find their root cause.<br />

TrueLog On Error<br />

As a foundation for full visual root cause analysis, SilkPerformer can save the<br />

complete history of errors within a TrueLog. TrueLog On Error can even be<br />

generated in large-scale load tests. TrueLog On Error helps you uncover the true<br />

source of your application's error output under all possible load conditions.<br />

Generated log files can be displayed by means of TrueLog Explorer to verify the<br />

cause of errors raised by application servers.<br />

1 Before you begin a load test, select the TrueLog On Error checkbox on<br />

the Workload Configuration dialog.<br />

2 If errors occur during load tests, you can view the visual content of the<br />

TrueLog by clicking the Explore Results button on SilkPerformer's<br />

workflow bar.<br />

3 TrueLog Explorer opens and displays the content of the TrueLogs.<br />

4 If TrueLog On Error files are not displayed automatically, click Analyze<br />

TrueLog On Error and navigate to the directory of the actual load test.<br />

Select the TrueLog files to be displayed and click OK.<br />

5 You can navigate from one occurrence of an error to the next.<br />

6 To display the history of an error, click the API nodes in the tree view on<br />

the left.<br />

Performance Explorer<br />

Performance Explorer is the primary tool used for viewing load test results. A<br />

vast array of graphic facilities allows both real-time monitoring of the target<br />

server while tests are being run and exhaustive analysis of the results after tests<br />

have completed. Exploring test results is made easy by a workflow bar with a<br />

click-through user interface, enhanced by drag-and-drop functionality.<br />

In real-time monitoring, live charts provide a customizable display of the most<br />

relevant performance information from the target server. Monitoring is available<br />

for a comprehensive collection of the Web servers, application servers, and<br />

database servers running on all of the operating systems most widely used<br />

today. Multiple charts can be open at the same time, so that, for example, the<br />

tester can watch a graphic display of Web server performance and operating<br />

212 SilkPerformer User Guide


10 EXPLORING TEST RESULTS<br />

Performance Explorer<br />

Performance Data<br />

Collection Engine<br />

(PDCE)<br />

Viewing Overview<br />

Summary Reports<br />

system performance simultaneously. A tree-view editor with drag-and-drop<br />

functionality allows elements from any data source to be combined in the charts.<br />

After a test, the performance of the target server can be charted from both the<br />

client side and the server side. Response time measurements display the client<br />

perspective, while throughput data gives the perspective from the server side.<br />

Charts and graphs are fully customizable, and they can contain as many or as<br />

few of the measurements taken during the test as the tester needs. Multiple<br />

charts, using information from one or from different tests, can be opened at once<br />

to facilitate contrast/compare operations. Templates for the most typical test<br />

scenarios (Web, Database, IIOP) are provided, and these default charts can be<br />

populated easily and quickly with the data the tester requires. Here also, dragand-drop<br />

functionality enables chart elements to be combined from any data<br />

source. Information on client response times and server performance can be<br />

placed in a single chart, so that testers can see directly how server performance<br />

affects client behavior.<br />

A comprehensive XML/XSL based overview report, which combines usergroup<br />

data from the baseline report file (baseline.brp) with time series test result<br />

information, is available. You can customize the overview report to your needs<br />

by changing the provided texts and by inserting charts of your interest. Saving<br />

your changes as a template allows the reuse of your individual settings.<br />

The PDCE (Performance Data Collection Engine) is a Performance Explorer<br />

engine that is used for online monitoring. Its interface can alternately be<br />

accessed via Benchmark Description Language (BDL), which is used by<br />

SilkPerformer to monitor data sources, such as PerfMon, SNMP and<br />

WebSphere 4.0. The BDL interface for the PDCE is described in the pdce.bdh<br />

include file.<br />

Each of the measurements that Performance Explorer monitors can<br />

alternately be monitored via SilkPerformer using BDL scripts. After<br />

registering measurements of interest, a monitoring data set can be retrieved<br />

from the PDCE via the provided polling functions (PDCE API). These<br />

functions provide data, status information, and descriptions of the<br />

measurements (if available). Further information regarding the PDCE API<br />

can be found in the BDL Function Reference.<br />

Procedure To view an overview summary report:<br />

1 Click the Explore Results button on the SilkPerformer Workflow bar.<br />

The Workflow - Explore Results dialog appears.<br />

2 Click the Performance Explorer button or link.<br />

Performance Explorer opens and displays an overview summary report<br />

for the most recent load test, if you have selected the Generate overview<br />

report automatically option in the Settings/Options/Reporting dialog.<br />

Additionally, you can choose to use a previously stored template for the<br />

SilkPerformer User Guide 213


10 EXPLORING TEST RESULTS<br />

Performance Explorer<br />

Customizing Overview<br />

Summary Reports<br />

Adding a default chart<br />

Adding a custom chart<br />

generation of an overview report in this dialog. This setting is a global<br />

setting and will be used with Performance Explorer, regardless of the<br />

workload project you are using.<br />

3 If the overview report does not appear automatically, click the Overview<br />

Report button on the Workflow bar.<br />

4 Navigate to the directory of the load test you are working with and select<br />

the corresponding .tsd file.<br />

5 In the next step you are asked to select the template you want to use for<br />

the generation of the overview report.<br />

6 Click Finish and the overview report will appear.<br />

Performance Explorer enables to you add customized charts and reports to<br />

overview reports. You can remove charts and reports from the overview report<br />

at any time and you can save your changes as a template to be used for the<br />

generation of overview reports in the future.<br />

Procedure To add a default chart to the overview report:<br />

1 Select the overview report to which you want to add the chart.<br />

2 In the Workflow toolbar, click the Customize Report button.<br />

Alternately, navigate to the custom charts section of the overview report<br />

and click the Click here to customize this section link.<br />

The Custom Overview Report Wizard dialog then appears.<br />

3 Select all sections that you want displayed in the overview report. By<br />

default, all available sections are displayed. Click Next.<br />

4 Select Add new view and click Next.<br />

5 Expand the Graphs folder and select the type of graph you want to insert<br />

into the overview report.<br />

6 Click Finish.<br />

Performance Explorer opens a new view with the type of chart you have<br />

selected. In addition, Performance Explorer inserts the chart into the<br />

custom charts section of the overview report.<br />

Note When you add new measurements to the view that contains the<br />

graph, or when you remove measurements from the view, the<br />

corresponding graph in the overview report is automatically<br />

updated.<br />

Procedure To add a custom chart to the overview report:<br />

1 Generate the graph you want to add to the overview report.<br />

2 Select the overview report to which you want to add the chart.<br />

214 SilkPerformer User Guide


10 EXPLORING TEST RESULTS<br />

Performance Explorer<br />

Adding a default<br />

report<br />

3 In the Workflow toolbar, click the Customize Report button.<br />

Alternately, navigate to the custom charts section of the overview report<br />

and click the Click here to customize this section link.<br />

The Custom Overview Report Wizard dialog opens.<br />

4 Select all sections that you want to have displayed in the overview<br />

report. By default, all available sections are displayed. Click Next.<br />

5 Expand the Charts folder and select the chart you have just created. If<br />

you want to add a new chart to the overview report, select the Add new<br />

view option and click Next.<br />

6 Click Finish.<br />

Performance Explorer inserts the chart you have selected into the custom<br />

charts section of the overview report.<br />

Note To change the name and the description of a chart, right click<br />

the bottom area of the graph in Performance Explorer and select<br />

properties. There you can specify a name and a description, which<br />

also appears in the overview report.<br />

Note When you add new measurements to the view that contains the<br />

graph, or when you remove measurements from the view, the<br />

corresponding graph in the overview report is automatically<br />

updated.<br />

Procedure To add a default report to an overview report:<br />

1 Select the overview report to which you want to add the report.<br />

2 In the Workflow toolbar, click the Customize Report button.<br />

Alternately, navigate to the custom tables section of the overview report<br />

and click the Click here to customize this section link.<br />

The Custom Overview Report Wizard dialog opens.<br />

3 Expand the Reports folder and select the type of graph you want to insert<br />

into the overview report.<br />

4 Click Finish.<br />

Performance Explorer opens a new view with the type of report you have<br />

selected. In addition, Performance Explorer inserts this report into the<br />

custom tables section of the overview report.<br />

Note When you add new measurements to the view that contains the<br />

report, or when you remove measurements from the view, the<br />

corresponding report in the overview report is automatically<br />

updated.<br />

SilkPerformer User Guide 215


10 EXPLORING TEST RESULTS<br />

Performance Explorer<br />

Adding a custom<br />

report<br />

Removing a chart<br />

Removing a report<br />

Procedure To add a custom report to the overview report:<br />

1 Generate the report you want to add to the overview report.<br />

2 Select the overview report to which you want to add the report.<br />

3 In the Workflow toolbar, click the Customize Report button.<br />

Alternately, navigate to the custom reports section of the overview report<br />

and click the Click here to customize this section link.<br />

The Custom Overview Report Wizard dialog opens.<br />

4 Expand the Reports folder and select the report you have just created.<br />

5 Click Finish.<br />

6 Performance Explorer inserts the report you have selected into the<br />

custom tables section of the overview report.<br />

Note To change the name and the description of a report, right click<br />

the report in Performance Explorer and select properties. There you<br />

can specify a name and a description, which will also appear in the<br />

overview report.<br />

Note When you add new measurements to the view that contains the<br />

report, or when you remove measurements from the view, the<br />

corresponding report in the overview report is automatically<br />

updated.<br />

Procedure To remove a chart from the overview report:<br />

1 Select the overview report from which you want to remove a chart.<br />

2 In the Workflow toolbar, click the Customize Report button.<br />

Alternately, navigate to the custom charts section of the overview report<br />

and click the Click here to customize this section link.<br />

The Custom Overview Report Wizard dialog opens.<br />

3 Expand the Charts folder and disable the chart you want to remove from<br />

the overview report. If you want to add a new chart to the overview<br />

report, select the Add new view option and click Next.<br />

4 Click Finish.<br />

Performance Explorer removes the chart you have selected from the<br />

custom charts section of the overview report.<br />

Procedure To remove a report from the overview report:<br />

1 Select the overview report from which you want to remove a report.<br />

2 In the Workflow toolbar, click the Customize Report button.<br />

Alternately, navigate to the custom tables section of the overview report<br />

and click the Click here to customize this section link.<br />

The Custom Overview Report Wizard dialog opens.<br />

216 SilkPerformer User Guide


10 EXPLORING TEST RESULTS<br />

Performance Explorer<br />

Changing text areas<br />

Saving report layouts<br />

Specifying a default<br />

template<br />

Viewing results<br />

3 Expand the Reports folder and disable the report you want to remove<br />

from the overview report.<br />

4 Click Finish.<br />

Performance Explorer removes the report you have selected from the<br />

custom tables section of the overview report.<br />

Procedure To change text areas in the overview report:<br />

1 In an overview report, many text areas are predefined, but you can<br />

change them according to your needs. When you see click here to edit<br />

you can change the corresponding text and save the report as a template<br />

to be used for further reports.<br />

Procedure To save the layout of a report as a template:<br />

1 Customize the overview report based on your needs.<br />

2 Select File - Save as template from the menu bar and provide a name for<br />

the new template.<br />

The template will be stored in the \working\include folder, to be used for<br />

all projects. Have a look at Settings / Options / Reporting, in which you<br />

can specify this template to be used when creating a new overview<br />

report.<br />

Procedure To set a template as the default template:<br />

1 From the menu bar, select Settings / Options and then the Reporting tab.<br />

2 Check Use template when generating a new overview report and select a<br />

previously stored template.<br />

The selected template will be used to create a new overview report for all<br />

projects.<br />

Performance Explorer offers numerous options for viewing results.<br />

Default results<br />

Viewing default<br />

results in a graph<br />

Procedure To view the default set of results in a graph:<br />

1 Click the Explore Results button on the SilkPerformer Workflow bar.<br />

The Workflow - Explore Results dialog appears.<br />

2 Click the Performance Explorer button.<br />

Performance Explorer opens.<br />

3 Click the View Graph button on the Performance Explorer Workflow<br />

bar.<br />

The default graph for the current project appears.<br />

SilkPerformer User Guide 217


10 EXPLORING TEST RESULTS<br />

Performance Explorer<br />

Viewing default<br />

results in a report<br />

Procedure To view the default set of results in a report:<br />

1 Click the Explore Results button on the SilkPerformer Workflow bar.<br />

The Workflow - Explore Results dialog appears.<br />

2 Click the Performance Explorer button.<br />

Performance Explorer opens.<br />

3 Click the View Report button on the Performance Explorer Workflow<br />

bar.<br />

The default report for the current project appears.<br />

Specific results<br />

Viewing specific<br />

results in a graph<br />

Viewing specific<br />

results in a report<br />

Procedure To view a specific set of results in a graph:<br />

1 Click the Explore Results button on the SilkPerformer Workflow bar.<br />

The Workflow - Explore Results dialog appears.<br />

2 Click the Performance Explorer button.<br />

Performance Explorer opens.<br />

3 Click the Select Graph button on the Performance Explorer Workflow<br />

bar.<br />

The Template dialog appears.<br />

4 In the Templates area, expand the folder for the measurement type you<br />

want to view, either Response Time or Throughput. To view the default<br />

graph, select General.<br />

5 Select the measure you want to view.<br />

6 Click Finish.<br />

A graph displaying the measure you selected appears.<br />

Procedure To view a specific set of results in a report:<br />

1 Click the Explore Results button on the SilkPerformer Workflow bar.<br />

The Workflow - Explore Results dialog appears.<br />

2 Click the Performance Explorer button.<br />

Performance Explorer opens.<br />

3 Click the Select Report button on the Performance Explorer Workflow<br />

bar.<br />

The Template dialog appears.<br />

4 In the Templates area, expand the folder for the measurement type you<br />

want to view, either Response Time or Throughput. To view the default<br />

report, select General.<br />

5 Select the measure you want to view.<br />

218 SilkPerformer User Guide


10 EXPLORING TEST RESULTS<br />

Performance Explorer<br />

6 Click Finish.<br />

A report giving information on the measure you selected appears.<br />

Custom results<br />

Viewing custom<br />

results in a graph<br />

Viewing custom<br />

results in a report<br />

Procedure To view a custom set of results in a graph:<br />

1 Click the Explore Results button on the SilkPerformer Workflow bar.<br />

The Workflow - Explore Results dialog appears.<br />

2 Click the Performance Explorer button.<br />

Performance Explorer opens.<br />

3 Select File/New/Graph from the Performance Explorer menu bar.<br />

The Select Result File dialog appears.<br />

4 Locate the time series data (.tsd) file for which you want to see a graph<br />

and click Open.<br />

Performance Explorer displays a tree view with all the measurements<br />

that the selected file contains.<br />

5 In the tree-view area, expand the folder containing the measure types you<br />

want to add to the graph.<br />

6 Drag and drop the measure you want onto the graph.<br />

7 Repeat the drag-and-drop procedure as often as is necessary to add<br />

elements to the graph.<br />

Procedure To view a custom set of results in a report:<br />

1 Click the Explore Results button on the SilkPerformer Workflow bar.<br />

The Workflow - Explore Results dialog appears.<br />

2 Click the Performance Explorer button.<br />

Performance Explorer opens.<br />

3 Select File/New/Report from the Performance Explorer menu bar.<br />

The Select Result File dialog appears.<br />

4 Locate the time series data (.tsd) file for which you want to see a report<br />

and click Open.<br />

5 In the tree-view area, expand the folder that contains the measure types<br />

you want to add to the report.<br />

6 Drag and drop the measure you want onto the report.<br />

7 Repeat the drag-and-drop procedure as often as is necessary to add<br />

elements to the report.<br />

SilkPerformer User Guide 219


10 EXPLORING TEST RESULTS<br />

Performance Explorer<br />

Multiple tests<br />

Viewing multiple test<br />

results in a graph<br />

Viewing multiple test<br />

results in a report<br />

Procedure To view the results of multiple load tests in a graph:<br />

1 Click the Explore Results button on the SilkPerformer Workflow bar.<br />

The Workflow - Explore Results dialog appears.<br />

2 Click the Performance Explorer button.<br />

Performance Explorer opens.<br />

3 Select File/New/Graph from the Performance Explorer menu bar.<br />

A new, empty graph appears.<br />

4 From the Performance Explorer menu bar, select Explore/Add Results;<br />

or right-click the project name in the tree-view area and choose Add<br />

Results.<br />

The Select Result File dialog appears.<br />

5 Use this dialog to specify results information from any load test to be<br />

made available for the graph.<br />

The data is added to the resources available in the tree-view area.<br />

6 Continue adding results information from as many load tests as is<br />

required.<br />

7 In the tree-view area, expand the folders for the load tests and measure<br />

types you want to see in your graph.<br />

8 Drag and drop the measures you require onto the graph.<br />

Procedure To view the results of multiple load tests in a report:<br />

1 Click the Explore Results button on the SilkPerformer Workflow bar.<br />

The Workflow - Explore Results dialog appears.<br />

2 Click the Performance Explorer button.<br />

Performance Explorer opens.<br />

3 Select File/New/Report in the Performance Explorer menu bar.<br />

A new, empty report appears.<br />

4 From the Performance Explorer menu bar, select Explore/Add Results;<br />

or right-click the project name in the tree-view area and choose Add<br />

Results.<br />

The Select Result File dialog appears.<br />

5 Use this dialog to specify results information from any load test to be<br />

made available for the report.<br />

The data is added to the resources available in the tree-view area.<br />

6 Continue adding results information from as many load tests as is<br />

required.<br />

220 SilkPerformer User Guide


10 EXPLORING TEST RESULTS<br />

Performance Explorer<br />

7 In the tree-view area, expand the folders for the load tests and measure<br />

types you want to see in your report.<br />

8 Drag and drop the measures you require onto the report.<br />

Monitoring data<br />

Viewing results and<br />

monitoring data in a<br />

graph<br />

Viewing results and<br />

monitoring data in a<br />

report<br />

Procedure To view test results and monitoring data in a graph:<br />

1 Click the Explore Results button on the SilkPerformer Workflow bar.<br />

The Workflow - Explore Results dialog appears.<br />

2 Click the Performance Explorer button.<br />

Performance Explorer opens.<br />

3 Select File/New/Graph from the Performance Explorer menu bar.<br />

A new, empty graph appears.<br />

4 From the Performance Explorer menu bar, select Explore/Add Results;<br />

or right-click the project name in the tree-view area and choose Add<br />

Results.<br />

The Select Result File dialog appears.<br />

5 Use this dialog to specify results information from the load test you want<br />

to be made available for the graph.<br />

These tsd files contain the following data: m@... contains merged times<br />

series data of the load test, i@... contains information from the agent,<br />

u@... contains user specific data, r@... contains server monitor data<br />

The data is added to the resources available in the tree-view area.<br />

6 Use the Select Result File dialog again, this time to locate monitoring<br />

information generated during server monitoring.<br />

7 In the tree-view area, expand the folders for the load test and monitoring<br />

data you want to see in your graph.<br />

8 Drag and drop the measures you require onto the graph.<br />

To view test results and monitoring data in a report:<br />

1 Click the Explore Results button on the SilkPerformer Workflow bar.<br />

The Workflow - Explore Results dialog appears.<br />

2 Click the Performance Explorer button.<br />

Performance Explorer opens.<br />

3 Select File/New/Report from the Performance Explorer menu bar.<br />

A new, empty report appears.<br />

SilkPerformer User Guide 221


10 EXPLORING TEST RESULTS<br />

Performance Explorer<br />

Customizing graphs<br />

4 From the Performance Explorer menu bar, select Explore/Add Results;<br />

or right-click the project name in the tree-view area and choose Add<br />

Results.<br />

The Select Result File dialog appears.<br />

5 Use this dialog to specify results information from the load test you<br />

require to be made available for the report.<br />

The data is added to the resources available in the tree-view window.<br />

6 Use the Select Result File dialog again, this time to locate monitoring<br />

information generated during server monitoring. Files beginning with<br />

r@... contain server monitoring data.<br />

7 In the tree-view area, expand the folders for the load test and monitoring<br />

data you want to see in your report.<br />

8 Drag and drop the measures you require onto the report.<br />

Procedure To customize the graph you are viewing:<br />

1 To view and edit properties for your graph, click the View Properties<br />

button on the Performance Explorer toolbar.<br />

The Properties dialog appears at the General tab.<br />

2 Use the View Description area to see information about the current<br />

graph.<br />

3 Click the Chart tab to edit display options for the current graph.<br />

4 Use the View Options area to specify chart settings. You can specify<br />

whether to display the currently selected series as a thicker line and<br />

whether to assume that all time series start at the same time.<br />

5 Select the Highlight Selected Series option to display the currently<br />

selected series as a thicker line. While this option may be useful as long<br />

as you are working with your charts, you should disable the option<br />

before you export or print your charts.<br />

6 Select the Overlay series option to assume that all time series that are<br />

displayed in a chart start at the same time. You should use this option<br />

when you are viewing a chart that contains time series from load tests<br />

with different starting times.<br />

7 From the Background Color drop-down lists, select two colors that you<br />

want to use to enhance your charts. Performance Explorer displays a<br />

vertical color transition from the first to the second color as the<br />

background image. To use custom colors, click the buttons to the right of<br />

the drop-down lists.<br />

222 SilkPerformer User Guide


10 EXPLORING TEST RESULTS<br />

Performance Explorer<br />

8 From the Text and grid color drop-down list, select the color that you<br />

want to use for the axis information and the grid in your charts. To use a<br />

custom color, click the button to the right of the drop-down list.<br />

9 Use the Scaling Options area to determine whether you want to display<br />

real time series data values or to scale values between 0 and 100.<br />

10 Select the Scale displayed values between 0 and 100 option to display<br />

scaled values rather than real time series data values.<br />

Select the Display real values option to display real time series data<br />

values rather than scaled ones.<br />

11 Click OK exit the dialog and implement your changes in the graph.<br />

12 To change the appearance of a selected time series element in your<br />

graph, use the Series Color, Line Width, and Line Style drop-down lists<br />

in the Performance Explorer toolbar.<br />

13 To expand an area in your graph, click the left edge of the area you want<br />

to expand and drag to the right edge of the area.<br />

The area is highlighted as you drag, and is expanded when you release<br />

the mouse button.<br />

14 To undo the area expansion, drag in the opposite direction on the graph,<br />

or click the Zoom out button on the toolbar.<br />

15 Use the Source Type drop-down list to choose the way in which<br />

measurement information for the time period in question is presented.<br />

Choose to have Performance Explorer calculate and use in the graph a<br />

sum of the values, their average, a count, the minimum or maximum<br />

value, or the standard deviation from the average.<br />

16 Use the Series scaling button to alter the multiple by which selected<br />

elements in a graph are scaled.<br />

17 Use the Series Type button to display graph elements as a simple line (the<br />

default), as a candle graph, as a candle graph with sticks or as an area<br />

series type. In a candle graph, each measurement is displayed with a<br />

vertical marker with a central button. The central button represents the<br />

average value for the time period involved, and the top and bottom of the<br />

marker represent the highest and lowest values of the standard deviation<br />

from the average. In a candle graph with sticks, two further values are<br />

displayed as lines on top of and below the marker; these are the<br />

maximum and minimum values for the period in question. In an area<br />

series type graph the data area is completely colored in.<br />

18 Use the Show Series Markers button to alternate between displaying<br />

actual measurement values on the graph itself or not.<br />

SilkPerformer User Guide 223


10 EXPLORING TEST RESULTS<br />

Performance Explorer<br />

Comparing graphs<br />

Viewing a results<br />

graph in a Web<br />

browser<br />

19 Use the Show Null Values button to show values where no measurements<br />

were made during the interval.<br />

20 Use the Toggle Highlight button to alternate between showing a selected<br />

graph element (or elements) highlighted with a bold line or not.<br />

21 To choose between seeing the lower part of the graph window in which<br />

the measure type legends appear or not, use the Toggle legends button.<br />

22 To choose between having a frame with title bar or not on your graph,<br />

use the Toggle Frames button.<br />

23 Use the Toggle Scaling button to alternate between showing real values<br />

and showing values scaled between 0 and 100 in the vertical axis in your<br />

graph. Note that Performance Explorer initially chooses a scale for the<br />

graph that will provide a clear display.<br />

24 To use logarithmic scaling for the vertical axis of your graph, use the<br />

Logarithmic Y-axis button.<br />

25 Use the Toggle Overlay button to have the start points of all measures<br />

displayed in your graph coordinated at the zero point on the horizontal<br />

axis. This is useful where comparisons need to be made between<br />

measurements from load tests that started at different times.<br />

Procedure To use similar graphs for comparing different sets of results:<br />

1 With the initial graph that you want to use for comparison purposes<br />

open, click the Compare Graph button on the Performance Explorer<br />

Workflow bar.<br />

The Compare TSD File dialog opens.<br />

2 Locate and open the time series data (.tsd) file from the load test whose<br />

results you want to see in a graph similar to your initial one.<br />

A new graph appears, populated with the same elements as the initial<br />

graph, if available.<br />

3 Resize and relocate the graphs as necessary to facilitate comparisons.<br />

Procedure To view a results graph in a Web browser:<br />

1 In Performance Explorer, create or open the graph that you want to view<br />

in a Web browser.<br />

2 Click the View as HTML button on the Performance Explorer Workflow<br />

bar.<br />

The View as HTML dialog appears.<br />

3 Click OK.<br />

Your Web browser opens and displays your graph, now ready for<br />

publication on the Web, if you want.<br />

224 SilkPerformer User Guide


10 EXPLORING TEST RESULTS<br />

Performance Explorer<br />

Viewing a results<br />

report in a Web<br />

browser<br />

Setting chart options<br />

Procedure To view a results report in a Web browser:<br />

1 In Performance Explorer, create or open the report that you want to view<br />

in a Web browser.<br />

2 Click the View as HTML button on the Performance Explorer Workflow<br />

bar.<br />

The View as HTML dialog appears.<br />

3 Click OK.<br />

Your Web browser opens and displays your report.<br />

Procedure To set default charting options:<br />

1 Click the Explore Results button on the SilkPerformer Workflow bar.<br />

The Workflow - Explore Results dialog appears.<br />

2 Click the Performance Explorer button.<br />

Performance Explorer opens.<br />

You can also access Performance Explorer by selecting Results/Explore<br />

Time Series from the SilkPerformer menu bar.<br />

3 Select Settings/Options from the Performance Explorer menu bar.<br />

The Performance Explorer Options dialog opens at the Chart tab.<br />

4 Use the View Options area to specify chart settings. You can specify<br />

whether to display the currently selected series with an emphasized,<br />

thicker line and whether to assume that all time series start at the same<br />

time.<br />

5 Select the Highlight Selected Series option to display the currently<br />

selected series with an emphasized, thicker line. While this option may<br />

be useful as long as you are working with your charts, you should disable<br />

the option before you export or print your charts.<br />

6 Select the Overlay series option to assume that all time series that are<br />

displayed in a chart start at the same time. You should use this option<br />

when you are viewing a chart that contains time series from load tests<br />

with different starting times.<br />

7 From the Background Color drop-down lists, select two colors that you<br />

want to use to enhance your charts. Performance Explorer displays a<br />

vertical color transition from the first to the second color as the<br />

background image. To use custom colors, click the buttons to the right of<br />

the drop-down lists.<br />

8 From the Text and grid color drop-down list, select the color that you<br />

want to use for the axis information and the grid in your charts. To use a<br />

custom color, click the button to the right of the drop-down list.<br />

SilkPerformer User Guide 225


10 EXPLORING TEST RESULTS<br />

Performance Explorer<br />

Setting time series<br />

data options<br />

Setting options for<br />

exporting result<br />

graphs<br />

9 Use the Scaling Options area to determine whether you want to display<br />

real time series data values or to scale values between 0 and 100.<br />

10 Select the Scale displayed values between 0 and 100 option to display<br />

scaled values rather than real time series data values.<br />

Select Display real values option to display real time series data values<br />

rather than scaled ones.<br />

11 Click OK.<br />

Procedure To set default options that are specific to time series data:<br />

1 From the Performance Explorer menu bar, select Settings/Options.<br />

The Performance Explorer Options dialog opens at the Chart tab.<br />

2 Click the Series tab.<br />

3 In the Default settings area, select the Ignore NULL values option if you<br />

want to hide null values by default. You can use the Show Null Values<br />

button on the Performance Explorer toolbar to specify whether to display<br />

null values separately for each series.<br />

4 From the Show summary and counter values per drop-down list, select<br />

the time unit for which you want time series data to be displayed. Select<br />

the Interval at which you want to have data displayed for the<br />

computation interval contained in the tsd, or select Second to have data<br />

displayed scaled to one-second intervals. To change the default<br />

computation interval, use the Time Series tab of the Profile Settings –<br />

Results dialog.<br />

5 From the Default line width drop-down list, select a line width that will<br />

be used whenever you add a new time series to a chart.<br />

6 Use the Markers area to specify whether to display chart markers<br />

indicating exact measurement values for each series.<br />

7 Select the Show chart markers option to display a chart marker for each<br />

measure value of each series, indicating the exact measure value.<br />

8 In the Decimal digits field, enter the number of digits to be displayed in<br />

the chart markers. Chart markers can be used to display exact<br />

measurement values for each series within a chart.<br />

9 Click OK.<br />

Procedure To set default options for exporting results graphs:<br />

1 From the Performance Explorer menu bar, select Settings/Options.<br />

The Performance Explorer Options dialog opens at the Chart tab.<br />

2 Click the HTML View tab.<br />

226 SilkPerformer User Guide


10 EXPLORING TEST RESULTS<br />

Performance Explorer<br />

Setting options for<br />

candle graphs<br />

Setting monitoring<br />

options<br />

3 Select an option in the Chart picture resolution area to determine the<br />

resolution of the image that is generated when you export a chart as an<br />

HTML document. Keep in mind that the higher the resolution, the larger<br />

the generated image file will be and the longer it will take to transfer the<br />

HTML document over the Web.<br />

Select the User-defined option to use a custom resolution, and add<br />

appropriate values in the fields.<br />

4 Use the Picture type area to select the picture format of your chart in an<br />

HTML document.<br />

Select the JPEG option to include the chart in an HTML document as a<br />

JPEG file (Joint Photographic Experts Group).<br />

Select the BMP (only with Internet Explorer) option to include the chart<br />

in an HTML document as a BMP file (Microsoft Bitmap).<br />

5 Click OK.<br />

Procedure To set default options for candle graphs:<br />

1 From the Performance Explorer menu bar, select Settings/Options.<br />

The Performance Explorer Options dialog opens at the Chart tab.<br />

2 Click the Candles tab.<br />

3 Use the Candle style area to define the width and the border color for the<br />

candles in your current graph.<br />

4 From the Border color drop-down list, select the color you want to use<br />

for the candle borders in your current graph. Click the button to the right<br />

of the drop-down list to define a custom color.<br />

5 In the Candle width field, enter the width for the candles in your current<br />

graph. Click the buttons to the right of the field to raise and lower the<br />

width.<br />

6 Use the Marker style area to define the height and color for the markers<br />

that indicate the mean values of the series in your current chart.<br />

7 From the Marker color drop-down list, select the color you want to use<br />

for the markers. Click the Browse (...) button to the right of the dropdown<br />

list to define a custom color.<br />

8 In the Marker height field, enter the height for the markers. Click the<br />

buttons to the right of the field to raise and lower the height.<br />

9 Click OK.<br />

Procedure To set default monitoring options:<br />

1 From the Performance Explorer menu bar, select Settings/Options.<br />

The Performance Explorer Options dialog opens at the Chart tab.<br />

SilkPerformer User Guide 227


10 EXPLORING TEST RESULTS<br />

Performance Explorer<br />

Setting time series<br />

data writer options<br />

Setting report options<br />

2 Click the Monitor tab.<br />

3 In the Interval fields in the Monitor options area, set the length of the<br />

intervals at which the graph is updated. Click the buttons to the right of<br />

the field to raise and lower the interval and to set the interval time unit.<br />

4 In the Page size field, set the number of measure points currently<br />

displayed per graph on the horizontal axis.<br />

5 In the History size field, set the number of measure points stored for the<br />

entire graph on the horizontal axis.<br />

6 Use the View options area to set display options for your real-time charts.<br />

You can change the color settings in your charts, in the axis information,<br />

and in your chart grid.<br />

7 From the Background colors drop-down lists, select two colors that you<br />

want to use to enhance your charts. Performance Explorer displays a<br />

vertical color transition from the first to the second color as the<br />

background image. Click the buttons to the right of the drop-down lists<br />

to select custom colors.<br />

8 From the Text and grid color drop-down list, select the color that you<br />

want to use for the axis information and the grid in your charts. Click the<br />

Browse (...) button to the right of the drop-down lists to select a custom<br />

color.<br />

9 Click OK.<br />

Procedure To set default options for the time series data writer:<br />

1 From the Performance Explorer menu bar, select Settings/Options.<br />

The Performance Explorer Options dialog opens at the Chart tab.<br />

2 Click the TSD-Writer tab.<br />

3 Use the TSD-Writer area to set options for the facility that creates time<br />

series date (.tsd) files from monitoring data.<br />

4 In the Interval fields in the TSD-Writer area, select a time interval value<br />

and a time unit for which time series data will be written.<br />

5 Click OK.<br />

Procedure To set default options for reporting:<br />

1 From the Performance Explorer menu bar, select Settings/Options.<br />

The Performance Explorer Options dialog opens at the Chart tab.<br />

2 Click the Reporting tab.<br />

3 Select the Generate overview reports automatically option for<br />

Performance Explorer to automatically display a summary overview<br />

report when you start exploring the results of a load test. An overview<br />

228 SilkPerformer User Guide


10 EXPLORING TEST RESULTS<br />

Reports<br />

report contains the most important results of a load test, for example, the<br />

number of virtual users that were active, the number of transactions that<br />

were executed, and the number of errors that occurred.<br />

4 Select the Show NULL values in charts option if you want null values to<br />

be displayed in the charts. If you disable this option, Performance<br />

Explorer replaces each null value with a direct line from the preceding to<br />

the following value.<br />

5 Select Use template when creating a new overview report if you want to<br />

use a previously stored template for the creation of overview reports.<br />

Select an appropriate template with the browse button.<br />

6 Click OK.<br />

Reports<br />

Virtual User Report<br />

files<br />

Virtual User Output<br />

files<br />

Overview Report<br />

Report files contain the simulation results for each virtual user. Details of the<br />

measurements for each individual user are presented in tabular form. The many<br />

sections in these files include reports on transactions, timers, Web page timers,<br />

and counters, and also sections on IIOP, Web form, TUXEDO, and SQL results.<br />

Output files contain the output of write statements used in the test script. An<br />

output file is generated for a particular user only if write statements are executed<br />

by that user.<br />

However, generating output files alters the time measurements of a load test.<br />

Therefore, these files should be used for debugging purposes only, and should<br />

never be generated for a full load test.<br />

After a load test has completed, Performance Explorer provides an overview<br />

report for the load test. This report includes the most important test results in<br />

tabular and graphical form. It comprises the following sections:<br />

• General information<br />

• Summary tables<br />

• User types<br />

• Custom charts<br />

• Custom tables<br />

• Detailed charts<br />

General information<br />

The general information section includes administrative information in tabular<br />

form as well as important load test results in a graphical form.<br />

Administrative information includes the project name, a description of the<br />

project, the load test number, a description of the load test, the date of the load<br />

SilkPerformer User Guide 229


10 EXPLORING TEST RESULTS<br />

Measurements<br />

test, the duration of the load test, the number of used agent computers, and the<br />

number of virtual users that were running.<br />

The charts display the number of active virtual users, response time<br />

measurements for transactions, and the number of errors that occur over time.<br />

Transaction response times are provided for successfully executed transactions,<br />

for failed transactions, and for cancelled transactions.<br />

Additional charts display summary measurements related to the type of load<br />

testing project. For example, in the case of Web application testing, response<br />

time measurements for Web pages are presented in a graph.<br />

Summary tables<br />

This section contains summary measurements in tabular form, that is, aggregate<br />

measurements for all virtual users. The first table provides general information,<br />

such as the number of transactions that were executed and the number of errors<br />

that occurred. All the following tables provide summary information relevant to<br />

the type of application that was tested.<br />

User types<br />

For each user group, this section provides detailed measurements in tabular<br />

form. The measurements include transaction response times, individual timers,<br />

counters, and response time and throughput measurements related to the type of<br />

application that was tested (Web, database, CORBA, COM, or TUXEDO). In<br />

addition, errors and warnings for all user groups are listed.<br />

Custom charts<br />

This section contains graphs that you have added manually. You can add charts<br />

to and remove charts from this section at any time. You can save your changes<br />

as a template to be displayed for every summary report.<br />

Custom tables<br />

This section contains tables that you have added manually. You can add tables<br />

to and remove tables from this section at any time. You can save your changes<br />

as a template to be displayed for every summary report.<br />

Detailed charts<br />

This section provides enlarged versions of the charts included in the report.<br />

Click a reduced version of a chart to jump to the enlarged version, and vice<br />

versa.<br />

Measurements<br />

A measure (also named a “measure type”) is a generic term for a measurement<br />

of performance taken during a load test. Measures can be either timers or<br />

counters. Timers collect data related to response times, and counters collect data<br />

on throughput and load test events.<br />

SilkPerformer provides the following types of measurements:<br />

230 SilkPerformer User Guide


10 EXPLORING TEST RESULTS<br />

Measurements<br />

Summary<br />

measurements<br />

• “Summary measurements”<br />

• “Individual measurements”<br />

• “Web page measurements”<br />

• “Web form measurements”<br />

• “WAP-specific measurements”<br />

• “CORBA-specific measurements”<br />

• “Database-specific measurements”<br />

• “Middleware-specific measurements”<br />

• “Citrix-specific measurements function”<br />

• “Custom measurements”<br />

The Summary measurement group contains summarized measurements on a<br />

global level. It contains measurement types that aggregate individual<br />

measurements from other measurement groups as well as measurement types<br />

that represent information on a global level that is not included in other<br />

measurement groups. The summary measurement group contains only counters;<br />

it does not contain timers. It represents a fixed set of global measurements that<br />

are collected only during the measurement period, thus excluding the warm-up<br />

and shutdown period of the load test. The Summary group contains the<br />

following measurement types, which are available as real-time data and time<br />

series data (tsd):<br />

General measurement types<br />

Measurement<br />

Description<br />

Active users The number of active virtual users. A virtual user is<br />

regarded as active if it has been started and is<br />

currently in one of the following states: executing,<br />

warm up, wait database, loading documents, wait<br />

resource, rendezvous, thinktime, and shutdown.<br />

Transactions The number of SilkPerformer transactions that<br />

have completed.<br />

Errors<br />

The number of API errors, including Internet,<br />

WAP, database, and middle ware APIs. An API<br />

error is counted if the severity is "error" or higher<br />

("transaction exit" or "process exit"). An error is<br />

ignored if the severity is "informational" or<br />

"warning."<br />

Table 9: General measurement types<br />

SilkPerformer User Guide 231


10 EXPLORING TEST RESULTS<br />

Measurements<br />

Agent health control measurements<br />

Measurement<br />

Internet-related measurement types<br />

Description<br />

CPU utilization The percentage of time that a processor is busy<br />

executing tasks. If the processor utilization is<br />

equal to or near 100%, the computer has run<br />

out of available processing capacity.<br />

Memory<br />

The percentage amount of memory allocated<br />

by the driver machine in relation to the<br />

available amount of RAM. High memory<br />

utilization indicates that the driver machine is<br />

low on available memory, and this can cause<br />

disk swapping, which degrades the overall<br />

performance of the computer.<br />

Responsiveness The ratio of the defined execution time for a<br />

task to its measured execution time, expressed<br />

as a percentage. It indicates how quickly the<br />

computer becomes available for a specific task.<br />

In the case of a lightly loaded driver machine,<br />

the ratio will be equal to or very close to 100%.<br />

Table 10: Agent health control measurements<br />

Measurement<br />

Description<br />

Concurrent connections The number of currently open TCP/IP<br />

connections.<br />

Requests sent<br />

The number of HTTP requests sent by<br />

browser-level or WAP functions, the<br />

number of data packets sent by TCP/IPlevel<br />

functions, or the number of<br />

commands sent by POP3, SMTP, FTP, or<br />

LDAP function calls. SilkPerformer also<br />

includes LDAP traffic in this measurement;<br />

it reports the number of LDAP requests<br />

sent. Note that IIOP uses other counters.<br />

Requests failed<br />

The number of the requests listed above<br />

that are not sent or executed successfully.<br />

Note that IIOP uses other counters.<br />

Table 11: Internet-related measurement types<br />

232 SilkPerformer User Guide


10 EXPLORING TEST RESULTS<br />

Measurements<br />

Measurement<br />

Description<br />

Request data sent[KB] The amount of data (in KB) sent to the<br />

server, including header and body content<br />

information as well as all TCP/IP-related<br />

traffic (HTTP, native TCP/IP, IIOP, POP3,<br />

SMTP, FTP, LDAP), secure traffic over<br />

SSL/TLS, and WAP. It does not include<br />

data overhead caused by encryption using<br />

SSL/TLS or other API-related traffic like<br />

TUXEDO ATMI, ODBC, and Oracle OCI.<br />

Responses received The number of HTTP responses received<br />

by browser-level and WAP functions, the<br />

number of data packets received by TCP/<br />

IP-level functions, and the number of<br />

responses received by POP3, SMTP, FTP,<br />

and LDAP functions. Note that IIOP uses<br />

other counters.<br />

Responses failed<br />

The number of the expected responses that<br />

are not received successfully. Note that<br />

IIOP uses other counters.<br />

Response data received[KB] The amount of data (in KB) received from<br />

the server, including header and body<br />

content information as well as TCP/IPrelated<br />

traffic (HTTP, native TCP/IP, IIOP,<br />

POP3, SMTP, FTP, and LDAP), secure<br />

traffic over SSL/TLS, and WAP. It does<br />

not include API-related traffic like<br />

TUXEDO ATMI, ODBC, and Oracle OCI.<br />

Connects successful The number of successful TCP/IP connects<br />

to the remote hosts established by browserlevel,<br />

TCP/IP-level, IIOP, SMTP, POP3,<br />

FTP, or LDAP functions; this include also<br />

the number of successful connects by WAP<br />

functions.<br />

Table 11: Internet-related measurement types<br />

SilkPerformer User Guide 233


10 EXPLORING TEST RESULTS<br />

Measurements<br />

Measurement<br />

Connects failed<br />

The number of TCP/IP connection failures<br />

caused by invalid host names, invalid IP<br />

addresses, invalid ports, unavailable remote<br />

hosts, network-related problems, or<br />

authentication failures. This counter is used<br />

by browser-level, TCP/IP-level, IIOP,<br />

SMTP, POP3, FTP, and LDAP functions.<br />

Note that by default browser-level<br />

functions perform up to three connect<br />

attempts (up to two retries).<br />

Note: By default browser-level functions<br />

perform up to three connection attempts<br />

(up to two retries). Only if all attempts fail,<br />

a failure is recorded.<br />

This measurement includes also the<br />

number of connections that could not be<br />

established by WAP functions.<br />

Connects retries<br />

The number of attempts to connect to the<br />

server if the initial connection fails.<br />

Table 11: Internet-related measurement types<br />

Web-specific measurements<br />

Measurement<br />

Description<br />

Description<br />

HTTP request retries The number of times a client is forced to retry a<br />

request. This may happen when the server<br />

closes a persistent connection (available with<br />

Keep-Alive or HTTP/1.1) because of a timeout<br />

occurring while the client tries to send a<br />

request. This counter is used only by browserlevel<br />

functions.<br />

HTTP redirections The number of HTTP redirections performed<br />

due to a Web server response with status code<br />

3xx. This measurement is incremented only by<br />

Web and WAP functions.<br />

Table 12: Web-specific measurements<br />

234 SilkPerformer User Guide


10 EXPLORING TEST RESULTS<br />

Measurements<br />

Measurement<br />

HTTP re-authentications<br />

HTTP hits<br />

Hits failed<br />

HTTP 1xx responses<br />

HTTP 2xx responses<br />

HTTP 3xx responses<br />

HTTP 4xx responses<br />

HTTP 5xx responses<br />

HTTP cache conditional<br />

reloads<br />

HTTP cache hits<br />

Description<br />

Table 12: Web-specific measurements<br />

The number of re-authentications necessary<br />

because of a status code 401 or 407 returned by<br />

the Web server. This counter is used only by<br />

Web and WAP functions that perform basic<br />

authentication.<br />

The number of HTTP requests that arrive at the<br />

Web server. This measurement is incremented<br />

only by Web and WAP functions.<br />

The number of failed HTTP requests. This<br />

measurement is incremented only by Web and<br />

WAP functions.<br />

The number of HTTP responses containing<br />

status codes indicating that their content has the<br />

status "informational". This measurement is<br />

incremented by Web and WAP functions.<br />

The number of HTTP responses containing<br />

status codes indicating successful requests.<br />

This measurement is incremented by Web and<br />

WAP functions.<br />

The number of HTTP responses containing<br />

status codes indicating redirected requests. This<br />

measurement is incremented by Web and WAP<br />

functions.<br />

The number of HTTP responses containing<br />

status codes indicating client errors. This<br />

measurement is incremented by Web and WAP<br />

functions.<br />

The number of HTTP responses containing<br />

status codes indicating server errors. This<br />

measurement is incremented by Web and WAP<br />

functions.<br />

The number of requests sent to the server to<br />

download an item if its content has changed<br />

since it was last placed in the cache.<br />

The number of times requests are fulfilled from<br />

the cache.<br />

SilkPerformer User Guide 235


10 EXPLORING TEST RESULTS<br />

Measurements<br />

Measurement<br />

HTTP cookies sent The number of cookies sent by browser-level<br />

functions. Note that the header line of an HTTP<br />

cookie request may contain multiple cookies;<br />

each cookie in the header is counted.<br />

HTTP cookies received The number of cookies received by browserlevel<br />

functions. Note that an HTTP response<br />

may include multiple cookie header lines; each<br />

cookie of these header lines is counted.<br />

HTTP pages<br />

The number of HTML pages requested by the<br />

page-level API or by the browser-level API<br />

when Java script simulation is enabled.<br />

Table 12: Web-specific measurements<br />

IIOP-related measurement types<br />

Measurement<br />

Description<br />

Description<br />

IIOP messages<br />

The number of IIOP messages sent by<br />

SilkPerformer.<br />

IIOP requests<br />

The number of IIOP request messages sent by<br />

SilkPerformer.<br />

IIOP loc requests The number of IIOP locate request messages<br />

sent by SilkPerformer.<br />

IIOP fragments sent The number of fragmented IIOP messages<br />

sent by SilkPerformer.<br />

IIOP replies OK<br />

The number of IIOP reply messages with<br />

status OK received by SilkPerformer.<br />

IIOP replies exception The number of IIOP reply messages with the<br />

status "exception raised" received by<br />

SilkPerformer. This count includes system<br />

exceptions as well as user exceptions.<br />

IIOP replies obj moved The number of IIOP reply messages with the<br />

status "object has moved." This status<br />

message causes SilkPerformer to reissue the<br />

request to the new location.<br />

Table 13: IIOP-related measurement types<br />

236 SilkPerformer User Guide


10 EXPLORING TEST RESULTS<br />

Measurements<br />

Measurement<br />

IIOP request timed out<br />

IIOP loc replies obj here<br />

IIOP loc replies obj<br />

unknown<br />

IIOP loc replies obj moved<br />

IIOP message errors<br />

Database-specific measurements<br />

The number of times the time limit for<br />

receiving data (specified in the load testing<br />

script) was exceeded while waiting for a<br />

pending reply. Whenever the time limit is<br />

exceeded, no reply is received and<br />

SilkPerformer sends an IIOP "Cancel<br />

Request" message to inform the server about<br />

the aborted operation.<br />

The number of IIOP "Locate Reply" messages<br />

with status "object here" received by<br />

SilkPerformer.<br />

The number of IIOP "Locate Reply" messages<br />

with status "object unknown" received by<br />

SilkPerformer.<br />

The number of IIOP "Locate Reply" messages<br />

with status "object moved" received by<br />

SilkPerformer.<br />

The number of IIOP error messages received<br />

by SilkPerformer.<br />

IIOP fragments received The number of fragmented IIOP messages<br />

received by SilkPerformer.<br />

IIOP loc request timed out The number of times that the time limit for<br />

receiving data (specified in the load testing<br />

script) was exceeded while waiting for a<br />

pending locate reply. Whenever the time limit<br />

is exceeded, no locate reply is received and<br />

SilkPerformer sends an IIOP "Cancel<br />

Request" message to inform the server about<br />

the aborted operation.<br />

Table 13: IIOP-related measurement types<br />

Measurement<br />

Description<br />

Description<br />

SQL commands The number of SQL commands sent to the<br />

DBMS for execution.<br />

Table 14: Database-specific measurements<br />

SilkPerformer User Guide 237


10 EXPLORING TEST RESULTS<br />

Measurements<br />

Measurement<br />

Open database logins<br />

Open database cursors<br />

Description<br />

Table 14: Database-specific measurements<br />

Counts the currently open database sessions.<br />

This is relevant for the OCI, ODBC, and<br />

ODBC high level interfaces (This measurement<br />

is not available in report files).<br />

Counts the currently opened database cursors<br />

(handles). This is relevant for the OCI, ODBC,<br />

and ODBC high level interfaces. For ODBC,<br />

only OdbcClose calls with the SQL_DROP<br />

option will decrease this measure value. (This<br />

measurement is not available in report files).<br />

Individual<br />

measurements<br />

Transactions<br />

measurement group<br />

The SilkPerformer controller computer collects a subset of the summary<br />

measurements at regular time intervals for all of the virtual users and agents<br />

participating in a load test. It generates a time series data file (.tsd). After a load<br />

test is complete, the data from the controller computer can be analyzed using<br />

Performance Explorer.<br />

The transactions measurement group contains response time data on the<br />

transaction level. For each transaction defined in your load test script, a<br />

measurement of this group type is automatically created, using the name of the<br />

transaction as the key for the measurements. The measurement group contains<br />

the following measurement types:<br />

Measurement<br />

Description<br />

Trans. ok[s]<br />

The response time for successful transactions,<br />

in seconds. A transaction time is reported in<br />

this measure type if no API function call<br />

performed within the transaction returns an<br />

error message.<br />

Trans.(busy) ok[s] The busy time for successful transactions, in<br />

seconds. A transaction busy time is the<br />

transaction response time without any think<br />

time. A transaction time is reported in this<br />

measure type if no API function call performed<br />

within the transaction returns an error message.<br />

Trans. failed[s] The response time for failed transactions. A<br />

transaction time is reported in this measure type<br />

if at least one error of severity "error" or higher<br />

occurs within the transaction.<br />

Table 15: Transaction measurement types<br />

238 SilkPerformer User Guide


10 EXPLORING TEST RESULTS<br />

Measurements<br />

Measurement<br />

Description<br />

Trans.(busy) failed[s] The busy time for failed transactions. A<br />

transaction busy time is the transaction<br />

response time without any think time. A<br />

transaction time is reported in this measure type<br />

if at least one error of severity “error” or higher<br />

occurs within the transaction.<br />

Trans. canceled[s] The response time for canceled transactions. A<br />

transaction time is reported in this measure type<br />

if a return statement in the script is issued with<br />

a return value of 1.<br />

Table 15: Transaction measurement types<br />

Web page<br />

measurements<br />

The Web page measurement group contains the measurement types related to<br />

Web pages. For each Web page that is downloaded during a load test, a<br />

measurement group will be created automatically with the name of the Web<br />

page as the key. This measurement group contains the following types of<br />

measurements.<br />

Measurement<br />

Page time[s]<br />

Document download<br />

time[s]<br />

Server busy time[s]<br />

Page data[kB]<br />

Embedded objects<br />

data[kB]<br />

Description<br />

Table 16: Web page measurement types<br />

The time it takes to retrieve an entire Web page<br />

from the server, that is, for retrieving all HTML<br />

documents and all embedded documents, such<br />

as images, videos, and audio files.<br />

The time it takes to retrieve all HTML<br />

documents of a Web page.<br />

The time the server takes to process a Web page<br />

request. This measurement starts after a virtual<br />

user has sent the last byte of the request and<br />

ends when the user retrieves the first byte of the<br />

response.<br />

The sum of data for all requests and responses<br />

related to the request and retrieval of an entire<br />

Web page including all embedded objects.<br />

The sum of data for all requests and responses<br />

related to the request and retrieval of objects<br />

embedded on a Web page.<br />

Web form<br />

measurements<br />

The Web form measurement group contains the measure types related to forms<br />

declared in the dclform section of a load test script. The Web form measurement<br />

SilkPerformer User Guide 239


10 EXPLORING TEST RESULTS<br />

Measurements<br />

group provides response time and throughput rates for form submissions with<br />

the POST, GET, and HEAD command sent by scripting function calls. For each<br />

form declared in the dclform section, a measurement group will be created<br />

automatically with the name of the form as the key. The Web form<br />

measurement group contains the following measurement types:<br />

Measurement<br />

Server busy time[s]<br />

Round trip time[s]<br />

Hits<br />

Request data sent[KB]<br />

Response data<br />

received[KB]<br />

Description<br />

Table 17: Web form measurement types<br />

Measurement starts after the user has sent the<br />

complete request, and ends when the user<br />

receives the first part of the response.<br />

The time it takes to send a request and receive<br />

the appropriate response. It also includes the<br />

connect and shutdown time when the<br />

connection is not persistent (the connection may<br />

persist if the Keep-Alive option is enabled or<br />

HTTP/1.1 is used).<br />

The number of successful form submissions.<br />

The amount of data (in KB) sent to the Web<br />

server during submission of a form. This also<br />

includes HTTP header and body content<br />

information. The count specifies the number of<br />

Web server requests sent.<br />

The amount of data (in KB) received from the<br />

Web server in response to the submission of a<br />

form. This also includes HTTP response header<br />

and body content information. The count<br />

specifies the number of Web server responses<br />

received.<br />

WAP-specific<br />

measurements<br />

The WAP measurement group contains the measure types related to WAP<br />

requests and WAP pushes. It contains the following measurement types:<br />

Measurement<br />

Description<br />

WAP request<br />

Measures the time from sending a URL request<br />

to receiving the reply.<br />

WAP send retries Counts the number of protocol-specific retries<br />

to send a WAP package; when a request packet<br />

is sent successfully, the virtual user will receive<br />

a reply package from the gateway.<br />

Table 18: WAP-specific measurement types<br />

240 SilkPerformer User Guide


10 EXPLORING TEST RESULTS<br />

Measurements<br />

Measurement<br />

Description<br />

WAP pushes CL Counts the number of incoming connectionless<br />

pushes.<br />

WAP pushes CO Counts the number of incoming connectionoriented<br />

pushes.<br />

WAP pushes<br />

Counts the number of incoming pushes<br />

(connection-less and connection-oriented).<br />

Table 18: WAP-specific measurement types<br />

CORBA-specific<br />

measurements<br />

The IIOP measurement group contains the measurement types related to IIOP<br />

operations that are called within a load testing script. It provides response time<br />

and throughput ratings for the IIOP operation calls issued by the API function<br />

IiopRequest. With the IiopObjectSetMeasure and the IiopObjectBind function<br />

you can specify a prefix to the name of the measurement groups associated with<br />

the operations of a certain CORBA object. If you decide not to do so, the name<br />

of the operation is used as the name of the corresponding measurement group.<br />

The IIOP group contains the following measurement types:<br />

Measurement<br />

Description<br />

Round trip time[s] The time measured from when the processing<br />

of the IiopRequest function call begins to when<br />

the processing of the reply of the CORBA<br />

object ends.<br />

Server busy time[s] Measurement starts after a user has sent the last<br />

byte of the CORBA operation call, and ends<br />

when the user retrieves the first byte of the<br />

response of the operation call from the CORBA<br />

object.<br />

Table 19: CORBA-specific measurement types<br />

For non-blocking IIOP requests, these measurements are performed in the same<br />

way. Note that this can lead to a situation where the sum of all your measured<br />

times exceeds the total time of your load test.<br />

If a CORBA object decides to redirect a request, the IiopRequest function has to<br />

reissue this request to a different location. The result is two request/reply<br />

message pairs, where both are measured separately. As in the case of the<br />

measurement times for the IiopRequest function, the sum of both (separately<br />

measured) request/reply pairs is supplied.<br />

SilkPerformer User Guide 241


10 EXPLORING TEST RESULTS<br />

Measurements<br />

Database-specific<br />

measurements<br />

Middleware-specific<br />

measurements<br />

The SQL measurement group contains the following measurement types:<br />

Measurement<br />

Description<br />

Parse[s]<br />

The time it takes to prepare (Oracle<br />

terminology: parse) a SQL command. Preparing<br />

a SQL command usually includes a server round<br />

trip during which the SQL command is sent to<br />

the server. There the SQL command is parsed<br />

and transformed into an internal format that can<br />

be reused on subsequent calls of that SQL<br />

command.<br />

Note: If you use the OraParse function with the<br />

ORA_DEFERRED option, the parsing of the<br />

SQL command is deferred to the execute step,<br />

and therefore the server round-trip time is<br />

produced for the parse step. In this case, this<br />

measurement type is meaningless.<br />

Exec[s]<br />

The time in which a SQL command is executed.<br />

Executing a SQL command includes at least one<br />

server round trip for sending the command and<br />

returning the result to enable the SQL command<br />

to be executed. Because of the considerable<br />

amount of data processing required on the server<br />

for a SQL command, executing SQL commands<br />

usually generates a major part of the load on the<br />

database server. There is a separate<br />

measurement type in the SQL measurement<br />

group for fetching data. Fetching data can either<br />

be included as part of the execute step or in a<br />

separate step. In the latter case, results are not<br />

included in the SQL measurement group.<br />

ExecDirect[s]<br />

The time in which a SQL command is prepared<br />

and executed.<br />

Table 20: Database-specific measurement types<br />

The TUXEDO measurement group contains the measurement types related to<br />

TUXEDO service calls performed in a load testing script. It provides response<br />

time and throughput ratings for the TUXEDO service calls issued by the Tux_<br />

tpcall, Tux_tpacall, Tux_tpsend, Tux_tprecv, Tux_tpgetrply, Tux_tpenqueue,<br />

and Tux_tpdequeue functions. For each TUXEDO service used in these<br />

TUXEDO functions, a measurement group is created automatically with the<br />

242 SilkPerformer User Guide


10 EXPLORING TEST RESULTS<br />

Measurements<br />

name of the service as the key. The TUXEDO group contains the following<br />

measurement types:<br />

Measurement<br />

Response time[s]<br />

Request data sent[KB]<br />

Response data<br />

received[KB]<br />

Description<br />

The response time for a TUXEDO service call.<br />

For synchronous service calls, the response<br />

time includes the time the server needs to<br />

process the call. For asynchronous service<br />

calls, SilkPerformer reports the time that<br />

elapses between sending the request and<br />

receiving the reply, plus the time spent waiting<br />

for the request. Asynchronous service calls do<br />

not measure the time a server needs to execute<br />

the service. For send/request calls,<br />

SilkPerformer measures the time for sending<br />

data across an open connection as well as the<br />

time for receiving data from an open<br />

connection. For queuing communication, both<br />

the time required for sending the service call to<br />

the queue and the time for retrieving the results<br />

of a service call are measured.<br />

The amount of data (in KB) sent to the<br />

TUXEDO server for submission of a given<br />

service. SilkPerformer measures the<br />

application data buffer size used by the service<br />

calls rather than the transferred bytes on the<br />

network.<br />

The amount of data (in KB) received from the<br />

TUXEDO server by a given service.<br />

SilkPerformer measures the application data<br />

buffer size used by the service calls rather than<br />

the transferred bytes on the network.<br />

Table 21: Middleware-specific measurement types<br />

Citrix-specific<br />

measurements<br />

function<br />

There is currently only one Citrix-specific measurement available. The Citrix<br />

synchronization points measurement states how many synchronization<br />

functions already have been executed. The main purpose of this measurement is<br />

to visualize the progress of a transaction.<br />

Measurement<br />

Citrix Synchronization<br />

points<br />

Description<br />

Table 22: Citrix-specific measurement types<br />

The number of executed Citrix synchronization<br />

functions (CitrixWaitForXXX).<br />

SilkPerformer User Guide 243


10 EXPLORING TEST RESULTS<br />

Measurements<br />

Custom<br />

measurements<br />

Custom timer measurement group<br />

The Custom Timer measurement group contains the timers that are defined in<br />

the load testing script with the MeasureStart and the MeasureStop functions:<br />

Measurement<br />

Description<br />

Response time[s] The time measured between MeasureStart and<br />

MeasureStop function calls.<br />

Table 23: Custom timer measurement types<br />

Note: You can pause and resume timers with the MeasurePause and the<br />

MeasureResume function.<br />

Custom counter measurement group<br />

The Custom Counter measurement group contains the counters that are defined<br />

in the load testing script with the MeasureInc function:<br />

Measurement<br />

Description<br />

Custom counter Counts values that are set with the MeasureInc<br />

function.<br />

Table 24: Custom counter measurement types<br />

244 SilkPerformer User Guide


11<br />

Additional 1Chapter<br />

Workbench<br />

Features<br />

Introduction<br />

What you will learn<br />

This chapter explains some unique SilkPerformer Workbench features.<br />

This chapter contains the following sections:<br />

Section<br />

Page<br />

Overview 245<br />

Teamwork Features 246<br />

Code Completion 249<br />

Parameter Wizard 252<br />

Java Integration 256<br />

Converting CSV Data for Use With Silk Performance Explorer 259<br />

Overview<br />

This section details the following Workbench features:<br />

• “Teamwork Features”<br />

• “Code Completion”<br />

• “Parameter Wizard”<br />

• “Java Integration”<br />

• “Converting CSV Data for Use With Silk Performance Explorer”<br />

SilkPerformer User Guide 245


11 ADDITIONAL WORKBENCH FEATURES<br />

Teamwork Features<br />

Teamwork Features<br />

Importing/exporting<br />

projects<br />

Exporting projects<br />

Importing projects<br />

SilkPerformer Workbench enables you to export, import, email and upload<br />

SilkPerformer projects.<br />

SilkPerformer offers the option of exporting entire test projects to a separate<br />

directory or an archive file. Such exported project files can subsequently be<br />

imported into SilkPerformer.<br />

Procedure To export a project:<br />

1 From the SilkPerformer menu bar, select File/Export Project.<br />

The Export Project dialog appears.<br />

2 In the Export location area, specify the location to which you want to<br />

export your current load testing project. If you want to export all the<br />

project files to a directory, specify the directory name. If you want to<br />

export all the files to a ZIP archive, specify the archive name.<br />

Click the Browse (...) button to the right of the field to locate the<br />

directory or file to which you want to export your load testing project.<br />

3 Select the ZIP to single archive file option to export all files belonging to<br />

your current load testing project to a ZIP archive. This is useful when<br />

you want to backup your project or when you want to send a copy of<br />

your project to someone.<br />

4 In the Options area, select the Include results files of all tests option to<br />

export the results of all tests belonging to this project (i.e., the results of<br />

all try-script tests, find-baseline tests, and actual load tests). If you<br />

disable this option, only the results of the recent try-script test will be<br />

exported.<br />

5 Select the Protect ZIP file with password option to protect the export file<br />

(.ltz) with a password. This is useful when your project contains<br />

confidential data (e.g., user names and passwords for the application you<br />

are testing).<br />

If you select this option, enter a password and confirm it.<br />

6 Click OK.<br />

SilkPerformer then exports the project and displays the progress of<br />

packing all relevant files into a ZIP archive in a status bar.<br />

Procedure To import a project:<br />

1 From the SilkPerformer menu bar, select File/Import Project.<br />

A standard Open dialog appears, enabling you to select the archive file<br />

that you want to import.<br />

2 After selecting the archive file, click OK.<br />

246 SilkPerformer User Guide


11 ADDITIONAL WORKBENCH FEATURES<br />

Teamwork Features<br />

Uploading projects<br />

Emailing projects<br />

3 The Import Project dialog appears.<br />

4 In the Import target directory area, specify the location to which you<br />

want to extract your load testing project.<br />

If you configured password protection you will be prompted to enter<br />

your password. Enter your password and confirm it.<br />

5 Click OK.<br />

SilkPerformer then extracts the archive file to the specified target<br />

directory and opens the load testing project.<br />

Procedure To upload a project to SilkCentral Test Manager:<br />

1 From the SilkPerformer menu bar, select File/Upload Project.<br />

The Upload Project dialog appears.<br />

2 In the Upload project name area, enter the name of the file in which the<br />

load testing project should be uploaded.<br />

3 In the Upload URL field, enter the URL to which you want to upload the<br />

load testing project.<br />

4 In the Upload area, select the Use secure connection option to use a<br />

secure connection to upload your current load testing project. This is<br />

useful when your project contains confidential data (e.g., user names and<br />

passwords for the application under test.<br />

5 Select the Remember login information option to have SilkPerformer<br />

remember the user name and password that you enter when you upload a<br />

load testing project for the first time. This is useful when you plan to<br />

upload multiple projects.<br />

6 Click the Internet Options button to define the Internet-related settings<br />

for your computer and, most importantly, to determine how to connect<br />

your computer to the Internet. In the ensuing Internet Properties dialog,<br />

click the Connections tab and select the options that correspond to your<br />

environment.<br />

When you are done specifying Internet options, close the Internet<br />

Options dialog.<br />

7 In the Project Upload dialog, click OK.<br />

SilkPerformer then uploads the project to the SilkCentral installation<br />

URL specified in the Upload URL field, and displays the progress of<br />

packing all relevant files into a ZIP archive in a status bar.<br />

Procedure To email a project:<br />

1 From the SilkPerformer menu bar, select File/Email Project.<br />

The Email Project dialog appears.<br />

SilkPerformer User Guide 247


11 ADDITIONAL WORKBENCH FEATURES<br />

Teamwork Features<br />

Enabling file locking<br />

2 In the Email address area, enter the email address to which you want to<br />

send your current load testing project.<br />

3 In the Options area, select the Include results files of all tests option to<br />

send the results of all tests belonging to this project along with the email,<br />

that is, the results of all try-script tests, all find-baseline tests, and all<br />

actual load tests. If you disable this option, only the results of the recent<br />

try-script test will be sent.<br />

4 Select the Protect ZIP file with password option to protect the contents of<br />

the email with a password. This is useful when your project contains<br />

confidential data (e.g., user names and passwords for the application you<br />

are testing).<br />

If you select this option, enter a password and confirm it. Also, do not<br />

forget to tell the recipient of the email the password in a separate email or<br />

phone call.<br />

5 Select the Include a system diagnostic report option to send, along with<br />

the email, a system diagnostic report. This information will list the<br />

processors in the computer, the name and version of the operating<br />

system, and give information regarding the drives, memory, services,<br />

and drivers. In addition, relevant information from the Windows registry<br />

will be included.<br />

6 Click OK.<br />

SilkPerformer then emails the project and displays the progress of<br />

packing all relevant files into a ZIP archive in a status bar.<br />

SilkPerformer’s document file locking mechanism allows multiple users (on<br />

SilkPerformer Controller machines) to work simultaneously on the same<br />

document files (bdf script files, bdh include files, data files) without overwriting<br />

each other’s work. Documents that are locked (i.e., “checked out”) by another<br />

user can be viewed in read-only format, but cannot be edited.<br />

Procedure To the enable the document file locking mechanism:<br />

1 From the SilkPerformer menu bar, select Settings/System.<br />

2 The System Settings configuration dialog appears.<br />

3 Click the Workspace tab.<br />

4 In the Document file options area select the Enable document file locking<br />

option.<br />

5 Click OK.<br />

248 SilkPerformer User Guide


11 ADDITIONAL WORKBENCH FEATURES<br />

Code Completion<br />

Code Completion<br />

Code completion makes it easier to work with BDL. It significantly reduces<br />

scripting errors and decreases the need to type text into your BDL files by<br />

automatically completing functions, variables and constants. There are four<br />

Code Completion options:<br />

• Code List: Shows a list box with all currently matching function names.<br />

• Code completion: Completes the current function, variable, or constant<br />

name.<br />

• Parameter info: Shows a tool tip with types and additional information<br />

for function parameters.<br />

• Quick info: Shows information about functions in a tool tip.<br />

• Smart indention: Positions the cursor based on current logical context.<br />

Code Completion works with both SilkPerformer-defined and user-defined<br />

BDL files.<br />

To enable Code Completion you must name and save new BDL files as either<br />

.bdf or .bdh files. Once a BDL file has been saved, Code Completion recognizes<br />

changes you make to it using the BDL Editor and includes all files you reference<br />

via BDL use statements.<br />

Note At all times, with all features of Code Completion, you are<br />

only able to receive information regarding functions, variables and<br />

constants that are defined in your local .bdf files, or in the included<br />

.bdh files of those files.<br />

Code list<br />

One of the key features of Code Completion is its Code List mechanism, which<br />

is used to offer you a list of functions, variables, and constants. The Code List<br />

includes either:<br />

- The entire list of available functions, variables, and constants<br />

- Or, a list of functions, variables, and constants that match the<br />

characters of the word currently selected in the script<br />

The Code List can be manually invoked using Ctrl+Space. The Code List is<br />

invoked automatically when you type one of the following API prefixes:<br />

Attribute Com DB_ Dotnet Get Iiop<br />

Java Jolt Measure Odbc Ora Pdce<br />

Set Str Tux Wap Web Xml<br />

Table 25: API prefixes for code list<br />

SilkPerformer User Guide 249


11 ADDITIONAL WORKBENCH FEATURES<br />

Code Completion<br />

When the Code List is invoked, a list control with the following behavior<br />

displays:<br />

- If the cursor isn’t within a word or at the border of a word, the list<br />

control is scrolled to the top, and the first item receives focus, but it<br />

is not selected.<br />

- If the cursor is within a word or at the border of a word, the list<br />

control is scrolled to the first (selected) item that matches the word,<br />

and the item is selected.<br />

- By pressing the Tab, Space, or Enter key, the currently selected<br />

string is inserted into the view. If a string is not selected, the string<br />

with the focus is selected.<br />

- Double-clicking an item in the list inserts the name into the view.<br />

Code completion<br />

Parameter info<br />

Quick info<br />

If a word that should be used with the Code List feature is unique, the Code List<br />

won’t open when you invoke it via Ctrl+Space, however the full word will be<br />

inserted.<br />

Uniqueness in this context means that only one word in the list control matches<br />

the partial word in question.<br />

Parameter info is displayed when you place an opening bracket after a function<br />

name in a script. Parameter info can also be invoked manually by pressing<br />

Ctrl+I when the cursor is placed between the opening and closing brackets of a<br />

function call. Parameter info is displayed as a tool tip that remains visible until<br />

(1) the Esc key is hit, (2) a closing bracket is inserted, (3) the arrow keys are<br />

used to move outside the brackets, or (4) input focus is set to another control.<br />

Parameter info includes the following for functions:<br />

- Function name<br />

- Function parameters with names, types and modifiers (e.g., in, out,<br />

and allownull)<br />

- The current parameter is displayed with bold letters and, if available,<br />

an additional description<br />

- Return value type and, if available, a description<br />

Quick info is similar to parameter info with the difference that it shows<br />

information not only for functions, but also for variables and constants.<br />

Quick info is presented in a form similar to a tool tip when you hold your cursor<br />

over a function, variable or constant name. Quick info tool tips disappear when<br />

you move your cursor away.<br />

For functions, available information is the same as with parameter info, with the<br />

exception that all parameters are shown with their descriptions rather than only<br />

the current parameter.<br />

250 SilkPerformer User Guide


11 ADDITIONAL WORKBENCH FEATURES<br />

Code Completion<br />

Smart indention<br />

Enabling Code<br />

Completion<br />

User-defined<br />

functions, variables,<br />

and constants<br />

For variables and constants, only name, data type and optional descriptions are<br />

displayed.<br />

Smart indention is enabled when the Enter key is pressed within a BDL related<br />

view and a new line is to be inserted. Upon invocation, it places the cursor at a<br />

position that is calculated with respect to the current context (e.g., indenting<br />

after inserting an initial keyword).<br />

Procedure To enable Code Completion:<br />

1 From the SilkPerformer menu bar, select Settings/System.<br />

The System Settings configuration dialog appears.<br />

2 Click the Layout tab.<br />

3 In the Editor area, select the Enable Code Completion option.<br />

4 Click OK.<br />

To receive Code Completion features for user-defined functions, variables, and<br />

constants, you must create a new file with the same name—in the same<br />

directory as your .bdf or .bdh file that defines the function, variable or constant<br />

you want to enhance—though with the extension .bdd.<br />

A .bdd file has the following structure:<br />

<br />

<br />

FuncDesc<br />

<br />

<br />

ParamName<br />

ParamDesc<br />

<br />

<br />

<br />

RetValTyp<br />

RetValDesc<br />

<br />

<br />

<br />

GlobalDesc<br />

<br />

<br />

SilkPerformer User Guide 251


11 ADDITIONAL WORKBENCH FEATURES<br />

Parameter Wizard<br />

This means that for each function you want to instrument with Code Completion<br />

information, you must insert a function node. For all others (variables and<br />

constants) you must insert a global node.<br />

FuncID<br />

Name of the function in your .bdf or<br />

.bdh file, for which Code<br />

Completion information should be<br />

provided.<br />

FuncDesc<br />

Textual description of the function.<br />

ParamName<br />

Parameter name<br />

ParamDesc<br />

Textual description of the<br />

parameter.<br />

RetValTyp<br />

Data type of the return value.<br />

RetValDesc<br />

Textual description of the return<br />

value.<br />

GlobalId<br />

Name of the global variable or<br />

constant.<br />

GlobalDesc<br />

Textual description of the variable<br />

or constant.<br />

Table 26: Code completion nodes<br />

Parameter Wizard<br />

The Parameter Wizard enables realistic functionality to be created for virtual<br />

users during load tests by replacing recorded or scripted values with constant<br />

values, random values or values pulled from multi-column data files. Each of<br />

these value types can be generated using the wizard. This means that you can<br />

furnish virtual users with varied personal data for all the information commonly<br />

required by Web forms (name, address, zip code, credit card number, etc.).<br />

The Parameter Wizard guides you through the process of creating variables and<br />

then places the variables in test scripts. A wide range of variable types are<br />

provided. Each variable type can generate different value types (strings<br />

containing text and/or numbers, serial numbers, whole numbers, and floatingpoint<br />

numbers).<br />

Values can be randomized using different distribution patterns. Comprehensive<br />

sets of preset data (names, addresses, passwords, etc.) are also provided.<br />

252 SilkPerformer User Guide


11 ADDITIONAL WORKBENCH FEATURES<br />

Parameter Wizard<br />

Constant values<br />

Random variables<br />

Procedure To insert a constant value into your script:<br />

1 Click the Customize Test button in the SilkPerformer Workflow Bar.<br />

The Workflow - Customize Test dialog appears.<br />

2 Click the Create New Parameter Wizard button or link.<br />

The Parameter Wizard launches.<br />

OPTION 1: You can also access the wizard by selecting Script/Create<br />

New Parameter in the SilkPerformer menu bar.<br />

OPTION 2: The Parameter Wizard can also be accessed by moving your<br />

cursor to a customizable value (e.g., a string), right-clicking, and<br />

selecting Customize Value from the context menu<br />

3 Select Constant value and click Next.<br />

4 In the Name field, type a name for the new constant value or accept the<br />

default name.<br />

5 In the Value field, type the value of the new constant value.<br />

6 Click Finish.<br />

The new constant is added to the parameter section in you script.<br />

If you opened the wizard via the context menu in your script, the value<br />

you selected is automatically replaced with the newly created variable.<br />

7 Launch the wizard as often as is required to create more constant values.<br />

If you launched the wizard via another method, replace the constant<br />

values in your script with the variables you created using<br />

SilkPerformer’s BDL scripting language.<br />

For help using Benchmark Description Language, refer to the BDL<br />

Function Reference.<br />

Procedure To insert a random value into a script:<br />

1 Click the Customize Test button on the SilkPerformer Workflow bar.<br />

The Workflow - Customize Test dialog appears.<br />

2 Click the Create New Parameter Wizard button or link.<br />

The Parameter Wizard appears.<br />

OPTION 1: You can also access the wizard by selecting Script/Create<br />

New Parameter from the SilkPerformer menu bar.<br />

OPTION 2: The Parameter Wizard can also be accessed by moving your<br />

cursor to a customizable value (e.g., a string), right-clicking, and<br />

selecting Customize Value from the context menu.<br />

3 Select Parameter from Random Variable and click Next.<br />

SilkPerformer User Guide 253


11 ADDITIONAL WORKBENCH FEATURES<br />

Parameter Wizard<br />

Multi-column data files<br />

4 In the wizard’s Choose the type of random variable window, choose a<br />

random variable type from the Random type drop-down list<br />

Use the type description and variable declaration preview provided for<br />

each random variable type to choose the required variable and specify its<br />

attributes.<br />

5 Click Next.<br />

The Name the variable and specify its attributes window appears<br />

6 In the Name field, type a name for the new variable or accept the default<br />

name<br />

7 Specify the attributes of the variable. These will vary depending on the<br />

type of variable selected. Use the Back button to review the type<br />

description of the variable if necessary.<br />

8 Click Finish.<br />

The new random variable is then added to the random variables section<br />

of your script.<br />

If you opened the wizard via the context menu in your script, the value<br />

you selected is automatically replaced with the newly created variable.<br />

9 Launch the wizard as often as is required to create more constant values.<br />

If you launched the wizard via another method, replace the constant<br />

values in your script with the variables you created using<br />

SilkPerformer’s BDL scripting language.<br />

For help using Benchmark Description Language, refer to the BDL<br />

Function Reference.<br />

Procedure To insert a parameter with values from a multi-column data file:<br />

1 Click the Customize Test button on the SilkPerformer Workflow bar.<br />

The Workflow - Customize Test dialog appears.<br />

2 Click the Create New Parameter Wizard button or link.<br />

The Parameter Wizard appears.<br />

OPTION 1: You can also access the wizard by selecting Script/Create<br />

New Parameter from the SilkPerformer menu bar.<br />

OPTION 2: The Parameter Wizard can also be accessed by moving your<br />

cursor to a customizable value (e.g., a string), right-clicking, and<br />

selecting Customize Value from the context menu.<br />

3 Select Parameter from multi-column data file and click Next.<br />

4 In the wizard’s Parameter from multi-column data file window, choose a<br />

multi-column data file from the File Name drop-down list. Then select<br />

an appropriate separator from the Separator drop-down list, or type a<br />

custom separator.<br />

In the Handle name field, type a name for the file handle of the multi-<br />

254 SilkPerformer User Guide


11 ADDITIONAL WORKBENCH FEATURES<br />

Parameter Wizard<br />

column data file variable or accept the default name.<br />

In the Parameter name field, type a name for the new parameter or<br />

accept the default name.<br />

5 Click Next.<br />

The Name the variable and specify its attributes window appears.<br />

6 In the Name field, type a name for the new variable or accept the default<br />

name.<br />

7 Specify the attributes of the variable. These will vary depending on the<br />

type of variable selected. If necessary, use the Back button to review the<br />

type description of the variable.<br />

8 Click Finish.<br />

The new parameter from a multi-column data file is then added to the<br />

parameter section of your script.<br />

The multi-column data file you selected is also added to the data files of<br />

your SilkPerformer project.<br />

If you opened the wizard via the context menu in your script, the value<br />

you selected is automatically replaced with the newly created variable.<br />

9 Launch the wizard as often as is required to create more constant values.<br />

If you launched the wizard via another method, replace the constant<br />

values in your script with the variables you created using<br />

SilkPerformer’s BDL scripting language.<br />

For help with Benchmark Description Language, refer to the BDL<br />

Function Reference.<br />

Editing Multi-Column Data Files<br />

Editing multi-column<br />

data files<br />

Procedure To edit a multi-column data file:<br />

1 Open the Data Files sub-tree of SilkPerformer’s Project tab.<br />

2 Double-click the multi-column data file you want to edit.<br />

The Edit CSV File window appears.<br />

3 Choose an appropriate separator for the multi-column data file from the<br />

Separator drop down list or type a custom separator.<br />

4 Modify, add, or delete values from the multi-column data files.<br />

5 Click the Save As button to save the multi-column data file with a<br />

different name.<br />

6 Click OK to save the changes of the multi-column data file and close the<br />

window.<br />

7 Click Cancel to ignore all changes and close the window.<br />

SilkPerformer User Guide 255


11 ADDITIONAL WORKBENCH FEATURES<br />

Java Integration<br />

Existing parameters<br />

Procedure To use an existing parameter for your script:<br />

1 Move your cursor to a customizable value (e.g., a string) in your script.<br />

2 Right-click and select Customize Value from the context menu.<br />

The Parameter Wizard appears.<br />

Note: The Customize Value menu item will be disabled if the value in<br />

your script is not customizable.<br />

3 In the wizard’s Customize Value window, select Use existing parameter.<br />

4 Click Next.<br />

The wizard’s Use Existing Parameter window appears.<br />

5 Select a variable from the list and click Finish.<br />

You can choose the data type of the shown parameters from the Show all<br />

Parameters of type drop-down list.<br />

Note: SilkPerformer automatically shows the window with a selected<br />

data type that is compatible with the data type of the customized value.<br />

6 The value you selected is then automatically replaced with the existing<br />

parameter.<br />

Java Integration<br />

As a powerful extension to SilkPerformer’s Benchmark Description Language,<br />

the Java Framework enables you to implement user behavior in Java. When<br />

testing an existing Java application you don’t need to spend much time creating<br />

test scripts—the only effort required is embedding existing Java source code<br />

into the framework.<br />

To generate a benchmark executable and run a load test with the help of the Java<br />

framework, two source files are typically required:<br />

- A Java class that implements the behavior of a virtual user<br />

- A SilkPerformer test script that invokes Java method calls<br />

Note Both source files need to have the same name, with extensions<br />

indicating the file types (.bdf for the SilkPerformer test script and<br />

.java for the Java source file).<br />

With SilkPerformer it’s possible to call Java functions on any Java object from a<br />

BDL context with any number and type of parameter and return parameter.<br />

When a Java function returns a complex object, a handle for the Java object is<br />

returned in its place. The handle can be passed to other function calls as an input<br />

parameter, or public methods may be invoked on the object. There is also<br />

support for static methods, cast operations, and exception handling.<br />

256 SilkPerformer User Guide


11 ADDITIONAL WORKBENCH FEATURES<br />

Java Integration<br />

Creating Java projects<br />

Adding Java files to<br />

projects<br />

Procedure To create a Java project:<br />

1 Click the Start here button on the SilkPerformer Workflow bar or select<br />

File/New Project from the main menu bar.<br />

The Workflow - Outline Project dialog appears.<br />

2 Enter a name for your project in the Project name field.<br />

3 Enter a description for your project in the Project description field.<br />

Note that this description is for your own project management purposes<br />

only.<br />

4 From the Application type tree list, choose Java/Java Framework.<br />

5 Click OK.<br />

An icon for the new project appears in the tree-view area of the main<br />

SilkPerformer window.<br />

6 If you need to add additional resources to the project, right-click the<br />

project icon in the tree list. It is particularly important that all the user<br />

data files (.csv), random data files (.rnd), and .idl files needed by<br />

SilkPerformer are set up for the project.<br />

Procedure To generate Java Framework files:<br />

1 Click the Model Script button on the SilkPerformer Workflow bar.<br />

The Workflow – Model Script dialog appears.<br />

2 Select New script and click OK.<br />

The New Java Framework Script dialog appears.<br />

(Alternately you can select File/New.../Java Framework Scripts (.bdf/<br />

.java) from the main menu bar to reach this step)<br />

Enter a name for your Java class.<br />

3 Click OK.<br />

A Java file containing a class with the given name is generated and<br />

opened along with a BDL file, which is used to load test the Java class.<br />

4 If you save your files, you will be asked if you want to add them to your<br />

project.<br />

Procedure To generate Java files without a BDL file:<br />

1 Select File/New.../Java Scripts (.java) from the main menu bar.<br />

The New Java Framework Script dialog appears.<br />

2 Enter a name for your Java class.<br />

3 Click OK.<br />

A Java file containing a class with the given name is generated and<br />

opened.<br />

SilkPerformer User Guide 257


11 ADDITIONAL WORKBENCH FEATURES<br />

Java Integration<br />

4 If you save your files, you will be asked if you want to add them to your<br />

project.<br />

You have the following options for adding a Java file to a project:<br />

• When saving a new Java file for the first time, you are asked if you want<br />

to add the file to the current project.<br />

• Right-click the Scripts subnode of the project and select Add Script... to<br />

open the Select Script(s) dialog. Change the File of type drop down list to<br />

Java files (*.java). Select your file, which will be added to the project<br />

when you click Open.<br />

• Right-click in the view of a Java file to open the context menu. Click Add<br />

to Project to add the file to the project.<br />

See “JUnit Integration” for details regarding JUnit testing with SilkPerformer.<br />

Compiling Java files<br />

Before a Java file can be compiled it’s necessary to ensure that a valid path to a<br />

Java SDK and a valid classpath are specified.<br />

Procedure To specify Java settings:<br />

1 Select Settings/Active Profile.<br />

2 Scroll down to and select the Java icon in the left-hand scroll window.<br />

3 The General tab appears. Select the Java version you are using from the<br />

Version drop-down list.<br />

4 Use the Browse (...) button to select the directory where the Java SDK is<br />

installed.<br />

5 Add any required entries to the classpath<br />

Note Alternately, you can use the JavaSetOption API function with<br />

the appropriate option number to set the Java version, Java home<br />

directory, and classpath.<br />

Manual compilation can be achieved in one of the following ways:<br />

• Open a Java file and press F7.<br />

• Open a Java file and right-click in the view to open a context menu.<br />

Select the Compile command.<br />

• Right-click a Java file in the Project tab to open a context menu. Select<br />

the Compile command.<br />

Initiating Try Scripts, finding baselines, and running tests will also<br />

automatically launch compilation for all Java and BDL files.<br />

258 SilkPerformer User Guide


11 ADDITIONAL WORKBENCH FEATURES<br />

Converting CSV Data for Use With Silk Performance Explorer<br />

During compilation, all output from the Java Compiler is redirected to<br />

SilkPerformer’s Compiler tab. Resulting class files are generated in the<br />

directory of the current project.<br />

Note See the BDL Function Reference for details regarding Javaspecific<br />

functions.<br />

Converting CSV Data for Use With Silk Performance Explorer<br />

Generating a CSV file<br />

on a remote server<br />

SilkPerformer offers a command line tool (csv2tsd.exe) that enables you to<br />

convert CSV (Comma Separated Values) files into TSD (Time Series Data)<br />

files.<br />

This is useful when you are monitoring external Windows data that, for security<br />

reasons, can not be monitored by SilkPerformer. By converting CSV data to<br />

TSD format, external data can be analyzed alongside internal SilkPerformer<br />

monitoring data via Silk Performance Explorer.<br />

For example, if a performance counter is used to measure the behavior of a<br />

remote server and the results of that monitor are saved in CSV format, those<br />

results can be imported into Performance Explorer for analysis alongside the<br />

results of a SilkPerformer load test involving the same server. With<br />

Performance Explorer you then have the opportunity to look for correlations<br />

between the two data sets.<br />

Any CSV log file you specify in the command line tool must follow the format<br />

generated by the Windows Performance Monitor tool (Adminstrative Tools/<br />

Performance). So, before using csv2tsd.exe you must create a performance<br />

counter with settings that will allow you to import its data.<br />

Procedure To generate an eligible performance counter log prior to<br />

conversion:<br />

1 Open the Windows Performance Monitor tool (Adminstrative Tools/<br />

Performance).<br />

2 Expand the Performance Logs and Alerts tree node.<br />

3 Right-click the Counter Logs node and select New Log Settings from the<br />

context menu.<br />

4 Enter a name for the new log settings file on the New Log Settings dialog<br />

and click OK.<br />

5 The properties dialog for the new log settings file is displayed. Click the<br />

Add Counters button to open the Add Counters dialog.<br />

6 Specify the computer, performance object, counter and counter instances<br />

for which you want to track results.<br />

SilkPerformer User Guide 259


11 ADDITIONAL WORKBENCH FEATURES<br />

Converting CSV Data for Use With Silk Performance Explorer<br />

7 Close the Add Counters dialog.<br />

8 Select the Log Files tab on the Properties dialog.<br />

9 From the Log file type list box, select Text File (Comma delimited).<br />

10 Click OK to close the properties dialog.<br />

11 Close the Performance Monitor.<br />

Once you have configured a performance counter so that its log results can be<br />

converted to TSD format using csv2tsd.exe, you can start capturing behavioral<br />

data using the performance counter.<br />

Procedure To begin capturing performance counter log data:<br />

1 Open the Windows Performance Monitor tool (Adminstrative Tools/<br />

Performance).<br />

2 Expand the Performance Logs and Alerts tree node.<br />

3 Double-click the Counter Logs node.<br />

4 Right-click a counter log in the right-hand window and select Start from<br />

the context menu.<br />

Active counters are shown in green. Inactive counters are shown in red.<br />

Generated CSV counter log files have the following format:<br />

"(PDH-CSV 4.0) (W. Europe Standard Time)(-<br />

60)","\\JONES\Processor(_Total)\% Interrupt<br />

Time","\\JONES\Processor(_Total)\% Privileged<br />

Time","\\JONES\Processor(_Total)\% Processor Time"<br />

"02/25/2008 23:24:23.826"," "," "," "<br />

"02/25/2008<br />

23:24:38.841","0","0.10406093659265107","0.1015008710549<br />

7141"<br />

"02/25/2008<br />

23:24:53.841","0.052084666700800877","1.8229633345280307<br />

","2.4454192693999621"<br />

"02/25/2008<br />

23:25:08.840","0.052084666700800877","3.0729953353472514<br />

","5.4663299380464103"<br />

"02/25/2008<br />

23:25:23.840","0.052084666700800877","0.5729313337088095<br />

5","1.0391332684783428"<br />

Procedure To convert a properly formatted CSV file to TSD format using<br />

csv2tsd.exe:<br />

1 Launch csv2tsd.exe (All Programs/<strong>Borland</strong>//Analysis<br />

Tools/TSD File Export Tool)<br />

260 SilkPerformer User Guide


11 ADDITIONAL WORKBENCH FEATURES<br />

Converting CSV Data for Use With Silk Performance Explorer<br />

2 Enter file import and export settings using the following format:<br />

Csv2Tsd [[+/-]]<br />

is the full path of the CSV File to import<br />

is the full path of the TSD File to be generated<br />

is the time difference in seconds. (default: 0)<br />

3 Hit Enter to execute the conversion.<br />

The example CSV counter log file above (which includes 20 rows) can be<br />

converted to TSD format using the following command at the prompt in<br />

csv2tsd.exe:<br />

Csv2Tsd.exe C:\perflogs\Test1.csv c:\perflogs\Test1.tsd<br />

SilkPerformer User Guide 261


11 ADDITIONAL WORKBENCH FEATURES<br />

Converting CSV Data for Use With Silk Performance Explorer<br />

262 SilkPerformer User Guide


12<br />

SilkPerformer 12 Chapter<br />

Plug-Ins<br />

Introduction<br />

What you will learn<br />

This chapter explains SilkPerformer’s plug-in interface.<br />

This chapter contains the following sections:<br />

Section<br />

Page<br />

Overview 263<br />

Checking and Initializing Plug-Ins 264<br />

Message Output 264<br />

<strong>Borland</strong> Optimizeit ServerTrace Plug-In 265<br />

dynaTrace Diagnostics Plug-In 267<br />

Overview<br />

SilkPerformer offers a plug-in interface for SilkPerformer Workbench. The<br />

plug-in interface extends SilkPerformer’s compatibility to third-party<br />

technologies, enabling coordination and control of third-party technologies from<br />

within the SilkPerformer environment.<br />

Generic plug-in<br />

interface controls<br />

SilkPerformer's plug-in interface extends SilkPerformer’s compatibility with<br />

third-party technologies, enabling coordination and control of third-party<br />

technologies from within SilkPerformer.<br />

The controls that are available for plug-ins vary based on the functionality<br />

offered by each plug-in. By default, each plug-in offers the following attributes<br />

via the SilkPerformer System Settings dialog:<br />

On the General tab:<br />

- Plug-in name, version, and description details<br />

- Enabling/disabling of the plug-in<br />

SilkPerformer User Guide 263


12 SILKPERFORMER PLUG-INS<br />

Checking and Initializing Plug-Ins<br />

- A list of features supported by the plug-in<br />

On the Attributes tab:<br />

- Name, description, datatype, and value for each available attribute<br />

Depending on available plug-in functionality, other tabs and configurable<br />

attributes may also be available.<br />

Available plug-ins • “<strong>Borland</strong> Optimizeit ServerTrace Plug-In”<br />

• “dynaTrace Diagnostics Plug-In”<br />

Checking and Initializing Plug-Ins<br />

All available plug-ins are installed to the following directory during<br />

SilkPerformer setup: \Working\Plugins\...>.<br />

When SilkPerformer Workbench is launched, it checks for installed plug-ins.<br />

All installed plug-ins are then loaded, verified, and initialized.<br />

Plug-ins can be enabled, disabled, or configured by users via SilkPerformer’s<br />

System Settings dialog. The System Settings dialog adds a new icon in the lefthand<br />

pane for each available plug-in. On the General tab, basic information<br />

(including description, version, and supported features) and the ability to enable/<br />

disable the plug-in is provided for each installed plug-in. Each plug-in is also<br />

provided an Attributes tab that lists all attributes associated with the plug-in.<br />

Some plug-ins may include additional tabs related to available functionality.<br />

Plug-ins are disabled by default and must be enabled before use.<br />

Message Output<br />

A new tab is inserted into SilkPerformer’s Output window for each installed and<br />

enabled plug-in.<br />

SilkPerformer outputs all messages from plug-ins into these tabs. Output tabs<br />

are removed when plug-ins are disabled.<br />

Output tabs display the following information:<br />

- Timestamp (HH:MM:SS)<br />

- Severity (“Error,” “Warning,” or “Info”).<br />

- Numerical message Code<br />

- The text of the Message. Messages are displayed in the color that<br />

corresponds to their severity (Error = red; Warning = orange; Info =<br />

magenta).<br />

264 SilkPerformer User Guide


12 SILKPERFORMER PLUG-INS<br />

<strong>Borland</strong> Optimizeit ServerTrace Plug-In<br />

<strong>Borland</strong> Optimizeit ServerTrace Plug-In<br />

ServerTrace controls<br />

System settings<br />

The <strong>Borland</strong> ServerTrace Plug-In for Optimizeit ServerTrace makes use of<br />

SilkPerformer’s plug-in interface. The <strong>Borland</strong> ServerTrace plug-in enables<br />

SilkPerformer to initiate <strong>Borland</strong> ServerTrace snapshots within SilkPerformer<br />

load test environments. Future versions of the plug-in may offer capturing and<br />

analysis of ServerTrace results.<br />

To install the Optimizeit ServerTrace Plug-In, download and execute the setup<br />

package, which is available from http://sso.borland.com/download/. After<br />

logging in, download the installer that corresponds to the latest version of<br />

SilkPerformer you have purchased.<br />

The <strong>Borland</strong> Optimizeit ServerTrace plug-in enables SilkPerformer to initiate<br />

ServerTrace snapshots from within a SilkPerformer load test environment.<br />

A ServerTrace snapshot offers a glimpse of the status of a server application. It<br />

provides key performance metrics and statistics for standard J2EE components,<br />

such as JDBC, JNDI, Servlet and JSP, EJB, JMS, and RMI.<br />

During SilkPerformer load tests, the Optimizeit ServerTrace plug-in is in<br />

contact with each configured ServerTrace agent and instructs it to start or stop<br />

profiling or generate a snapshot.<br />

For details regarding use of <strong>Borland</strong> Optimizeit ServerTrace, please see <strong>Borland</strong><br />

Optimizeit documentation.<br />

Procedure To view and configure available system settings:<br />

1 Open the System Settings dialog (Settings / System).<br />

2 Select the ServerTrace icon in the left-hand pane.<br />

3 The General tab appears. This tab displays read-only information about<br />

the plug-in (name, version, and description). A read-only listbox displays<br />

the features that are supported by the plug-in.<br />

The General tab also enables you to enable/disable the plug-in (via the<br />

Enable plug-in checkbox).<br />

Note: By enabling/disabling the plug-in, you also enable/disable the<br />

ServerTrace toolbar button and the ability to configure plug-in attributes<br />

on the System Settings / Attributes tab.<br />

4 Click OK to accept your settings, or select another tab to configure<br />

additional plug-in settings.<br />

Attributes Tab<br />

Available plug-in attributes can be configured on the System Settings/Attributes<br />

tab. Available attributes are listed in a grid control that includes Name, Type and<br />

attribute Value. A read-only description of each attribute is also available in the<br />

text field at the bottom of the tab.<br />

SilkPerformer User Guide 265


12 SILKPERFORMER PLUG-INS<br />

<strong>Borland</strong> Optimizeit ServerTrace Plug-In<br />

Attribute values can be configured based on attribute datatype and available<br />

values. These values are configurable only when the plug-in is enabled.<br />

Click OK to accept your settings, or select another tab to configure additional<br />

plug-in settings.<br />

Agents Tab<br />

On the Agents tab you can configure the available <strong>Borland</strong> ServerTrace agents<br />

so that SilkPerformer can execute snapshots during load tests. Available agents<br />

are listed in a grid control with Host name and Port text fields.<br />

Agent Host and Port information must be entered manually.<br />

Click OK to accept ServerTrace agent settings.<br />

Using SilkPerformer to<br />

control ServerTrace<br />

ServerTrace Toolbar<br />

The ServerTrace toolbar gives you the option of manually:<br />

- Starting ServerTrace<br />

- Hibernating ServerTrace<br />

- Resetting ServerTrace<br />

- Generating ServerTrace snapshots<br />

Each action is executed on all configured ServerTrace agents.<br />

ServerTrace snapshots<br />

SilkPerformer serves as an interface for ServerTrace so that you can schedule<br />

and execute ServerTrace snapshots from within SilkPerformer.<br />

When a SilkPerformer load test is launched, stopped, or killed, the<br />

SilkPerformer controller communicates its status to the ServerTrace Plug-In.<br />

Depending on the plug-in settings, SilkPerformer triggers ServerTrace agents to<br />

gather J2EE performance metrics and statistics.<br />

For details regarding use of <strong>Borland</strong> Optimizeit ServerTrace, please see <strong>Borland</strong><br />

ServerTrace documentation.<br />

Message output<br />

A new tab is inserted into SilkPerformer’s Output window when the <strong>Borland</strong><br />

ServerTrace Plug-In is enabled.<br />

The ServerTrace Output Window tab indicates such status information as when<br />

contact is established with ServerTrace agents and when snapshots are initiated,<br />

started, or failed.<br />

266 SilkPerformer User Guide


12 SILKPERFORMER PLUG-INS<br />

dynaTrace Diagnostics Plug-In<br />

The ServerTrace Output Window tab displays the following ServerTrace<br />

snapshot details:<br />

• Timestamp (HH:MM:SS)<br />

• Severity (“Error,” “Warning,” or “Info”).<br />

• Numerical message Code<br />

• The text of the Message. Messages are displayed in the color that<br />

corresponds to their severity (Error = red; Warning = orange; Info =<br />

magenta).<br />

dynaTrace Diagnostics Plug-In<br />

SilkPerformer offers a plug-in framework for dynaTrace Diagnostics and other<br />

third-party diagnostics tools. The framework enables third-party tool vendors to<br />

integrate into one or more of the following three <strong>Borland</strong> tools:<br />

• SilkPerformer Workbench<br />

For details on integration, see “dynaTrace Plug-In”.<br />

• Silk TrueLog Explorer<br />

The SilkPerformer Workbench plug-in can be used to modify profile<br />

settings so that the runtime sends an additional HTTP header tag with<br />

each page request. The same functionality is available via the<br />

WebSetHttpTag BDL function.<br />

When a user selects an API node, TrueLog Explorer passes the plug-in<br />

header and body, including the additional HTTP tag. TrueLog Explorer’s<br />

lower-right window includes an additional tab for each enabled plug-in.<br />

The plug-in tabs are Internet Explorer controls, so plug-ins can present<br />

anything that can be expressed via HTML.<br />

Plug-ins can use the HTTP tag to identify traces and present complete<br />

component break-downs for each Web page call.<br />

• Silk Performance Explorer<br />

Plug-ins that implement the PerfExp plug-in interface can be called from<br />

the (OVR) Overview Report/Ranking section. Overview reports show plugin<br />

related icons for each ranking measurement for which the plug-in can<br />

provide in-depth information.<br />

dynaTrace Plug-In<br />

The dynaTrace Plug-In is installed along with the SilkPerformer setup. It is<br />

disabled by default.<br />

Note dynaTrace information is only produced when running a load<br />

test. When running a TryScript test run, no dynaTrace information is<br />

produced.<br />

SilkPerformer User Guide 267


12 SILKPERFORMER PLUG-INS<br />

dynaTrace Diagnostics Plug-In<br />

Procedure To configure dynaTrace plug-in settings:<br />

1 From SilkPerformer, select Settings/System Settings.<br />

2 Select the the dynaTrace Diagnostics Plug-In group icon.<br />

3 On the General tab, select the Enable plug-in check box.<br />

4 Configure Name/Value pairs on the Attributes tab as required.<br />

5 Click OK to save your settings.<br />

268 SilkPerformer User Guide


13<br />

Component 13 Chapter<br />

Testing (Java &<br />

.NET)<br />

Introduction<br />

What you will learn<br />

This chapter explains now to manage component testing with SilkPerformer.<br />

This chapter contains the following sections:<br />

Section<br />

Page<br />

Overview 269<br />

.NET Support 269<br />

Java Support 271<br />

Overview<br />

With SilkPerformer .NET Explorer and Java Explorer, you can test Web<br />

Services, .NET Remoting objects, Enterprise JavaBeans (EJB), RMI objects,<br />

and other GUI-less .NET/Java objects.<br />

.NET Support<br />

SilkPerformer .NET Explorer, which was developed using .NET, and the<br />

SilkPerformer .NET Framework allow you to test Web Services, .NET<br />

Remoting objects, and other GUI-less .NET objects. .NET Explorer allows you<br />

to define and execute complete test scenarios with different test cases without<br />

requiring manual programming—everything is done visually via point and click<br />

operations. Test scripts are visual and easy to understand—even for staff<br />

members who aren't familiar with .NET programming languages.<br />

SilkPerformer User Guide 269


13 COMPONENT TESTING (JAVA & .NET)<br />

.NET Support<br />

Launching .NET<br />

Explorer<br />

Test scenarios created with SilkPerformer .NET Explorer can be exported to<br />

SilkPerformer Workbench for immediate reuse in concurrency and load testing;<br />

and to Microsoft Visual Studio .NET for further customization.<br />

Procedure To launch SilkPerformer .NET Explorer:<br />

1 Go to .../Development Tools/SilkPerformer .NET<br />

Explorer.<br />

Alternately you can launch SilkPerformer Workbench. Go to<br />

.../SilkPerformer Workbench.<br />

Then create a new project with the application type .NET/.NET Explorer<br />

or Web Services/.NET Explorer.<br />

SilkEssential for .NET<br />

Explorer<br />

Add-In for Microsoft<br />

Visual Studio .NET<br />

SilkPerformer ships with a SilkEssential that allows you to hook .NET Explorer<br />

to get a BDL script with tested WebServices.<br />

Procedure To make use of the SilkEssential:<br />

1 Create a new project based on the SilkEssential (Project Type:<br />

WebServices/.NET Explorer).<br />

2 Model the script.<br />

3 While the recorder is running, start .NET Explorer from the Start menu.<br />

4 Load a test scenario that you have defined in a previous .NET Explorer<br />

session.<br />

5 Execute an animated run of the scenario.<br />

6 Close .NET Explorer and the recorder.<br />

7 Perform a Try Script run of the recorded BDL script.<br />

8 Perform XML customization/verification in the TrueLog as required.<br />

See the BDL Function Reference for a description of DotNET framework.<br />

The SilkPerformer Add-In for Microsoft Visual Studio .NET allows you to<br />

implement test drivers in Visual Studio .NET that are compatible with<br />

SilkPerformer Workbench. Such test drivers can be augmented with<br />

SilkPerformer features that facilitate test organization, verification, performance<br />

measurement, test data generation, and reporting.<br />

Tests created with the Add-In can either be run within Visual Studio (with full<br />

access to SilkPerformer's functionality) or within SilkPerformer Workbench (for<br />

concurrency and load testing scenarios).<br />

270 SilkPerformer User Guide


13 COMPONENT TESTING (JAVA & .NET)<br />

Java Support<br />

Procedure To launch SilkPerformer Add-In for Microsoft Visual Studio<br />

.NET:<br />

1 Go to: Start/Programs/Visual Studio .NET/Visual Studio .NET and create<br />

a new SilkPerformer Visual Studio project.<br />

Alternately you can launch SilkPerformer Workbench. Go to<br />

.../SilkPerformer Workbench.<br />

.NET Resources<br />

Documentation<br />

Create a new project using the .NET/.NET Framework using the Visual<br />

Studio .Net Add-In application type.<br />

Note The Add-In requires an installed version of either Visual<br />

Studio .NET or Visual Studio .NET 2003/2005.<br />

Visit the following links for information about .NET:<br />

http://msdn.microsoft.com/net<br />

http://www.gotdotnet.com<br />

For full details regarding testing of .NET with SilkPerformer, please see the<br />

.NET Explorer User Guide and the .NET Framework Developer Guide.<br />

Java Support<br />

Launching Java<br />

Explorer<br />

SilkPerformer Java Explorer, which was developed using Java, and the<br />

SilkPerformer Java Framework allow you to test Web Services, Enterprise<br />

JavaBeans (EJB), RMI objects, and other GUI-less Java objects. Java Explorer<br />

allows you to define and execute complete test scenarios with multiple test cases<br />

without requiring manual programming—everything can be done visually via<br />

point and click operations. Test scripts are visual and easy to understand—even<br />

for personnel who are not familiar with the Java programming language.<br />

Test scenarios created with SilkPerformer Java Explorer can be exported to<br />

SilkPerformer Workbench for immediate reuse in concurrency and load testing.<br />

Note Java Explorer is compatible only with JDK versions 1.2 and<br />

higher (v1.4 or higher recommended).<br />

Procedure To launch SilkPerformer Java Explorer:<br />

1 Go to: .../Development Tools/SilkPerformer Java<br />

Explorer.<br />

Alternately you can launch SilkPerformer Workbench. Go to:<br />

.../SilkPerformer Workbench.<br />

SilkPerformer User Guide 271


13 COMPONENT TESTING (JAVA & .NET)<br />

Java Support<br />

Create a new project using either the Java/Java Explorer or Web<br />

Services/Java Explorer application type.<br />

Java resources<br />

Documentation<br />

Visit the following links for information about Java:<br />

http://java.sun.com<br />

http://www.javaworld.com<br />

http://www-106.ibm.com/developerworks/java/<br />

For full details regarding testing of Java with SilkPerformer, please see the Java<br />

Explorer User Guide and the Java Framework Developer Guide.<br />

272 SilkPerformer User Guide


14<br />

Unit 14 Chapter<br />

Test Integration (JUnit<br />

& NUnit)<br />

Introduction<br />

What you will learn<br />

This chapter explains how to manage unit testing with SilkPerformer.<br />

This chapter contains the following sections:<br />

Section<br />

Page<br />

Overview 273<br />

JUnit Integration 273<br />

NUnit Integration 281<br />

Overview<br />

SilkPerformer enables you to integrate existing JUnit and NUnit test scripts into<br />

SilkPerformer for the support of remote-component testing.<br />

JUnit Integration<br />

SilkPerformer facilitates smooth integration of existing JUnit test scripts<br />

(version 3.8.x and 4.x) into SilkPerformer for the support of remote-component<br />

testing under realistic concurrent-access server conditions.<br />

SilkPerformer provides an import tool that enables you to import existing JUnit<br />

test classes and other Java classes. Tested Java methods may have parameters<br />

and return values; code for setting the in-parameters of these functions is<br />

generated automatically. By definition, JUnit test methods can’t have<br />

parameters.<br />

SilkPerformer User Guide 273


14 UNIT TEST INTEGRATION (JUNIT & NUNIT)<br />

JUnit Integration<br />

Prerequisites<br />

Setting up new JUnit<br />

projects<br />

Importing JUnit test<br />

classes<br />

Importing Java test<br />

classes<br />

Modeling Scripts<br />

SilkPerformer’s Unit Test Import tool offers you the option of selecting specific<br />

test methods. It automatically generates BDL stub code (a benchmark<br />

description file) that calls those selected test methods. Existing JUnit test classes<br />

can be called from SilkPerformer without requiring modification of the test<br />

classes.<br />

JUnit 4.x testing requires Java version 1.5 or higher.<br />

The respective JUnit librarires must be available in the classpath of the Java<br />

settings of the active profile.<br />

Procedure To set up a JUnit SilkPerformer project:<br />

1 Click the Outline Project button.<br />

2 Enter a Project name and Project description for the project.<br />

3 Select Unit Testing/JUnit from the Application type tree control on the<br />

Outline Project dialog.<br />

4 Click OK to create the project.<br />

Procedure To Import a JUnit test class:<br />

1 Select Project/Import Unit Test/JUnit Test Class to open the Import<br />

JUnit Test Class dialog.<br />

2 Follow the instructions outlined below in “Modeling Scripts”.<br />

Note For JUnit4 module tests, JDK 1.5 or higher is required.<br />

Modify your Java profile settings accordingly before importing<br />

JUnit4 module tests.<br />

Procedure To import a Java test class:<br />

1 From the menu bar, select Project/Import Unit Test/Java Test Class to<br />

open the Import Java Test Class dialog.<br />

2 Follow the instructions outlined in the following section, Modeling<br />

Scripts.<br />

On the Import JUnit Test Class dialog, select an archive that is to be tested using<br />

the File field; click the Browse (...) button to browse for the file. The archive is<br />

automatically added to the profile classpath. The available classes are then<br />

retrieved and displayed, sorted alphabetically in the Class field. Select one of the<br />

available classes from the drop-down box for testing.<br />

When you don’t specify a specific archive for testing, the Model Script dialog<br />

enables you to specify a class that is available in the profile classpath. Simply<br />

type the fully qualified class name into the Class field (e.g., “java.lang.String”).<br />

Select the appropriate Constructor for instantiating the imported class. If a<br />

constructor is not selected (entry “”), only static methods will be displayed in the method list.<br />

274 SilkPerformer User Guide


14 UNIT TEST INTEGRATION (JUNIT & NUNIT)<br />

JUnit Integration<br />

Java profile settings<br />

Select the Methods that are to be called. Note that when you enter a class name<br />

in the Class field, the available constructors and methods are automatically<br />

retrieved and displayed.<br />

The JUnit or Java test class you want to import and all third-party libraries<br />

needed by the test class must be available in the profile classpath. SilkPerformer<br />

automatically adds all archives entered in the File field to the profile classpath.<br />

Also, all test classes compiled in SilkPerformer Workbench are compiled to the<br />

project directory, which is also automatically included in the profile classpath.<br />

Click the Active Profile button (the checklist icon above the Methods field) to<br />

display the Profile Settings dialog, open to the Java/General page for Java<br />

projects (JUnit project type).<br />

Note Changes made to these settings (e.g., Java Classpath) may lead<br />

to different results. Selections made in the Class, Constructor, and<br />

Methods fields will be updated with the new results.<br />

Note For JUnit4 module tests, JDK 1.5 or higher is required.<br />

Modify your Java profile settings accordingly before importing<br />

JUnit4 module tests.<br />

If you change the Java version, Java home directory, or JVM DLL, you must<br />

restart SilkPerformer for the changes to take effect.<br />

Click the Advanced Settings button (the funnel icon above the Methods field) to<br />

filter the methods that are shown in the Methods field.<br />

Parameterless Functions Only<br />

Unit Test Functions Only<br />

(selected by default for JUnit<br />

import)<br />

Member Functions Only<br />

Public Functions (selected by<br />

default)<br />

Ignore all functions that expect<br />

parameters<br />

Ignore all functions that are not JUnit<br />

conform<br />

Ignore all non-member functions<br />

Include public functions<br />

Protected Functions<br />

Include protected functions<br />

Private Functions<br />

Include functions with private access<br />

Package Functions<br />

Include functions with package access<br />

Declared Functions Only Ignore functions from the base classes<br />

Table 27: Filter options for JUnit methods<br />

SilkPerformer User Guide 275


14 UNIT TEST INTEGRATION (JUNIT & NUNIT)<br />

JUnit Integration<br />

Complex Functions (selected by<br />

default)<br />

Autodetect Unit Test Functions<br />

(selected by default)<br />

Table 27: Filter options for JUnit methods<br />

Show functions that take complex<br />

parameters. In Java, complex<br />

parameters are scripted by<br />

JavaSetObject with NULL as the<br />

default value.<br />

Automatically detect and script JUnit<br />

functions according to the following<br />

rules:<br />

• JUnit 3.8.x scripts are derived from<br />

junit.framework.TestCase class.<br />

• JUnit 3.8.x functions must not have<br />

parameters or return values.<br />

• setUp() and tearDown() are<br />

invoked prior to and following each<br />

JUnit 3.8.x method.<br />

• JUnit 4.x scripts no longer require<br />

to be derived from<br />

junit.framework.TestCase class.<br />

• JUnit 4.x functions are recognized<br />

by the @Test annotation and added<br />

to the script, unless the @Ignore<br />

annotation is used.<br />

• Methods having @BeforeClass and<br />

@AfterClass annotation are<br />

invoked once per test class.<br />

• Methods having @Before and<br />

@After annotation are invoked<br />

prior to and following each JUnit<br />

4.x method.<br />

Generating a BDL<br />

script for JUnit 3.8.x<br />

Once you have customized filter settings, click OK to update the Methods field.<br />

The following script is generated by importing a sample JUnit 3.8.x test case<br />

and selecting the three methods testRound, testSqrt, and testMax:<br />

transaction TInit<br />

var<br />

hPerf : number;<br />

begin<br />

JavaCreateJavaVM();<br />

JavaSetString(JAVA_STATIC_METHOD, "TestCaseName");<br />

ghTestObj := JavaLoadObject("JUTestClass",<br />

"JUTestClass.");<br />

end TInit;<br />

276 SilkPerformer User Guide


14 UNIT TEST INTEGRATION (JUNIT & NUNIT)<br />

JUnit Integration<br />

transaction TMain<br />

begin<br />

JUnitCallMethod(ghTestObj, "testRound",<br />

"testRound");<br />

JUnitCallMethod(ghTestObj, "testSqrt", "testSqrt");<br />

JUnitCallMethod(ghTestObj, "testMax", "testMax");<br />

end TMain;<br />

Generating a BDL<br />

script for JUnit 4.x<br />

transaction TEnd<br />

begin<br />

JavaFreeObject(ghTestObj);<br />

end TEnd;<br />

JavaLoadObject in the TInit transaction instantiates the JUnit test class<br />

“JUTestClass”.<br />

JUnitCallMethod in the TMain transaction calls one of the three test methods in<br />

the same way that a JUnit test runner would. First the setUp() method is<br />

invoked, then the test method itself (e.g., “testSqrt()”), finally the tearDown()<br />

method is invoked.<br />

Timers:<br />

When an optional timer parameter is specified for a Java method call, the<br />

execution time of the constructor, test method, setup method, and tear-down<br />

method are measured. For the example above you would receive the following<br />

measures:<br />

For the constructor: JUTestClass.<br />

For the methods: testRound, testSqrt, testMax<br />

For the set up methods: testRound_setup, testSqrt_setup, testMax_setup<br />

For the tear down methods: testRound_tearDown, testSqrt_tearDown, testMax_<br />

tearDown<br />

The following script is generated by importing a sample JUnit 4.x test case and<br />

selecting the methods doFoo and doFoo2. The sample JUnit test script contains<br />

several annotations for test setup and tear-down.<br />

var<br />

ghTestObj :number;<br />

dcluser<br />

user<br />

JavaUser<br />

transactions<br />

TInit :begin;<br />

TMain :1;<br />

TEnd :end;<br />

SilkPerformer User Guide 277


14 UNIT TEST INTEGRATION (JUNIT & NUNIT)<br />

JUnit Integration<br />

dclfunc<br />

function JUnit4Before<br />

begin<br />

// @Before<br />

JavaCallMethod(ghTestObj, "myBefore", "myBefore");<br />

end JUnit4Before;<br />

function JUnit4After<br />

begin<br />

// @After<br />

JavaCallMethod(ghTestObj, "myAfter", "myAfter");<br />

end JUnit4After;<br />

function JUnit4CallFunc(hJavaObj :number; sName<br />

:string; sTimerName :string optional; sExceptionBuffer<br />

:string optional) : boolean<br />

begin<br />

JUnit4Before();<br />

// @Test<br />

JUnit4CallFunc := JavaCallMethod(hJavaObj, sName,<br />

sTimerName);<br />

if not StrIsNull(sExceptionBuffer) then<br />

JavaGetLastException(hJavaObj, sExceptionBuffer);<br />

end;<br />

JUnit4After();<br />

end JUnit4CallFunc;<br />

dcltrans<br />

transaction TInit<br />

var<br />

hPerf : number;<br />

begin<br />

JavaCreateJavaVM();<br />

ghTestObj := JavaLoadObject("JU4ImporterTest",<br />

"JU4ImporterTest.");<br />

// @BeforeClass<br />

JavaCallMethod(JAVA_STATIC_METHOD,<br />

"JU4ImporterTest.myBeforeClass", "myBeforeClass");<br />

end TInit;<br />

transaction TMain<br />

var<br />

sBuffer :string;<br />

begin<br />

JUnit4CallFunc(ghTestObj, "doFoo", "doFoo");<br />

JUnit4CallFunc(ghTestObj, "doFoo2", "doFoo2");<br />

278 SilkPerformer User Guide


14 UNIT TEST INTEGRATION (JUNIT & NUNIT)<br />

JUnit Integration<br />

end TMain;<br />

transaction TEnd<br />

var<br />

sBuffer :string;<br />

begin<br />

// @AfterClass<br />

JavaCallMethod(JAVA_STATIC_METHOD,<br />

"JU4ImporterTest.myAfterClass", "myAfterClass");<br />

JUnit 4.x exception<br />

handling<br />

JavaFreeObject(ghTestObj);<br />

end TEnd;<br />

In the dclfunc section, the helper functions for test setup, tear-down, and<br />

exception handling are defined. These functions will be used in the transactions.<br />

JavaLoadObject in the TInit transaction instantiates the JUnit test class<br />

“JU4ImporterTest”. All JUnit methods using the @BeforeClass annotation are<br />

called in the TInit transaction.<br />

JUnit4CallFunc in the TMain transaction calls all the test methods that were<br />

selected for the JUnit test import. First the methods using the @Before<br />

annotation are invoked, then the test method itself (e.g., “doFoo()”), finally the<br />

methods using the @After annotation are invoked.<br />

Timers:<br />

When an optional timer parameter is specified for a Java method call, the<br />

execution time of the constructor, test method, test setup, and test tear-down are<br />

measured. For the example above you would receive the following measures:<br />

For the constructor: JU4ImporterTest.<br />

For the methods: doFoo, doFoo2<br />

For the test set up: myBeforeClass, myBefore<br />

For the test tear-down: myAfterClass, myAfter<br />

JUnit 4.x allows the definition of methods that throw exceptions. Throwing such<br />

exceptions is validated by JUnit. SilkPerformer imports JUnit methods that<br />

throw exceptions including the validation of the thrown message.<br />

//@Test(expected=java.lang.IllegalArgumentException)<br />

JavaRegisterException(500,<br />

"java.lang.IllegalArgumentException", JAVA_OPTION_MATCH_<br />

SUBSTRING);<br />

ErrorAdd(FACILITY_NATIVE_JAVA, 500, SEVERITY_<br />

INFORMATIONAL);<br />

JUnit4CallFunc(ghTestObj, "doFoo", "doFoo",<br />

sBuffer);<br />

ErrorRemove(FACILITY_NATIVE_JAVA, 500);<br />

SilkPerformer User Guide 279


14 UNIT TEST INTEGRATION (JUNIT & NUNIT)<br />

JUnit Integration<br />

Importing JUnit test<br />

suites<br />

Executing JUnit test<br />

suites<br />

if (StrSearch(sBuffer,<br />

"java.lang.IllegalArgumentException", STR_SEARCH_FIRST)<br />

= 0) then<br />

RepMessage("method did not throw:<br />

java.lang.IllegalArgumentException", SEVERITY_ERROR);<br />

end;<br />

The sample above tests a JUnit method that is expected to throw a<br />

java.lang.IllegalArgumentException. The function JavaRegisterException<br />

assigns the BDL error code 500 to the exception. The function ErrorAdd sets the<br />

error severity to informational, because the error is expected. After that, the<br />

JUnit method doFoo is invoked, where the parameter sBuffer retrieves the error<br />

message. The ErrorRemove function sets the error handling back to its original<br />

state. It also verifies that the expected exception occurred, and throws a BDL<br />

error if this is not the case.<br />

Note When modifying the BDL script manually, make sure that you<br />

do not map a Java exception to different BDL error numbers, or vice<br />

versa.<br />

Procedure To import a JUnit test suite:<br />

Note For JUnit4 module tests, JDK 1.5 or higher is required.<br />

Modify your Java profile settings accordingly before importing<br />

JUnit4 module tests.<br />

1 Proceed as described in “Importing JUnit test classes”<br />

2 On the Import Unit Test - JUnit Test Class dialog, click the Advanced<br />

Settings button (the funnel icon above the Methods field).<br />

3 On the Advanced Settings dialog, make sure to apply the following<br />

selections:<br />

- "Unit Test Functions Only": Not selected<br />

- "Declared Functions Only": Selected<br />

- "Member Functions Only": Not selected<br />

4 Load the JUnit test class as usual (via browsing for an archive or by<br />

typing the class name).<br />

5 Select the suite() method, then click OK.<br />

If the JUnit Import Tool (Project -> Import Unit Test -> JUnit Test Class) scripts<br />

code for invoking a method that has a return value, the code needed for<br />

retrieving the return value is scripted but commented out.<br />

If a Java method returns a junit.framework.Test method, additional commentedout<br />

code is scripted, which allows to use the FRunTestSuite function from<br />

junit.bdh to execute the test suite. junit.bdh is automatically added to the include<br />

280 SilkPerformer User Guide


14 UNIT TEST INTEGRATION (JUNIT & NUNIT)<br />

NUnit Integration<br />

section of the BDL script. To execute the test suite, you need to un-comment the<br />

respective calls.<br />

transaction TMain<br />

begin<br />

// junit.framework.Test suite()<br />

JavaCallMethod(JAVA_STATIC_METHOD,<br />

"JU4ImporterTestSimple.suite", "suite");<br />

// hObj := JavaGetObject(JAVA_STATIC_METHOD);<br />

// use the following function to execute JUnit<br />

testsuites<br />

// FRunTestSuite(hObj);<br />

// JavaFreeObject(hObj);<br />

end TMain;<br />

NUnit Integration<br />

Setting up new<br />

projects<br />

SilkPerformer facilitates smooth integration of existing NUnit and Microsoft<br />

Unit test scripts into SilkPerformer for the support of remote-component testing<br />

under realistic concurrent-access server conditions.<br />

SilkPerformer provides an import tool that enables you to import existing NUnit<br />

assemblies and other .NET assemblies. Methods may have parameters and<br />

return values; code for setting the in-parameters of these functions is generated<br />

automatically.<br />

SilkPerformer’s Unit Import Tool offers you the option of selecting specific test<br />

case methods. It automatically generates BDL stub code (a benchmark<br />

description file) that calls those selected test case methods. Existing NUnit test<br />

classes can be called from SilkPerformer without requiring modification of the<br />

test classes.<br />

Note SilkPerformer’s NUnit import utility supports NUnit versions<br />

2.1.4 and higher.<br />

Procedure To set up an NUnit or .NET Testing SilkPerformer project:<br />

1 Click the Outline Project button.<br />

2 Enter a Project name and Project description for the project.<br />

3 Select Unit Testing/NUnit or .NET Testing from the Application type tree<br />

control on the Outline Project dialog.<br />

4 Click OK to create the project.<br />

SilkPerformer User Guide 281


14 UNIT TEST INTEGRATION (JUNIT & NUNIT)<br />

NUnit Integration<br />

5 Click the Model Script workflow button to customize the script (See the<br />

following section, Importing NUnit/.Net Assemblies for details on<br />

modeling NUnit test scripts).<br />

Importing NUnit/.NET<br />

assemblies<br />

Modeling scripts<br />

Procedure To Import an NUnit assembly:<br />

1 Select Project/Import Unit Test/NUnit Test Class to open the Import<br />

NUnit Test Class dialog.<br />

2 Follow the instructions outlined below.<br />

On the Import NUnit Test Class dialog, select a file that is to be tested using the<br />

File field; click the Browse (...) button to browse for the file. The available<br />

classes are then retrieved and displayed in the Class field.<br />

When you don’t specify a specific file for testing, the Model Script dialog<br />

enables you to specify a Class name from the available system classes (or<br />

another file), select the Methods that are to be called, and define the appropriate<br />

Constructor for instantiating the imported class. Note that when you enter a class<br />

name in the Class field, the available constructors and methods are<br />

automatically retrieved and displayed.<br />

Click the Active Profile button (the checklist icon above the Methods field) to<br />

display the Profile Settings dialog, open to the .NET/General page for .NET<br />

projects (NUnit & .NET Testing project types). Changes made to these settings<br />

may lead to different results. Selections made in the Class, Constructor, and<br />

Methods fields are updated with the new results.<br />

Click the Advanced Settings button (the checklist icon above the Methods field)<br />

to filter the methods that are shown in the Methods field.<br />

Parameterless Functions Only<br />

Unit Test Functions Only (selected<br />

by default)<br />

Member Functions Only<br />

Public Functions (selected by<br />

default)<br />

Ignore all functions that expect<br />

parameters<br />

Ignore all functions that are not<br />

NUnit<br />

Ignore all non-member functions<br />

Include public functions<br />

Protected Functions<br />

Include protected functions<br />

Private Functions<br />

Include functions with private<br />

access<br />

Package Functions<br />

Include functions with package<br />

access<br />

Table 28: Filter options for NUnit methods<br />

282 SilkPerformer User Guide


14 UNIT TEST INTEGRATION (JUNIT & NUNIT)<br />

NUnit Integration<br />

Declared Functions Only<br />

Complex Functions (selected by<br />

default)<br />

Autodetect Unit Test Functions<br />

(selected by default)<br />

Table 28: Filter options for NUnit methods<br />

Ignore functions from the base<br />

classes<br />

Show functions that take complex<br />

parameters. In Java, complex<br />

parameters are scripted by<br />

DotNetSetObject with NULL as the<br />

default value.<br />

Automatically detect and script<br />

functions. Functions must not have<br />

parameters or return values.<br />

Methods marked with [SetUp] and<br />

[TearDown] (for NUnit)<br />

respectively [TestInitialize] and<br />

[TestCleanup] (for Microsoft Unit<br />

Tests) are invoked prior to and<br />

following each method.<br />

Generating NUnit BDL<br />

scripts<br />

Once you have customized filter settings, click OK to update the Methods field.<br />

The following script is generated by importing NUnit Money and selecting the<br />

three methods BagMultiply, BagNegate, and BagSimpleAhdd.<br />

transaction TInit<br />

var<br />

sFileName : string;<br />

begin<br />

DotNetSetOption(DOTNET_OPT_REDIRECT_CONSOLE, 1);<br />

// ==============================================<br />

// Unit Test TestClass Information:<br />

// Used Framework: NUnit Test Framework<br />

// Initialize method: SetUp<br />

// Class contains 21 test methods!<br />

// ==============================================<br />

GetDataFilePath("nunitmoneysample.dll", sFileName);<br />

ghTestObj := DotNetUnitTestLoadObject(sFileName,<br />

"NUnit.Samples.Money.MoneyTest",<br />

"NUnit.Samples.Money.MoneyTest");<br />

end TInit;<br />

transaction TMain<br />

begin<br />

// BagMultiply<br />

DotNetUnitTestCallMethod(ghTestObj, "BagMultiply",<br />

"BagMultiply");<br />

// BagNegate<br />

SilkPerformer User Guide 283


14 UNIT TEST INTEGRATION (JUNIT & NUNIT)<br />

NUnit Integration<br />

DotNetUnitTestCallMethod(ghTestObj, "BagNegate",<br />

"BagNegate");<br />

// BagSimpleAdd<br />

DotNetUnitTestCallMethod(ghTestObj, "BagSimpleAdd",<br />

"BagSimpleAdd");<br />

end TMain;<br />

Timers<br />

transaction TEnd<br />

begin<br />

DotNetUnitTestFreeObject(ghTestObj,<br />

"NUnit.Samples.Money.MoneyTest");<br />

end TEnd;<br />

DotNetUnitTestLoadObject loads the NUnit assembly and creates an instance<br />

of the test class. If the test class has a global initialize function implemented<br />

(marked with TestFixtureSetup - ClassInitialize), this function will be called<br />

right after the object is created.<br />

DotNetUnitTestFreeObject in the TEnd transaction frees the reference to the test<br />

object. If the test class has a global uninitialize function implemented (marked<br />

with TestFixtureTearDown - ClassCleanup), this function will be called prior to<br />

release of the object.<br />

DotNetUnitTestCallMethod calls the TestMethod in the same way that the<br />

NUnit Microsoft Unit Test Engine does. If there is a SetUp - TestInitialize<br />

method implemented, it will be called before the test method is called.<br />

If there is a TearDown - TestCleanup method implemented, it will be called<br />

after the test method is called.<br />

Test methods that expect an exception to be thrown (those marked with<br />

ExpectedException) are only considered successful when an exception is<br />

actually thrown.<br />

When a test method writes information to the error or out console, the<br />

information can be viewed in the TrueLog. A separate element is logged as child<br />

node of the DotNetUnitTestCallMethod.<br />

The same applies for unexpected exceptions. Stack trace and exception<br />

messages are logged to the TrueLog.<br />

A new optional timer parameter has been introduced for the original DotNet<br />

API calls and the new DotNetUnitTest API calls. When this parameter is<br />

specified, the execution times of the constructor, test method, set up method,<br />

and tear down method are measured. For the example above you would receive<br />

the following measures:<br />

For the constructor: NUnit.Sample.Money.MoneyTest<br />

For the methods: BagMultiply, BagNegate, BagSimpleAdd<br />

284 SilkPerformer User Guide


14 UNIT TEST INTEGRATION (JUNIT & NUNIT)<br />

NUnit Integration<br />

For the setup methods: BagMultiply_Setup, BagNegate_Setup, BagSimpleAdd_<br />

Setup<br />

SilkPerformer User Guide 285


14 UNIT TEST INTEGRATION (JUNIT & NUNIT)<br />

NUnit Integration<br />

286 SilkPerformer User Guide


15<br />

SilkCentral 15 Chapter<br />

Test Manager<br />

Integration<br />

Introduction<br />

What you will learn<br />

This chapter explains SilkPerformer’s integration with SilkCentral Test<br />

Manager.<br />

This chapter contains the following sections:<br />

Section<br />

Page<br />

Overview 287<br />

Configuring Test Manager Integration 288<br />

Opening SilkPerformer Projects from Test Manager 289<br />

Importing SilkPerformer Projects from Test Manager 291<br />

Uploading SilkPerformer Projects to Test Manager 292<br />

Uploading Test Results to Test Manager 293<br />

Downloading Test Results from Test Manager 294<br />

Overview<br />

SilkPerformer is fully integrated with SilkCentral Test Manager’s test planning<br />

and test execution functionality. SilkPerformer projects can be integrated into<br />

Test Manager test plans and directly executed via Test Manager. This allows for<br />

powerful test-result analysis and reporting. It also enables “unattended” testing<br />

(tests that are run automatically by Test Manager based on pre-configured<br />

schedules).<br />

SilkPerformer User Guide 287


15 SILKCENTRAL TEST MANAGER INTEGRATION<br />

Configuring Test Manager Integration<br />

Test Manager projects can be downloaded to SilkPerformer where scripts and<br />

settings can be edited. Edited projects can subsequently be uploaded to Test<br />

Manager to make them available for future test executions.<br />

Note The term ‘Project’ is used differently in SilkPerformer than it<br />

is in Test Manager. A SilkPerformer ‘project’, when uploaded to<br />

Test Manager, becomes the core element of a Test Manager ‘test<br />

definition’. Test Manager ‘projects’ are higher-level entities that<br />

may include multiple test definitions, executions definitions, and<br />

requirements.<br />

Silk Performance Explorer can be used for in-depth analysis of test runs.<br />

Performance Explorer can be launched directly from Test Manager’s<br />

Executions unit via execution runs on the Runs tab (see the SilkCentral Test<br />

Manager User Guide for details), from SilkPerformer, or from Performance<br />

Explorer itself (see the Performance Explorer User Guide for details regarding<br />

Performance Explorer’s integration with Test Manager).<br />

The results of SilkPerformer load test runs can be uploaded to Test Manager and<br />

associated with test definitions. To achieve this, SilkPerformer searches its<br />

results directories; the files in the results directories are then uploaded to Test<br />

Manager. See “Uploading Test Results to Test Manager” for details.<br />

For additional information about Test Manager’s integration with<br />

SilkPerformer, please consult the SilkCentral Test Manager User Guide and the<br />

Silk Performance Explorer User Guide.<br />

Configuring Test Manager Integration<br />

Procedure To configure Test Manager access:<br />

1 From the SilkPerformer menu bar, select Settings/System. The System<br />

Settings - Workbench dialog appears open at the Agent Pool tab of the<br />

Workbench group.<br />

2 Select the Test Manager tab to access Test Manager configuration.<br />

3 In the Hostname field, specify the host name or IP address of the host<br />

where SilkCentral Test Manager’s front-end server is running.<br />

4 In the Port field, specify the port number on which SilkCentral Test<br />

Manager is listening. This is usually port 80 (if you are using an ISAPI<br />

Web server) or port 19120 (if you are using Test Manager’s standalone<br />

Web server). If you leave this field empty, SilkPerformer automatically<br />

uses the default port number (80, 443 for secure connection).<br />

5 Select the Secure checkbox to connect to Test Manager via SSL (Secure<br />

Sockets Layer). The default SSL port is 443.<br />

288 SilkPerformer User Guide


15 SILKCENTRAL TEST MANAGER INTEGRATION<br />

Opening SilkPerformer Projects from Test Manager<br />

6 Enter valid user credentials in the Username and Password fields.<br />

7 Click the Test Connection button to test the connection to SilkCentral<br />

Test Manager.<br />

8 Click the Internet Options button to define the Internet-related settings<br />

for your computer and, most importantly, to determine how to connect<br />

your computer to the Internet. In the ensuing Internet Properties dialog,<br />

click the Connections tab and select the options that correspond to your<br />

environment.<br />

Opening SilkPerformer Projects from Test Manager<br />

Procedure To open a SilkPerformer project from Test Manager:<br />

1 From the File menu, select the Open Project from Test Manager<br />

command. You will then be presented with the connection settings you<br />

entered on the System Settings - Workbench - Test Manager tab.<br />

2 (Optional) If you don't want to use the default connection settings<br />

specify:<br />

- Hostname of your Test Manager installation and the Port where Test<br />

Manager is listening (values of ‘0’ or ‘omitted’ indicate the default<br />

port).<br />

- Secure connection option to connect to Test Manager via SSL<br />

(Secure Sockets Layer, HTTPS).<br />

- Valid Username and Password to connect to Test Manager.<br />

3 (Optional) Click the Set as Default button to define the connection<br />

settings you have entered as the default settings for future connections.<br />

4 (Optional) Click the Internet Options button to define Internet<br />

connection properties (e.g., proxy settings, security settings, browser<br />

connection settings). Click OK on the Internet Properties dialog to save<br />

the settings.<br />

5 Click Next on the Open Project from Test Manager dialog to see a list of<br />

the Test Manager projects to which the active user has read access (this is<br />

the same list that is available in Test Manager’s Projects unit).<br />

6 Select the Test Manager project you want to open and click Next (or<br />

simply double-click the project you want to open).<br />

7 In the project tree, open test containers and/or test folders as required and<br />

select the SilkPerformer test definition that you want to open in<br />

SilkPerformer.<br />

SilkPerformer User Guide 289


15 SILKCENTRAL TEST MANAGER INTEGRATION<br />

Opening SilkPerformer Projects from Test Manager<br />

Editing SilkPerformer<br />

projects from Test<br />

Manager<br />

8 If the SilkPerformer test definition is located on an UNC path, click<br />

Finish. Otherwise click Next. This brings up the Target Directory<br />

Selection dialog where you can specify the location where the project is<br />

to be copied. If you are using source-control integration for Test<br />

Manager (e.g., Visual SourceSafe) you will be presented with a login<br />

screen for your source-control client. Enter valid user connection settings<br />

and click OK to continue.<br />

Note SilkPerformer projects can also be opened directly from Test<br />

Manager via the Open Project icon on the Test Manager Properties<br />

tab in the Test Plan unit. See the SilkCentral Test Manager User<br />

Guide for details.<br />

Note See the Settings chapter of the SilkCentral Test Manager User<br />

Guide for information regarding the configuration of source-control<br />

integration with Test Manager.<br />

Procedure To edit a SilkPerformer project from Test Manager:<br />

1 Once you have downloaded a Test Manager project, the project appears<br />

in SilkPerformer, where you can edit the project before saving it back to<br />

Test Manager.<br />

Note If you have configured source-control integration for your<br />

Test Manager installation, SilkPerformer will have automatically<br />

checked the SilkPerformer project file out of the source-control<br />

database (SilkPerformer projects that have been checked out via Test<br />

Manager source-control integration are indicated with red<br />

checkmark symbols in the SilkPerformer tree view). This integration<br />

is facilitated by SilkPerformer using Web Services to connect to Test<br />

Manager and request the source control link information (connection<br />

string, username, and .ltp project file name).<br />

2 Once you have completed and saved all required changes to the<br />

SilkPerformer project file, select the Close Project command from the<br />

File menu and, on the subsequent dialog, confirm that you want to check<br />

the edited file back into the source-control database by clicking Yes<br />

(alternately, you can select the Check In (and Close Project) command<br />

from the project tree context menu).<br />

All subsequent executions of this project via Test Manager will use this updated<br />

project file.<br />

290 SilkPerformer User Guide


15 SILKCENTRAL TEST MANAGER INTEGRATION<br />

Importing SilkPerformer Projects from Test Manager<br />

Importing SilkPerformer Projects from Test Manager<br />

Whereas opening a Test Manager project (as described in “Opening<br />

SilkPerformer Projects from Test Manager”) involves “checking out” a Test<br />

Manager project from a source-control tool (or retrieving a project from a UNC<br />

path), editing the project, and checking the project back in, importing a project<br />

involves only downloading a copy of the project and working with it<br />

independent of Test Manager. Any changes you make to an imported project<br />

will have no effect on Test Manager. All you need to import a Test Manager<br />

project is a normal Web connection (no source-control tool connection or<br />

credentials are required).<br />

Importing a file into SilkPerformer enables you to perform “attended” test runs<br />

independently of Test Manager. This allows you to execute test runs manually in<br />

SilkPerformer. This differs from tests that are run automatically based on<br />

predefined schedules in Test Manager. Test results can subsequently be<br />

uploaded back to Test Manager and associated with a test definition.<br />

Even if you have configured source code control integration with Test Manager,<br />

imported project files will not be checked out of your source control tool<br />

because ‘imported’ project files are saved locally to your hard disk as<br />

compressed (WinZip) archives. Attended tests can also be initiated from the Test<br />

Manager side (see the SilkCentral Test Manager User Guide for details).<br />

Procedure To import a SilkPerformer project from Test Manager:<br />

1 From the File menu, select the Import Project from Test Manager<br />

command. You will then be presented with the connection settings you<br />

entered on the System Settings - Workbench - Test Manager tab.<br />

2 (Optional) If you don't want to use the default connection settings<br />

specify:<br />

- Host name or IP address of your Test Manager installation and the<br />

Port where Test Manager is listening (values of ‘0’ or ‘omitted’<br />

indicate the default port).<br />

- Secure connection option to connect to Test Manager via SSL<br />

(Secure Sockets Layer, HTTPS).<br />

- Username and Password of your connection.<br />

3 (Optional) Click the Set as Default button to define the connection<br />

settings you have entered as the default settings for future connections.<br />

4 (Optional) Click the Internet Options button to define Internet<br />

connection properties (e.g., proxy settings, security settings, browser<br />

connection settings). Click OK on the Internet Properties dialog to save<br />

the settings.<br />

SilkPerformer User Guide 291


15 SILKCENTRAL TEST MANAGER INTEGRATION<br />

Uploading SilkPerformer Projects to Test Manager<br />

5 Click Next on the Import Project from Test Manager dialog to see a list<br />

of the Test Manager projects to which the active user has read access<br />

(this is the same list that is available in Test Manager’s Projects unit).<br />

6 Select the Test Manager project you want to import and click Next (or<br />

simply double-click the project you want to import).<br />

7 In the project tree, open test containers and/or test folders as required and<br />

select the SilkPerformer test definition that you want to import to<br />

SilkPerformer.<br />

8 If you don't want to use the default target directory, enter a directory of<br />

your choice into the Target Directory field.<br />

9 Click Finish.<br />

Uploading SilkPerformer Projects to Test Manager<br />

Uploading<br />

SilkPerformer projects<br />

to Test Manager<br />

Before uploading a project to Test Manager, ensure that you have properly<br />

configured the project’s workload via SilkPerformer. Workload settings are<br />

subsequently specified along with uploaded projects in the SilkPerformer Test<br />

Properties portion of the Properties tab in Test Manager’s Test Plan unit.<br />

Procedure To upload a SilkPerformer project to Test Manager:<br />

1 With the project that you want to upload opened in SilkPerformer, select<br />

Upload Project to Test Manager from the File menu to open the Upload<br />

Project to Test Manager wizard.<br />

2 If the project has never been uploaded to Test Manager before, the Test<br />

Manager connection settings that you configured will be displayed (see<br />

“Configuring Test Manager Integration” for details on configuring these<br />

settings). Click Next. Please proceed with step 3.<br />

If the project has been uploaded to Test Manager before, the association<br />

with Test Manager’s test definition is already known and pre-selected.<br />

Please proceed with step 4.<br />

3 From the project list, select the SilkCentral Test Manager project to<br />

which you want to upload the SilkPerformer project. Click Next.<br />

4 You can select an existing test definition that is to be overwritten or you<br />

can create a new test definition by right-clicking the folder or container<br />

where the test definition is to reside and selecting New Child Test<br />

Definition from the context menu.<br />

You can also create a new folder within an existing test container by<br />

right-clicking a container and selecting New Child Test Folder from the<br />

context menu.<br />

292 SilkPerformer User Guide


15 SILKCENTRAL TEST MANAGER INTEGRATION<br />

Uploading Test Results to Test Manager<br />

Note Newly created test definitions and folders are displayed with<br />

bold text to indicate that they have not yet been written to the Test<br />

Manager database. If you click Cancel the items you have created<br />

will not be saved.<br />

5 If you do not want to upload test run results now, do not enable the<br />

Enable Results Upload checkbox and proceed with step 8.<br />

Enable the Enable Results Upload checkbox to select specific test run<br />

results that you want to upload with the project. Click Next.<br />

6 Check the appropriate checkboxes in the Results list to select the results<br />

that you want to upload along with the project. Click Next.<br />

7 Specify Version and Build number for the assigned product to which the<br />

uploaded results belong.<br />

8 Click Finish to upload the project to Test Manager. The newly uploaded<br />

items now appear in Test Manager’s test plan/project tree.<br />

Uploading Test Results to Test Manager<br />

Procedure To upload test results to Test Manager:<br />

1 Select the Upload Results to Test Manager command from the Results<br />

menu.<br />

Alternative Right-click a results node in the Results list of<br />

SilkPerformer and select Upload Results to Test Manager from the<br />

context menu.<br />

2 If the project has never been uploaded to Test Manager before, the Test<br />

Manager connection settings that you configured will be displayed (see<br />

“Configuring Test Manager Integration” for details on configuring these<br />

settings). Click Next. Please proceed with step 3.<br />

If the project has been uploaded to Test Manager before, the association<br />

with Test Manager’s test definition is already known and pre-selected.<br />

Please proceed with step 5.<br />

3 From the project list, select the SilkCentral Test Manager project to<br />

which you want to upload the SilkPerformer results. Click Next.<br />

4 From the tree list, select the test definition to which you want to upload<br />

the results. Click Next.<br />

SilkPerformer User Guide 293


15 SILKCENTRAL TEST MANAGER INTEGRATION<br />

Downloading Test Results from Test Manager<br />

Note Alternately you can right-click in the tree and use the<br />

commands on the context menu to create a new test definition, child<br />

test definition, test folder, and/or child test folder to which the results<br />

are to be saved.<br />

5 On the following dialog you can specify Version and Build number for<br />

the assigned product to which the uploaded results belong. Also specify<br />

the SilkPerformer Test result status (Passed, Failed).<br />

6 Click Finish to upload the results.<br />

Downloading Test Results from Test Manager<br />

Procedure To download test results from Test Manager:<br />

1 Select SilkPerformer’s Results tab in the top left area of the GUI.<br />

2 Click the Click here to add Test Manager results node in the results tree.<br />

3 The Open Results from Test Manager wizard opens. The corresponding<br />

Test Manager’s test definition is pre-selected. You can select multiple<br />

executions and download the results of multiple test executions.<br />

Note To download results from another test defintion, another<br />

project, or another Test Manager server, click the Back button to<br />

navigate back though Test Manager’s tree view.<br />

4 Click Finish to download the results.<br />

294 SilkPerformer User Guide


16<br />

Source 16 Chapter<br />

Control Integration<br />

Introduction<br />

What you will learn<br />

This chapter explains SilkPerformer’s integration with source control systems.<br />

This chapter contains the following sections:<br />

Section<br />

Page<br />

Overview 295<br />

Configuring Source Control Integration 296<br />

Placing Projects and Files Under Source Control 298<br />

Checking Files In 300<br />

Checking Files Out 301<br />

Getting the Latest File Versions 302<br />

Checking In/Out Project Files 302<br />

Removing Source Control Linkage 303<br />

Synchronizing Source Control Status 303<br />

Known Issues and Workarounds 304<br />

Overview<br />

SilkPerformer's source control integration (SCC integration, also referred to as<br />

source code control integration) enables you and other members of your<br />

organization to manage and share your SilkPerformer project files, test scripts,<br />

custom include files, and data files in a common repository (i.e., source control<br />

system)—enabling file check-in, check-out, get-latest-version, and other<br />

functions typical of source control systems.<br />

SilkPerformer’s source control integration is facilitated by commands on the<br />

SilkPerformer File menu (File/Source Control) and context menus in<br />

SilkPerformer User Guide 295


16 SOURCE CONTROL INTEGRATION<br />

Configuring Source Control Integration<br />

SilkPerformer’s project tree. All project nodes, script nodes, custom include file<br />

nodes, and data file nodes in the project tree offer SCC commands.<br />

In addition to offering commands that select all the files of complete projects<br />

(i.e., project file, custom include files, data files, and scripts), a sub-set of SCC<br />

commands that select only the project file are also available (i.e., you can easily<br />

check-in/check-out project files without overwriting associated script and data<br />

files). See “Checking In/Out Project Files” for details.<br />

Status icons in SilkPerformer’s project tree indicate the status of files under<br />

source control:<br />

- Files that have been placed under source control and are currently<br />

checked out (i.e., the source control version of the file is writable)<br />

are indicated with red checkmark icons.<br />

- Files that have been placed under source control, but are currently<br />

NOT checked out (i.e., the source control version of the file is readonly)<br />

are indicated with blue padlock icons.<br />

Note SilkPerformer supports StarTeam, Microsoft Visual<br />

SourceSafe, and PVCS. Source control integration must be enabled<br />

in SilkPerformer Workbench system settings (Settings/System/<br />

Source Control). You must have StarTeam, PVCS, or Visual<br />

SourceSafe installed on your system before source control<br />

integration can be enabled.<br />

Configuring Source Control Integration<br />

For configuring MS VSS or PVCS SCC integration with SilkPerformer,<br />

proceed with “General SCC integration configuration”.<br />

For configuring StarTeam SCC integration with SilkPerformer, proceed with<br />

“Integrating StarTeam SCC with SilkPerformer”.<br />

Integrating StarTeam<br />

SCC with<br />

SilkPerformer<br />

The integration consists of downloading the integration module and running the<br />

installation wizard. The following subtasks detail this workflow:<br />

• “To download the StarTeam SCC Integration Module:”<br />

• “To run the StarTeam Microsoft SCC Integration Setup wizard:”<br />

Procedure To download the StarTeam SCC Integration Module:<br />

1 Navigate to the StarTeam download area at http://www.borland.com/<br />

downloads/download_starteam.html and select StarTeam 2005 & 2005<br />

Rel 2. Integrations. You may need to login or verify your email address.<br />

296 SilkPerformer User Guide


16 SOURCE CONTROL INTEGRATION<br />

Configuring Source Control Integration<br />

2 Scroll to the Others table at the bottom of the page. In the SCC row,<br />

choose HTTP or FTP to download the integration module.<br />

3 Click Save to save the integration module to the default location.<br />

4 The <strong>Borland</strong> Download Manager downloads the file to your local<br />

computer.<br />

General SCC<br />

integration<br />

configuration<br />

Procedure To run the StarTeam Microsoft SCC Integration Setup wizard:<br />

1 Click Launch on the Download Manager to save files and launch the<br />

installation wizard.<br />

2 Enter the name of the folder to save the temporary installation file to and<br />

click Next.<br />

3 The StarTeam Microsoft SCC Integration Setup wizard is displayed.<br />

4 Click Next and then click Yes to accept the license agreement. Enter your<br />

user name and company and click Next.<br />

5 The StarTeam SDK runtime is installed if needed.<br />

6 On the Choose Destination Location page of the wizard, choose the<br />

folder to install the StarTeam SCC Integration Module to and click Next.<br />

7 On the Select Components page of the wizard, choose SCC API<br />

Integration and click Next.<br />

8 Click Yes to make StarTeam the default SCC Provider.<br />

9 Click Next to accept the default program icon setup.<br />

10 Click Finish on the Setup Complete page of the wizard.<br />

11 Click Exit to close the Download Manager.<br />

Important: It is critical that you set up and manage your projects using the<br />

StarTeam client. This includes creating projects, adding files to a project, and<br />

removing files from a project.<br />

Procedure To configure source code control integration in SilkPerformer:<br />

1 With StarTeam, MS VSS, or PVCS installed on your local system, select<br />

System from the Settings menu.<br />

2 Select the Workbench group icon.<br />

3 Select the Source Control tab (this tab is farthest to the right of the tab<br />

list; use the small right-pointing arrow to access this tab).<br />

4 Select the Enable Source Control Integration checkbox. All SCC<br />

providers that are installed on your local machine and supported by<br />

SilkPerformer (i.e., StarTeam, VSS, or PVCS) are listed in the SCC<br />

Provider list box.<br />

SilkPerformer User Guide 297


16 SOURCE CONTROL INTEGRATION<br />

Placing Projects and Files Under Source Control<br />

5 Enter a username in the Username field. The username you enter here<br />

will be suggested automatically as the default username value in future<br />

operations, such as login dialogs.<br />

Note Custom include and user data files are configured<br />

independently from project and system files for the SCC because<br />

SilkPerformer may require that these files be stored separately in the<br />

SCC (e.g., an organization might have a common repository for<br />

include files that are shared amongst a group of developers. These<br />

developers might also be required to check in files from their<br />

individual projects).<br />

6 In the Custom user data files SCC path field, click the Browse (…) button<br />

and select the location in the SCC database where the custom user data<br />

files are to be saved.<br />

Note At this point you will be required to log into your SCC system<br />

(see StarTeam, MS VSS, and PVCS documentation for full details<br />

regarding the use of your source control system). The username that<br />

you entered above will be entered into the login dialog<br />

automatically. Your SCC system will also likely require that you<br />

enter the password that corresponds to the submitted username. If<br />

not already selected, you may need to select the target SCC database.<br />

Following that, browse the file structure of your SCC system and<br />

select the directory to which your custom user data files are to be<br />

saved (you may also create a new directory for this purpose).<br />

7 In the Custom include files SCC path field, click the browse (…) button<br />

and select the location in the SCC database where the custom include<br />

files are to be saved (see the note above for assistance with this step).<br />

Note The SCC database path field is automatically populated with<br />

the database-path root of the source control system you specify in<br />

the two above fields.<br />

8 Click OK to exit the System Settings dialog. Source control integration is<br />

now complete. SilkPerformer’s source control functions are now<br />

available from the File menu (File/Source Control).<br />

Placing Projects and Files Under Source Control<br />

Note System include files can not be placed under source control.<br />

Only custom include files can be placed under source control.<br />

298 SilkPerformer User Guide


16 SOURCE CONTROL INTEGRATION<br />

Placing Projects and Files Under Source Control<br />

Placing individual files<br />

under source control<br />

Procedure To place a complete project under source control:<br />

1 With a project loaded into SilkPerformer, select the project node in the<br />

project tree.<br />

2 Select the Add to Source Control command from the File menu<br />

(alternately you can right-click the project node and select Add to Source<br />

Control from the context menu).<br />

3 In the subsequent SCC dialog, all scripts, include files, and data files<br />

associated with the project are automatically selected for placement<br />

under source code control. Uncheck any file type selections for file types<br />

that should not be placed under source control.<br />

Note Ensure that source control paths have been configured for each<br />

project file type. As you have already configured source control<br />

paths for custom include files and data files in SilkPerformer’s<br />

system settings, you should now only have to specify source control<br />

paths for project files and script files (e.g., For VSS, a ‘Click here to<br />

specify link’ appears in the Source Control Project column of the<br />

Add to Source Control dialog for any project file type for which a<br />

source control path has not been specified). If required, log into your<br />

SCC and specify directories for your project and script files.<br />

4 Click OK to place the project’s files under source control<br />

Procedure To place individual files under source control:<br />

Note Project files (.ltp), script files (.bdh), custom include files, and<br />

data files can be independently placed under source code control.<br />

See above for information on placing complete project files (.ltp)<br />

under source code control.<br />

1 To place a file that is currently only available on your local disk under<br />

source control in the specified SCC file location (thereby configuring a<br />

connection between your local disk and the SCC), right-click a file in<br />

SilkPerformer’s project tree and select Add to Source Control from the<br />

context menu.<br />

Note Alternately you can select the Scripts, Data Files, or Include<br />

Files nodes to select all files of those types for placement under<br />

source control.<br />

2 The Add to Source Control dialog appears, showing the files upon which<br />

the operation is to be performed.<br />

Note The remainder of this process is handled via dialogs provided<br />

by your SCC provider (StarTeam, PVCS, or VSS). Please see your<br />

SCC documentation for full details.<br />

SilkPerformer User Guide 299


16 SOURCE CONTROL INTEGRATION<br />

Checking Files In<br />

3 Using the checkboxes on the Add to Source Control dialog, select/<br />

deselect files for placement into source control.<br />

Note If not already defined, a source control project path must be<br />

defined for each file that is to be placed under source control. If a file<br />

marked for placement under source control does not yet have a<br />

source control project path configured for it, you will be prompted to<br />

configure a path (the source control project of the SilkPerformer<br />

project file (*.ltp) is suggested by default).<br />

Note Files added to source control are written to the corresponding<br />

*.ltp file. Therefore, to add files to source control, the corresponding<br />

*.ltp file must be checked out.<br />

4 Click Add to place the file under source control.<br />

Note A blue padlock appears next to files in the project tree that are<br />

under source control and are currently checked in (read-only). This<br />

is the default status of files that are newly placed under source<br />

control.<br />

Checking Files In<br />

These instructions apply to the checking in of individual scripts, include files,<br />

data files, and entire projects.<br />

Procedure To check a file into source control:<br />

1 In the project tree, right-click a file that is currently checked out<br />

(indicated by a red checkmark icon) and select Check In from the context<br />

menu.<br />

2 The Check In dialog appears, showing the local path where the file is<br />

currently saved. Click the Check In button to check in the file. The status<br />

icon of the file now appears as a blue padlock, indicating that the source<br />

control version of the file is now read-only.<br />

Note To check in an entire project, right click the project node and<br />

select Check In from the context menu.<br />

Note Right-click the Scripts, Data Files, or Include Files nodes to<br />

select all files of those types for check-in. If required, on the<br />

subsequent Check In dialog, individual files of that type can be<br />

deselected.<br />

300 SilkPerformer User Guide


16 SOURCE CONTROL INTEGRATION<br />

Checking Files Out<br />

Checking Files Out<br />

These instructions apply to the checking out of individual scripts, custom<br />

include files, data files, and entire projects.<br />

Procedure To check a file out of source control:<br />

1 Right-click a file in the project tree that is currently checked in (indicated<br />

by a blue padlock icon) and select Check Out from the context menu.<br />

2 The Check Out dialog appears, showing the local path to where the file<br />

will be copied.<br />

Note If a single checked-in file is selected for check out, then only<br />

that file will be listed on the Check Out dialog. If no file or a<br />

checked-out file is selected for check out, then all currently checkedin<br />

files of the project will be listed on the Check Out dialog.<br />

Undoing file check out<br />

Click the Check Out button to check out the file. The status icon of<br />

the file now appears as a red checkmark, indicating that the source<br />

control version of the file is available and writable.<br />

Note To check out an entire project, right click the project node and<br />

select Check Out from the context menu.<br />

Note Right-click the Scripts, Data Files, or Include Files nodes to<br />

select all files of those types for check out. If required, on the<br />

subsequent Check Out dialog, individual files of that type can be<br />

deselected.<br />

Procedure To undo file check out:<br />

Note ‘Undoing’ a file check-out replaces the file on your local disk<br />

(regardless of whether or not it includes recent changes) with the<br />

most recently checked-in version of the file in the SCC. The local<br />

version of the file is then read-only.<br />

1 In the project tree, right-click a file that is checked out (indicated by a red<br />

checkmark icon) and select Undo Checkout from the context menu.<br />

2 The Undo Checkout dialog appears, showing the local path to where the<br />

file is located. Click the Undo Checkout button to undo the check out.<br />

The status icon of the file now appears as a blue padlock, indicating that<br />

the source control version of the file is read-only.<br />

Note To undo checkout of an entire project, right click the project<br />

node and select Undo Checkout from the context menu.<br />

SilkPerformer User Guide 301


16 SOURCE CONTROL INTEGRATION<br />

Getting the Latest File Versions<br />

Note Right-click the Scripts, Data Files, or Include Files nodes to<br />

select all files of those types at once. If required, on the subsequent<br />

Undo Checkout dialog, individual files of that type can be<br />

deselected.<br />

Getting the Latest File Versions<br />

A source control system ‘Get Latest Version’ function downloads the latest<br />

version of a file to your local disk (by default, in read-only format) without<br />

actually checking the file out.<br />

Note See StarTeam, MS VSS, or PVCS documentation for full<br />

details regarding use of your SCC’s ‘Get Latest Version’ function.<br />

These instructions apply to the Get Latest Version function for individual<br />

scripts, include files, data files, and entire projects.<br />

Procedure To get the latest version of a file from your source control<br />

system:<br />

1 Right-click a file in the project tree and select Get Latest Version from<br />

the context menu.<br />

2 The Get Latest Version dialog appears, showing the local path where the<br />

file will be copied. Click the Get Latest Version button.<br />

Note ‘Get Latest Version’ operations do not change the checked-in/<br />

checked-out status of files. For example, if the ‘Get Latest Version’<br />

operation is performed on a file that is currently checked out, the file<br />

remains checked out (if the file is open, you will be prompted as to<br />

whether or not you want to have the file reloaded with the new<br />

version).<br />

Note To get the latest version of an entire project, right click the<br />

project node and select Get Latest Version from the context menu.<br />

Note Right-click the Scripts, Data Files, or Include Files nodes to<br />

select all files of those types for a ‘Get Latest Version’ operation. If<br />

required, on the subsequent Get Latest Version dialog, individual<br />

files of that type can be deselected.<br />

Checking In/Out Project Files<br />

In addition to offering source control commands that operate on all the files of a<br />

complete project (project file, custom include files, data files, and scripts), a sub-<br />

302 SilkPerformer User Guide


16 SOURCE CONTROL INTEGRATION<br />

Synchronizing Source Control Status<br />

set of SCC commands that select out only the project file itself are available<br />

from the File menu (File/Source Control/Project File Only) and the project<br />

node of the project tree. These commands operate the same as their counterparts<br />

for associated files do; the only difference is that they do not affect the<br />

associated files (scripts, custom include files, and data files). Such functionality<br />

is useful if, for example, you want to check in a project file without overwriting<br />

the associated script, custom include, and data files that are currently stored in<br />

the SCC.<br />

The project-file only commands that are available from the File menu (File/<br />

Source Control/Project File Only) and the project node of the project tree are:<br />

- Get Latest Version<br />

- Check Out<br />

- Check In<br />

- Undo Checkout<br />

- Add to Source Control<br />

Removing Source Control Linkage<br />

The Remove Source Control Linkage command is the reverse of the Add to<br />

Source Control command. This command clears all linkage information from<br />

the project file that connects the version of a file on your local disk with the<br />

version of the file in source control. This command is useful when working with<br />

files (possibly received from a customer or support staff) for which the<br />

associated source control system is not available.<br />

Note Source control linkage can be removed for complete projects<br />

only, not individual files.<br />

Procedure To remove source control linkage from a project:<br />

1 In the project tree, right-click the project node of a project that is under<br />

source control and select Remove Source Control Linkage (or select<br />

Source Control/Remove Source Control Linkage from the File menu).<br />

2 Click OK on the subsequent dialog, confirming your understanding that<br />

all source control connection data for the project will be lost.<br />

Synchronizing Source Control Status<br />

Under certain conditions, SilkPerformer may fall out of sync with source control<br />

systems due to the corruption of linkage information. For example, if one were<br />

to close SilkPerformer while SilkPerformer is loaded with a checked out file and<br />

SilkPerformer User Guide 303


16 SOURCE CONTROL INTEGRATION<br />

Known Issues and Workarounds<br />

then check in that same file via the SCC, SilkPerformer would not be aware that<br />

the file had been checked in. SilkPerformer’s Synchronize command looks at<br />

the check-in/check-out status of files in the source control system and updates<br />

the status of those files in SilkPerformer.<br />

Note This function can be applied to complete projects only, not<br />

individual files.<br />

Procedure To synchronize the source control status of a project:<br />

1 In the project tree, right-click the project node of a project that is under<br />

source control and select Synchronize (or select Source Control/<br />

Synchronize from the File menu).<br />

2 Click OK on the subsequent dialog, confirming your understanding that<br />

all source control connection data for the file will be lost.<br />

Known Issues and Workarounds<br />

SCC client's reconnect functionality is not supported<br />

Issue: When SilkPerformer projects and/or files are linked to a defined SCC<br />

directory, and the directory is changed via the SCC client, SilkPerformer does<br />

not reconnect to the new directory.<br />

Workaround: Remove the existing source control linkage (as explained in<br />

“Removing Source Control Linkage”) then add the affected projects/files to the<br />

new directory (as explained in “Placing Projects and Files Under Source<br />

Control”).<br />

Note It is generally not recommended to use SCC client<br />

functionality for maintaining linked SilkPerformer projects.<br />

MS VSS 8.0 requests username/password for each file check-in/check-out<br />

operation<br />

Issue: MS VSS 8.0 introduced a security setting that, when activated, requests<br />

the user to enter their username and password each time they check in or check<br />

out a file from VSS. This request also appears in SilkPerformer when<br />

performing file operations with VSS.<br />

Workaround: To disable MS VSS manual login:<br />

1 Open SourceSafe Administrator.<br />

2 Open the database where your SilkPerformer projects are saved.<br />

3 Select the Options command from the Tools menu (Tools/Options).<br />

4 Select the General tab.<br />

5 Check the Use network name for automatic user login checkbox.<br />

304 SilkPerformer User Guide


16 SOURCE CONTROL INTEGRATION<br />

Known Issues and Workarounds<br />

Note This procedure only works if the username in VSS is identical<br />

to the network username.<br />

SilkPerformer User Guide 305


16 SOURCE CONTROL INTEGRATION<br />

Known Issues and Workarounds<br />

306 SilkPerformer User Guide


17<br />

Other 17 Chapter<br />

Supported<br />

Environments<br />

Introduction<br />

What you will learn<br />

This chapter explains SilkPerformer’s support of other computing<br />

environments.<br />

This chapter contains the following sections:<br />

Section<br />

Page<br />

Overview 307<br />

Windows Vista 308<br />

Multibyte Support 308<br />

AJAX Support for Web Application Testing 311<br />

SAP eCATT Support 312<br />

Terminal Emulation Support 314<br />

GUI-Level Testing Support 317<br />

SilkPerformer Plug-In for Eclipse 325<br />

Remedy Support 333<br />

Adobe Flex AMF3 Support 337<br />

Customizing Oracle Applications 12i Scripts for Replay 349<br />

Overview<br />

SilkPerformer supports testing within a variety of computing environments.<br />

This chapter explains SilkPerformer’s support of Windows Vista, multibyte<br />

character sets, SAP eCATT, and terminal emulation, and more.<br />

SilkPerformer User Guide 307


17 OTHER SUPPORTED ENVIRONMENTS<br />

Windows Vista<br />

Windows Vista<br />

With Windows Vista, Microsoft encourages users to use standard user accounts<br />

for their daily work instead of administrator accounts. Several changes in<br />

privilege management have been made to make this possible. Microsoft is also<br />

educating users to follow the new paradigm by introducing User Account<br />

Control (UAC). It is the UAC’s task to inform users when an application leaves<br />

the standard user account privileges path and requires higher-level privileges,<br />

even when the user account already has the required privilege. For this reason,<br />

even administrators are prompted while performing tasks that require<br />

administrator privileges.<br />

More than ever before, software producers are encouraged to write Windows<br />

applications that require as few privileges as possible for normal operation.<br />

Although SilkPerformer does not require administrator privileges for most tasks<br />

during normal operation, there are some tasks that do need them:<br />

- Recording: SilkPerformer’s recording architecture requires that qaphooks.dll<br />

be copied into the Windows\system32 directory in order so that it will be in<br />

every application's .dll search path.<br />

- Working Directories: The Project, Custom Include, and Custom Data<br />

directories are located in the Program Files\<strong>Borland</strong>\... hierarchy. However,<br />

these directories can be configured from within SilkPerformer.<br />

- Automatic Agent launch via the launcher service.<br />

To provide a smooth workflow, SilkPerformer has integrated an application<br />

manifest that informs the system that it requires administrator privileges for<br />

normal operation.<br />

When SilkPerformer is launched on Windows Vista with the UAC enabled,<br />

users are informed that applications require administrator privileges. Once users<br />

opt to continue, they will no longer be interrupted by any OS-generated<br />

privilege-related SilkPerformer message.<br />

Without UAC enabled, SilkPerformer runs as usual without any interruptions<br />

from the system.<br />

Note With UAC enabled, Windows Vista can not be used as a<br />

SilkPerformer Agent machine.<br />

Multibyte Support<br />

Overview<br />

Unicode is a list off all known characters. It includes all alphabets of all spoken<br />

and unspoken languages. Each character has its own unique index in the<br />

Unicode list. The first 128 characters are known as ASCII characters.<br />

308 SilkPerformer User Guide


17 OTHER SUPPORTED ENVIRONMENTS<br />

Multibyte Support<br />

When data is stored or computed, the Unicode list is not used to represent the<br />

characters. Instead, so-called character encodings (or character sets) define how<br />

characters are represented on computers and within files. Numerous character<br />

sets are used throughout the world.<br />

Two of the more frequently-used character encodings that cover all Unicode<br />

characters are:<br />

• UTF-8: Requires 1-4 Bytes per character; this character set is widely<br />

used for international Web sites and international text representation.<br />

Strings in the Linux kernel and Java are encoded in UTF-8.<br />

• UTF-16: Requires 2 or 4 Bytes per character; this encoding is mainly<br />

used for string representation in the Windows NT kernel (Win NT and<br />

newer).<br />

Most character sets do not define a representation for all characters in the<br />

Unicode list. Rahter, they define a subset of characters that are used in a specific<br />

regional area of the world. These are commonly referred to as code pages (cp):<br />

• ASCII: Single Byte encoding: 1 Byte per character<br />

• Latin-1 (Windows Codepage 1252): Single Byte encoding: 1 Byte per<br />

character<br />

• Shift-JIS (Windows Codepage 932): Double Byte encoding: 1 or 2 Bytes<br />

per character<br />

• EUC-JP (Windows Codepage ): Includes 3 Japanese char sets: 1, 2, or 3<br />

Bytes per character<br />

When developing applications for Windows, programmers can choose between<br />

Unicode (UTF-16) string representation or Multi-Byte-Character-Set (MBCS)<br />

string representation. MBCS representation refers to a geographic regiondependent<br />

code page encoding (for example, Shift-JIS for Japan; LAtin-1 for the<br />

Americas and most European countries). This affects all GUI elements, as all<br />

data needs to be displayed in the same string representation that has been<br />

selected for the application.<br />

Mutlibyte support in<br />

SilkPerformer<br />

SilkPerformer is a MBCS-based application, meaning that to be displayed<br />

correctly, every string must be encoded in MBCS format. Because<br />

SilkPerformer, and particularly TrueLog Explorer, visualize and customize data<br />

that originates from Web servers with different encodings (UTF-8, EUC-JP,<br />

SilkPerformer User Guide 309


17 OTHER SUPPORTED ENVIRONMENTS<br />

Multibyte Support<br />

Example<br />

Codepage check<br />

Replaying the correct<br />

encoding<br />

ISO-8859-1, etc.), many string conversion operations may be involved before<br />

data can be displayed.<br />

Sometimes when testing UTF-8 encoded Web sites, data containing characters<br />

cannot be converted to the active Windows system codepage. In such cases,<br />

SilkPerformer’s Web Recorder scripts all non-convertible strings into hex<br />

format. If the data is only displayed, TrueLog Explorer will replace the nonconvertible<br />

characters with a configurable replacement character (usually '?').<br />

On an English Windows system with Japanese local settings (system codepage<br />

is Shift-JIS) a UTF-8 application is recorded. For some reason a link name on a<br />

particular Web page contains a Korean character. SilkPerformer’s Web Recorder<br />

attempts to convert the string from UTF-8 to Shift-JIS to make it readable in the<br />

script. The conversion fails because of the Korean character, which does not<br />

occur in the Shift-JIS code page. The Web Recorder then uses hex notation for<br />

the link name in the script.<br />

One of the most important things to know about SilkPerformer's multibyte<br />

support is that the system codepage of the recording machine must match the<br />

system codepage of the replay machine for the replay engine to correctly<br />

interpret the byte sequences in the script as characters and strings. Therefore<br />

SilkPerformer’s Web Recorder scripts the @codepage annotation into the script<br />

along with the currently active system codepage. Whenever this annotation is<br />

present in a script the SilkPerformer runtime system checks to see if the system<br />

codepage of the machine matches the one specified in the script. If they do not<br />

match the runtime stops and an appropriate error message is displayed.<br />

No matter which character encoding a Web site uses, SilkPerformer can only<br />

visualize MBCS strings. However, there are several API functions which<br />

require some string parameters to be encoded in the encoding that the server<br />

expects. So that replay engines can know the requried encoding, SilkPerformer’s<br />

Web Recorder scripts SetEncoding(), ToEncoding() and FromEncoding()<br />

functions at appropriate locations. Typically, those parameters that refer to data<br />

that needs to be interpreted by the server, require an appropriate encoding (for<br />

example, link names). Those parameters that are not a part of client/server<br />

communication do not require conversion (for example, timer names).<br />

The SetEncoding() function sets an encoding for all subsequent ToEncoding()<br />

and FromEncoding() functions. The encoding itself is passed as the name of the<br />

encoding as it appears in the charset specification of the Web page, for example<br />

"UTF-8", "SHIFT_JIS", "WINDOWS-1252", "WINDOWS-1255", or "EUC-<br />

JP".<br />

ToEncoding() converts the string that is passed as a parameter, which is encoded<br />

in the system codepage (MBCS), to the encoding specified by the last<br />

SetEncoding() function.<br />

FromEncoding() converts the string that is passed as a parameter, which is<br />

encoded in the encoding specified by the last SetEncoding() call, to the system<br />

codepage (MBCS).<br />

310 SilkPerformer User Guide


17 OTHER SUPPORTED ENVIRONMENTS<br />

AJAX Support for Web Application Testing<br />

Copying & pasting<br />

When copying strings into SilkPerformer, the paste operation checks if the data:<br />

• Needs to be converted<br />

• Can be converted to the MBCS (system codepage)<br />

• Can not be converted and so needs to be opened with SilkPerformer’s<br />

Unicode Text/Hex Editor<br />

If copied data is, for example, UTF-8 encoded and the paste operation fails to<br />

convert it to the system codepage, SilkPerformer launches its Unicode Text/Hex<br />

Editor. The tool is a Unicode application and is therefore able to display any<br />

string, regardless if the characters exist in the system codepage. The editor can<br />

also display the hex notation of strings in order to paste them into a BDL script.<br />

AJAX Support for Web Application Testing<br />

The SilkPerformer Recorder can record and replay Web applications that utilize<br />

AJAX (Asynchronous JavaScript and XML) requests. This is possible because<br />

SilkPerformer can recognize asynchronous AJAX requests and responses that<br />

arrive in the form of either XML or JSON within HTML responses.<br />

SilkPerformer scripts AJAX requests that it encounters as WebPageUrl calls.<br />

Understanding AJAX<br />

AJAX and script<br />

customization<br />

Pretty-formatted JSON<br />

and XML data<br />

According to Wikipedia (see www.wikipedia.com), AJAX is “...a group of<br />

inter-related web development techniques used for creating interactive web<br />

applications. A primary characteristic is the increased responsiveness and<br />

interactivity of web pages achieved by exchanging small amounts of data with<br />

the server "behind the scenes" so that entire web pages do not have to be<br />

reloaded each time there is a need to fetch data from the server. This is intended<br />

to increase the web page's interactivity, speed, functionality, and usability.<br />

AJAX is asynchronous; in that extra data is requested from the server and<br />

loaded in the background without interfering with the display and behavior of<br />

the existing page. JavaScript is the scripting language in which AJAX function<br />

calls are usually made. Data is retrieved using the XMLHttpRequest object that<br />

is available to scripting languages run in modern browsers, or alternatively<br />

Remote Scripting in browsers that do not support XMLHttpRequest. There is,<br />

however, no requirement that the asynchronous content be formatted in XML.”<br />

SilkPerformer and TrueLog Explorer support access to values values within<br />

AJAX requests. This enables script customizations such as input data<br />

parameterization, verification, parsing, and session-information customization<br />

within AJAX responses.<br />

JSON and XML are data-structure formats commonly used in AJAX<br />

applications, REST techniques, and other environments. SilkPerformer supports<br />

pretty-formatted viewing of XML and JSON-formatted byte streams in .bdf<br />

scripts. Enhanced rendering of JSON formatted data enables easier<br />

SilkPerformer User Guide 311


17 OTHER SUPPORTED ENVIRONMENTS<br />

SAP eCATT Support<br />

Understanding JSON<br />

Enabling prettyformatted<br />

JSON and<br />

XML viewing<br />

Formatted JSON and<br />

XML data in Truelog<br />

Explorer<br />

customization of string values via TrueLog Explorer’s string customization<br />

functions.<br />

When JSON-formatted data is recorded or inserted into a .bdf script,<br />

SilkPerformer displays the raw JSON byte stream. Once displayed in JSON<br />

format, XML can easily be customized using SilkPerformer’s Parameter<br />

Wizard.<br />

Note SilkPerformer offers the option of viewing JSON data in either<br />

pretty-formatted JSON-renderng view or as raw JSON byte stream.<br />

According to JSON.org (see www.json.org), “JSON (JavaScript Object<br />

Notation) is a lightweight data-interchange format. It is easy for humans to read<br />

and write. It is easy for machines to parse and generate. It is based on a subset of<br />

the JavaScript Programming Language...” “JSON is a text format that is<br />

completely language independent but uses conventions that are familiar to<br />

programmers of the C-family of languages, including C, C++, C#, Java,<br />

JavaScript, Perl, Python, and many others. These properties make JSON an<br />

ideal data-interchange language.”<br />

Procedure To pretty-format JSON and XML data:<br />

1 Within a .bdf script that includes JSON- or XML-formatted data, rightclick<br />

within the screen data that you want to have rendered for enhanced<br />

viewing.<br />

2 Select Format As / JSON or Render As / XML from the context menu to<br />

pretty-format the data.<br />

You can then right-click formatted data strings to access SilkPerformer’s<br />

standard string customization commands.<br />

Alternative Select Auto Format from the context menu to have<br />

SilkPerformer determine the best formatting option for screen data<br />

types. By default, JSON and XML data is pretty-formatted in your<br />

.bdf scripts.<br />

Note Because formatted JSON data is integrated into the<br />

SilkPerformer code editor, JSON-formatting can be undone/redone<br />

using the Undo/Redo buttons on the toolbar.<br />

Pretty-formatted JSON and XML data viewing is also available in Silk TrueLog<br />

Explorer. See Silk TrueLog Explorer help for full details.<br />

SAP eCATT Support<br />

SAP eCATT has been integrated with SilkPerformer. SAP’s eCATT facility<br />

allows you to create test scripts in SAP using the scripting language of your<br />

312 SilkPerformer User Guide


17 OTHER SUPPORTED ENVIRONMENTS<br />

SAP eCATT Support<br />

Configuring a SAP<br />

eCATT Connection<br />

choice. eCATT allows you to use external test tools (i.e., SilkPerformer) while<br />

utilizing eCATT as a repository for your test scripts. eCATT also serves as a<br />

basic test management solution for triggering script executions. Not only can<br />

both internal and external scripts be executed individually, they can also be<br />

combined and executed in sequence.<br />

eCATT offers import arguments, a mechanism for calling scripts with special<br />

input values. Scripts can not only receive input values, scripts can also set output<br />

values when they are executed—scripts can be executed in sequence, using<br />

input values derived from the output values of earlier script executions.<br />

For full details regarding SilkPerformer’s integration with SAP eCATT, please<br />

refer to the SAPGUI Tutorial. For more information regarding eCATT, please<br />

consult SAP documentation.<br />

Connection details for SilkPerformer’s communication with SAP eCATT must<br />

be specified in SilkPerformer system settings. There are two options for<br />

connecting to SAP: you can either specify a ‘SAPLOGONID’ or you can<br />

specify ‘AS Host’, ‘RFC Type’, and ‘SystemNr’ settings. With either option you<br />

must specify client, language, username, and password details. Note that when<br />

you select a SAPLOGONID the AS Host, RFC Type, and SystemNr fields are<br />

grayed out.<br />

Procedure To specify SAP eCATT connection data:<br />

1 Select the System command from SilkPerformer’s Settings menu.<br />

2 On the System Settings - Workbench dialog, select the SAPGUI group<br />

icon.<br />

3 The eCATT Connection tab is selected by default. From the SAPLogon<br />

drop box, select your SAP login ID. This box is preconfigured with all<br />

available SAP login IDs.<br />

4 In the AS Host field, enter the combined router/application-server string<br />

(e.g., H/195.61.176.22/H/194.117.106.130/S/3297/H/cpce801).<br />

5 In the RFC Type field, enter either ‘3’ (for R/3) or ‘2’ (for R/2).<br />

6 In the System NR field, enter the SAP system number.<br />

7 In the Client field, enter the internal client ID number from the SAP<br />

server (i.e., the value that must be entered on the SAP login screen).<br />

8 From the Language drop box, select your language preference. The<br />

values ‘EN’ (English) and ‘DE’ (German) are preconfigured, though you<br />

can specify any other language abbreviation string if that language is<br />

installed on the SAP system.<br />

9 In the Username field, enter your SAP eCATT username.<br />

10 In the Password field, enter your SAP eCATT password.<br />

SilkPerformer User Guide 313


17 OTHER SUPPORTED ENVIRONMENTS<br />

Terminal Emulation Support<br />

Configuring eCATT<br />

extended results<br />

11 Once you have completed this dialog, click Test Connection to confirm<br />

that you have specified accurate connection details. If your connection<br />

attempt is unsuccessful, please confirm your settings.<br />

12 Click the OK button once you have completed configuring SAP eCATT<br />

connection settings.<br />

To enable the viewing of SilkPerformer result files from within SAPGUI, you<br />

can specify a UNC path to a public file share in which extended SilkPerformer<br />

test results can be stored and accessed by users (e.g., \\fileserver\ecattresults).<br />

SilkPerformer will use the specified directory to store the results of<br />

SilkPerformer test executions initiated via SAP eCATT. Users can easily access<br />

test results by clicking a link in the SAP eCATT GUI.<br />

Procedure To configure eCATT extended results:<br />

1 Select the System command from SilkPerformer’s Settings menu.<br />

2 On the System Settings – Workbench dialog, select the SAPGUI group<br />

icon.<br />

3 Select the eCATT Results tab.<br />

4 Select the Use SAP extended results checkbox.<br />

5 In the SAP extended results directory field, browse to and select the<br />

directory that is to be used for SAP extended results.<br />

6 Click OK to save your settings.<br />

Terminal Emulation Support<br />

Testing IBM<br />

mainframe protocols<br />

SilkPerformer’s support for terminal emulation applications enables the<br />

recording of terminal-emulator traffic based on the Telnet protocol (aka “green<br />

screen” applications). Supported terminal types include VT100, VT200 etc.<br />

(UNIX, IBM AS400) and IBM mainframes accessed via TN3270(E) &<br />

TN5250.<br />

A prerequisite for recording terminal-emulator traffic is an installed terminalemulator<br />

for accessing host applications, while the recorder records the telnet<br />

traffic which results. Many such emulators are available on the market (e.g.,<br />

Rumba).<br />

The Host Screen Info tab of terminal emulation TrueLogs offers controls for all<br />

fields and statuses that appear in recorded and replayed screens. These controls<br />

offer easy access to field-value and value-status parsing/verification functions.<br />

See TrueLog Explorer User Guide for details on available parsing and<br />

verification script-customization functions.<br />

314 SilkPerformer User Guide


17 OTHER SUPPORTED ENVIRONMENTS<br />

Terminal Emulation Support<br />

IBM terminals rely on EBCDIC code pages that vary based on locality.<br />

SilkPerformer chooses an EBCDIC code page among the code pages installed<br />

on the system. If national language characters are not displayed correctly it is<br />

possible to change the code page during project configuration. See Creating a<br />

SilkPerformer Project for details.<br />

IBM code pages control translation of human-readable ASCII input data (e.g.,<br />

search parameters) into and out of binary hexadecimal representation. This<br />

translation process facilitates script customization.<br />

Creating a terminal<br />

emulation project<br />

Configuring profile<br />

settings<br />

Procedure To create a terminal emulation load testing project:<br />

1 Click the Start Here button on SilkPerformer’s Workflow bar.<br />

2 On the Workflow – Outline Project dialog, define a name and optional<br />

description for your project.<br />

3 Expand the Terminal Emulation application type node.<br />

4 Select the appropriate terminal type subnode.<br />

5 Click OK.<br />

Before beginning recording, you must configure profile settings for the<br />

recording of terminal emulation applications via terminal emulators.<br />

1 Select the Active Profile command from SilkPerformer’s Settings menu<br />

to open the Profile dialog.<br />

2 From the Record group tab (as these settings are only relevant to<br />

application recording) select the Terminal Client icon to open the Telnet<br />

tab.<br />

3 In the Telnet Settings portion of the dialog, ensure that the Auto-detect<br />

Telnet-mode radio button is selected (the other two options are for<br />

trouble-shooting purposes).<br />

4 In the Terminal Properties area, ensure that the specific terminal type<br />

you are testing is displayed in the Terminal type drop-list box (this<br />

setting was configured automatically when you selected the application<br />

type for the project).<br />

Note If you select a new terminal type on this dialog, you might be<br />

presented with a dialog telling you that the default host code page<br />

has been changed, and with a dialog telling you that the default<br />

terminal configuration string has changed. Click Yes on these<br />

dialogs.<br />

5 Although the default dimensions (Rows and Columns) and Colors of the<br />

terminal type are detected automatically for recording, if required you<br />

can define these settings manually in the Default dimensions portion of<br />

the dialog.<br />

SilkPerformer User Guide 315


17 OTHER SUPPORTED ENVIRONMENTS<br />

Terminal Emulation Support<br />

Setting up an<br />

application profile<br />

Recording terminal<br />

emulation applications<br />

6 Ensure that the required host code page is displayed in the Host code<br />

page drop-list box, if the preselected value default isn’t suitable (this<br />

setting was configured automatically when you selected the application<br />

type for the project).<br />

Note The Host code page drop-list box includes all code pages that<br />

are both installed and enabled. To review all installed code pages, or<br />

to enable a specific code page, go to Start/Control Panel/Regional<br />

and Language Options/Advanced. Only those host code pages that<br />

are listed and enabled with a checkmark are available.<br />

Procedure To set up an application profile to record a terminal emulator:<br />

1 Select System from SilkPerformer’s Settings menu.<br />

2 Click the Recorder icon.<br />

3 Click the Add button.<br />

4 On the Application Profile dialog, give the profile a name in the<br />

Application profile field.<br />

5 For the Application path field, browse to and select the .exe file of the<br />

terminal emulator on your local system.<br />

Note All other settings on this dialog are standard for all TCP/IP<br />

based applications.<br />

6 Select Custom Application as the Application type.<br />

7 Select the TCP/IP protocol checkbox (note that SilkPerformer’s TCP/IPlevel<br />

API has been enhanced to facilitate terminal emulation application<br />

support).<br />

8 Click OK. The new profile now appears in the Application Profiles tab.<br />

Procedure To record a terminal emulation application:<br />

1 Click the Model Script button on SilkPerformer’s Workflow bar to open<br />

the Model Script dialog.<br />

2 From the Select application profile drop-list box, select your newly<br />

created application profile (as explained in “Setting up an application<br />

profile”).<br />

3 Click OK to begin recording the session.<br />

4 Perform required interactions with the application under test. When<br />

recording is complete, close the application and then close the recorder<br />

and save the test script.<br />

316 SilkPerformer User Guide


17 OTHER SUPPORTED ENVIRONMENTS<br />

GUI-Level Testing Support<br />

5 To confirm that your test script runs as expected, execute a TryScript run<br />

in animated mode; you will then be able to view the results of the test run<br />

in TrueLog Explorer. Please see TrueLog Explorer User Guide for details<br />

about working with terminal emulation application TrueLogs.<br />

Session customization of terminal emulation application test scripts is normally<br />

not required. If session customizations are required, they must be partly<br />

performed manually. However, TrueLog Explorer can be used to insert parsing<br />

functions into test scripts.<br />

In some cases the synchronization between replay and host application may not<br />

work well, for example if the requested screen is not complete but the cursor<br />

position already assumes a completed screen. A recorded cursor<br />

synchronization function in the script will be satisfied with the first portion of<br />

the screen and continues executing the script out of synchronization, which may<br />

lead to replay errors. In this case you would have to replace the recorded<br />

synchronization function(s) manually with a more suitable synchronization<br />

function in the script (e.g., WebTcpipRecvPacketsUntilDataor<br />

WebTelnetRecvRecordsUntilData). See the BDL Function Reference for<br />

function descriptions.<br />

GUI-Level Testing Support<br />

SilkPerformer supports GUI-level load testing (load testing of fat-client<br />

applications). To load test these applications, SilkPerformer uses Windows<br />

Terminal Services to connect to and open client sessions on agent computers.<br />

Via its own session manager, SilkPerformer uses SilkTest, <strong>Borland</strong>’s functional<br />

testing tool, to communicate with and control sessions (SilkTest likewise<br />

communicates with SilkPerformer via the session manager). SilkTest launches<br />

clients, runs GUI-level tests, and communicates results back to SilkPerformer<br />

via the session manager (see “Exploring SilkTest Results”). SilkPerformer<br />

ultimately collects the results and makes them available to end-users.<br />

A GUI-level testing session is opened through the Remote Desktop protocol.<br />

This connection is established without a GUI. See “Configuring Windows” for<br />

pre-requisite information. Virtual users rely on OrbServer/Client to connect to<br />

remote sessions. SilkPerformer’s session manager is used as a proxy between<br />

virtual users and SilkTest. The session manager includes an Orb client that<br />

receives and sends Data to SilkPerformer virtual users and an Orb Server that<br />

forwards requests to SilkTest, and reverses the reply data to the Orb Clients.<br />

SilkTest can be started in local host mode. With this approach, virtual users use a<br />

console session rather than a separate Windows session. See “GUI-Level<br />

Testing options” for details.<br />

SilkPerformer User Guide 317


17 OTHER SUPPORTED ENVIRONMENTS<br />

GUI-Level Testing Support<br />

Note GUI-level testing only works on Windows server edition<br />

platforms. Windows Home or Professional editions can only be used<br />

as agents for a single GUI-level testing VUser (see also “GUI-Level<br />

Testing options” for information on agent configuration).<br />

Functions provided by<br />

SilkPerformer<br />

SilkPerformer provides the following functions for SilkTest GUI-level testing<br />

replay (see also BDL Functions Reference):<br />

StInitSession<br />

StInitSession(in sUser : string optional,<br />

in sPassword : string optional) : boolean;<br />

Initializes a connection to a session or starts the Session Manager on the<br />

localhost. It also launches SilkTest. If sUser or sPassword are null in the<br />

StInitSession, the VUser will look up the profile setting. If username and<br />

password values have been set in the profile settings, they will be used.<br />

Refer to “Specifying user credentials” for detailed information.<br />

StSetExecutionTimeOut<br />

StSetExecutionTimeOut(in nTimeOut : number);<br />

Sets a timeout for SilkPerformer to wait for the end of each testcase<br />

execution. The default timeout is 300 seconds. To define an unlimited<br />

timeout, set the timeout value to ’0’.<br />

StSetConnectionTimeOut<br />

StSetConnectionTimeOut(in nTimeOut : number);<br />

Sets the timeout for waiting for a session to respond to SilkPerformer. If<br />

the timeout is reached, no session is established. The default timeout is 50<br />

seconds. To define an unlimited timeout, set the timeout value to ’0’.<br />

Table 29: GUI-level testing functions<br />

318 SilkPerformer User Guide


17 OTHER SUPPORTED ENVIRONMENTS<br />

GUI-Level Testing Support<br />

StExecuteTestcase<br />

StExecuteTestcase(in sScript : string,<br />

in sTestCase : string, in sTestData : string,<br />

in nTimer : string) : boolean;<br />

This function starts the process of performing a full test in an alternate<br />

session. The user decides if TryScript runs of the testcase are run on the<br />

console or within a session. Sessions require a username and password<br />

(these values should be provided to the StInitSession). If the username and<br />

password are null, this function executes SilkTest on the localhost. If the<br />

username and the password are not specified and the user tries to run more<br />

than one VUser, the process will be stopped because it is not possible to<br />

run more than one VUser on a local host. Refer to “Specifying user<br />

credentials” for detailed information.<br />

Note StExecuteTestcase returns True when a testcase is<br />

complete. Returned values do not indicate the success of<br />

testcases themselves. Testcase related errors are not handled at<br />

this level.<br />

SilkTest’s execution mode is retrieved through the extension of the script<br />

file.<br />

“.t” Execution Mode: SilkTest Script<br />

“.g.t” Execution Mode: Data Driven SilkTest<br />

“.pln” Execution Mode: SilkTest Plan (not yet implemented by SilkTest)<br />

If the path to the script file is relative, the script must be added to the data<br />

files of the project, or the working directory must be set.<br />

When using StExecuteTestcase in combination with StLoadProject (see<br />

below), the script file needs not be added to the data files of the project, but<br />

the relative path of the script file within the SilkTest package must be<br />

specified.<br />

StSetOption<br />

StSetOption(in sOption : string, in sValue : string)<br />

: boolean;<br />

Sets SilkTest options.<br />

Table 29: GUI-level testing functions<br />

SilkPerformer User Guide 319


17 OTHER SUPPORTED ENVIRONMENTS<br />

GUI-Level Testing Support<br />

StLoadProject<br />

StLoadProject(in sProject : string) : boolean;<br />

Sets specific environmental values that are required for replaying<br />

testcases. Only SilkTest packages can be loaded with this function (.stp<br />

files), and the packages may not be password-protected.<br />

If the path to the SilkTest package is relative, the package must be added to<br />

the data files of the project.<br />

StResetSilktest<br />

StResetSilkTest(in bResetConnection : boolean<br />

optional) : boolean;<br />

Restarts SilkTest; or shuts down SilkTest, disconnects from the session,<br />

and starts a new session where SilkTest is running<br />

(bDisconnect = VTRUE).<br />

StLogoffSession<br />

StLogoffSession();<br />

Disconnects from the session.<br />

Table 29: GUI-level testing functions<br />

Configuring Windows<br />

Before executing GUI-level testing with SilkPerformer, you must configure<br />

your Windows operating system. Additionally, SilkTest version 2006 R2 or<br />

higher needs to be installed on the agent computer (please refer to the SilkTest<br />

documentation for detailed information about setting up SilkTest).<br />

Procedure To configure Windows for GUI-level testing:<br />

1 Go to Start/.../Control Panel/System.<br />

2 Select the Remote tab.<br />

3 Verify that the Enable Remote Desktop on this computer option is<br />

enabled.<br />

4 Go to Start/.../Administrative Tools/Computer Management.<br />

5 Expand the tree and select Local Users and Groups.<br />

6 Select the Users directory.<br />

7 In the User field, double-click the virtual user that you want to use in<br />

your test.<br />

8 On the Properties dialog, select the Member Of tab.<br />

320 SilkPerformer User Guide


17 OTHER SUPPORTED ENVIRONMENTS<br />

GUI-Level Testing Support<br />

9 Ensure that this user is a member of one of the following two groups:<br />

Administrators and/or Remote Desktop Users (if the user is not a member<br />

of one of these groups, click the Add button and add the user to one or<br />

both of these groups).<br />

Licenses for remote<br />

desktop sessions<br />

Windows Server editions offer multiple licenses for remote desktop sessions,<br />

which means that you can connect multiple times during a single session.<br />

Note Windows Server editions offer two free licenses for remote<br />

desktop sessions. Windows Home or Professional editions can only<br />

be used as agents for a single GUI-level testing VUser (see also<br />

“GUI-Level Testing options” for information on agent configuration).<br />

Procedure To obtain more licences for Windows Server editions:<br />

1 Go to Start/.../Control Panel/Add or Remove Programs.<br />

2 Click the Add/Remove Windows Components button.<br />

3 Within the Windows Components Wizard, scroll to and select the<br />

Terminal Server checkbox.<br />

4 Click Next to enable application mode for your Windows system.<br />

Note A license server is required for application mode. Contact<br />

Microsoft for information about obtaining a license server.<br />

5 Restart your computer.<br />

Configuring Terminal<br />

Services settings<br />

Procedure To see how many sessions are available on your system:<br />

1 Go to Start/.../Administrative Tools/Terminal Server Licensing.<br />

2 Using the Terminal Server Licensing tool you can see which terminal<br />

services licensing servers are available and which licenses you have.<br />

3 For additional information about using the Terminal Server Licensing<br />

tool, please refer to the integrated Help of the tool.<br />

It is important to configure your terminal services settings correctly, otherwise<br />

GUI-level test execution is likely to fail.<br />

Procedure To configure your RDP settings:<br />

1 Go to Start/.../Administrative Tools/Terminal Services Configuration.<br />

2 Right-click the Remote Desktop Protocol-TCP (RDP-Tcp) icon.<br />

3 Select Properties from the context menu.<br />

4 Select the General tab.<br />

- Verify that Security layer is set to RDP Security Layer.<br />

- Verify that Encryption level is set to Low.<br />

SilkPerformer User Guide 321


17 OTHER SUPPORTED ENVIRONMENTS<br />

GUI-Level Testing Support<br />

- Verify that all other settings are unselected/left blank.<br />

5 Select the Logon Settings tab.<br />

- Verify that the Always prompt for password check box is not<br />

selected.<br />

6 Select the Sessions tab.<br />

- Verify that Override user settings is selected and that End a<br />

disconnected session is set to 1 minute.<br />

- Verify that all other settings are unselected/left blank.<br />

7 Select the Environment tab.<br />

- Verify that Run initial program specified by user profile and Remote<br />

Desktop Connection or Terminal Services client is selected.<br />

8 Select the Remote Control tab.<br />

- Verify that Use remote control with default user settings is selected.<br />

9 Select the Client Settings tab.<br />

- Verify that all connection settings in the Connection section are<br />

selected.<br />

10 Select the Network Adapter tab.<br />

- Verify that All Network adapters configured with this protocol is<br />

selected in the Network adapter list.<br />

11 Click OK.<br />

Terminal Services<br />

Manager<br />

Procedure To configure Terminal Services settings:<br />

1 Go to Start/.../Administrative Tools/Terminal Services Configuration.<br />

2 Select the Server Settings folder.<br />

3 Right-click any settings icon in the Server Settings directory.<br />

4 Select Properties from the context menu and configure settings as<br />

required. For additional information about using the Terminal Services<br />

Configuration tool, please refer to the integrated Help of the tool.<br />

Note Typically Licensing settings should be set to Per Device and<br />

the Restrict each user to one session setting should be set to No.<br />

With the Terminal Services Manager tool you can see which connections are<br />

open to your computer. Here you can see the control application (“Console”)<br />

denoted with an ID number. You can also see any virtual user connections<br />

(denoted with different IDs). For additional information about using the<br />

Terminal Services Manager tool, please refer to the integrated Help of the<br />

tool.<br />

322 SilkPerformer User Guide


17 OTHER SUPPORTED ENVIRONMENTS<br />

GUI-Level Testing Support<br />

Note No configuration settings are necessary to enable GUI-level<br />

testing with SilkPerformer.<br />

Executing Tests<br />

Setting up projects<br />

Modeling scripts<br />

Procedure To setup a GUI-level testing project:<br />

1 Select New Project from the File menu.<br />

2 Enter a Project Name.<br />

3 (Optional) Enter a Project Description.<br />

4 From the Application Type list box, select GUI-Level Testing/SilkTest.<br />

5 Click OK.<br />

Procedure To model a testing script based on a SilkTest test case:<br />

1 Click the Model Script button.<br />

2 Select the Generate custom script radio button.<br />

Alternative Select the New Script radio button if you intend to<br />

model a testing script based on SilkPerformer’s GUI-level testing<br />

template file. Then, manually edit the file’s BDL code to meet your<br />

needs.<br />

Note You can specify a SilkTest option file from the Select SilkTest<br />

option file field by clicking the field’s browse (...) button and<br />

selecting an option file. Option files are .opt files that contain all<br />

SilkTest project options. These are the same option settings that are<br />

available in SilkPerformer’s GUI-Level Testing profile settings (see<br />

“Configuring project settings” for details). To edit a SilkTest options<br />

file, right-click the file in the Include Files node of TrueLog<br />

Explorer’s project tree. See the Silk TrueLog Explorer for SilkTest User<br />

Guide for full details.<br />

3 The Add Testcase dialog appears.<br />

4 Select the Open a SilkTest test case file radio button if you plan to create<br />

a test case directly from a test case file.<br />

Alternative If a test case file you intend to work with is located<br />

within a SilkTest package file, select the Open a SilkTest package<br />

file radio button. Then browse to and select the package file (.stp)<br />

using the browse (...) button next to the Select SilkTest package file<br />

field.<br />

SilkPerformer User Guide 323


17 OTHER SUPPORTED ENVIRONMENTS<br />

GUI-Level Testing Support<br />

5 Use the Browse (...) button next to the Select test case file field to browse<br />

for a test case file (.t) on your local system.<br />

6 Select a specific test case within the test case file by selecting it in the<br />

Select test case drop-down list box.<br />

7 (optional) You can add SilkTest test data to the selected test case, if<br />

required. Enter test data into the Test data field using the format “”, (For example, "test", 10).<br />

8 Click the Add button. The selected test case appears below in the Case<br />

field.<br />

9 Add more test cases to your project as required by repeating this<br />

procedure.<br />

10 Select the Use project attributes for session login checkbox to have<br />

username/password strings taken from SilkPerformer’s pre-configured<br />

project attributes (available at Project/Project Attributes) to enable login<br />

for remote desktop sessions. These credentials will be added to your<br />

script’s TInit transaction.<br />

11 Click OK.<br />

12 Give the test case a File name.<br />

13 Click Save to save the test case.<br />

14 Click Yes on the confirmation dialog to save the test case (.bdf ) to your<br />

project. A BDL file that includes your newly created test case will be<br />

generated for your project.<br />

Configuring project<br />

settings<br />

Specifying user<br />

credentials<br />

To configure GUI-level testing profile settings, please refer to “GUI-Level<br />

Testing options”.<br />

User credentials for GUI-level testing can be specified in the following areas:<br />

• Profile settings (see “GUI-Level Testing options”)<br />

• Project attributes (Username and Password project attributes are<br />

automatically defined when creating a GUI-level testing project)<br />

• Plain text specified in the BDL script<br />

• Imported from data files<br />

If you want each VUser to connect with different login credentials, we<br />

recommend that you specify the credentials with project attributes (see Project<br />

Attributes Overview in the BDL Function Reference for detailed information) or<br />

that you use script customization through data files (see “Data Files” for<br />

detailed information).<br />

If you want each VUser to connect with identical login credentials, we<br />

recommend that you specify the credentials in the profile settings (see “GUI-<br />

324 SilkPerformer User Guide


17 OTHER SUPPORTED ENVIRONMENTS<br />

SilkPerformer Plug-In for Eclipse<br />

Using timers<br />

Understanding result<br />

files<br />

Exploring SilkTest<br />

Results<br />

Level Testing options”) or that you specify the credentials with plain text in the<br />

BDL script (see BDL Function Reference).<br />

Note that the user credentials specified in the profile settings are used only if the<br />

other options listed above are not used. If no user credentials are specified in any<br />

of the areas listed above, SilkPerformer connects to the console session without<br />

using the remote desktop protocol. In this case you can only run one VUser per<br />

agent.<br />

For GUI-level load testing, timers are of core importance. You can add timers in<br />

your SilkTest scripts which will be reported to SilkPerformer’s load test results.<br />

See the SilkTest documentation for detailed information on how to create timers<br />

within SilkTest scripts.<br />

Note SilkPerformer automatically generates names for SilkTest<br />

timers without a name.<br />

You can find the most recent TryScript TrueLog files in the RecentTryScriptTest<br />

directory within your SilkPerformer project directory. During GUI-level testing<br />

load tests, temporary SilkTest TrueLog files with the extension .xlgs are written.<br />

After each SilkTest test case execution, the results of the SilkTest .xlgs and the<br />

results of the SilkPerformer .xlg files are merged into the SilkPerformer .xlg files<br />

(per VUser) and the temporary .xlgs files are deleted.<br />

The RecentTryScriptTest directory within your SilkPerformer project directory<br />

also includes SilkTest .res result files. These are the files that are displayed in<br />

SilkTest when you initiate the Explore SilkTest results command (as explained in<br />

“Exploring SilkTest Results”).<br />

Procedure To explore GUI-level test results:<br />

1 Within SilkPerformer, right-click a virtual user profile.<br />

2 Select Explore SilkTest Results from the context menu. SilkTest<br />

launches, allowing you to analyze the corresponding .res SilkTest result<br />

file.<br />

Alternative You can also select Explore TrueLog from the context<br />

menu to view a TryScript’s TrueLog in Silk TrueLog Explorer.<br />

Alternative Select the Results tab to view test results directly in<br />

SilkPerformer (see “Exploring Test Results” for detaild<br />

information).<br />

SilkPerformer Plug-In for Eclipse<br />

SilkPerformer is packaged with a plug-in for Eclipse, the popular Java IDE that<br />

is based on plug-in technology. The plug-in enables Eclipse users to be<br />

supported with SilkPerformer’s load-testing features.<br />

SilkPerformer User Guide 325


17 OTHER SUPPORTED ENVIRONMENTS<br />

SilkPerformer Plug-In for Eclipse<br />

Structure of the<br />

SilkPerformer<br />

TestClass<br />

Installing the plug-in<br />

The structure of the SilkPerformer test class supports Java developers in<br />

creating test cases for SilkPerformer. The test class implements the ITestClass<br />

interface that is packaged with the Eclipse plug-in. It contains a SilkPerformer<br />

object that represents the interface to SilkPerformer’s Java Framework.<br />

The test class includes two basic methods:<br />

testInit - This method initializes the interface. It is called at the beginning of test<br />

runs.<br />

testEnd - This method closes the interface. It is called at the end of TryScript<br />

runs and load tests.<br />

Between testInit and testEnd there may be one or more test methods invoked by<br />

a running load test. Each method that has a signature void testXY() throws<br />

SilkPerformerException.<br />

Example:<br />

public void testMyMethod() throws<br />

silk.performer.SilkPerformerException<br />

To use the plug-in, you must have Eclipse SDK (version 3.2 or higher) and<br />

SilkPerformer (version 2006 R2 or higher) installed on the machine where the<br />

plug-in is to run. Additionally, SilkPerformer must have been run on the<br />

machine at least once.<br />

Procedure To install the SilkPerformer plug-in for Eclipse:<br />

1 Using the standard procedure for installing Eclipse plug-ins, go to the<br />

Eclipse SDK’s Help menu, select Software Updates/Find and Install.<br />

2 Select the Search for new features to install option button.<br />

3 Click Next.<br />

4 On the Update sites to visit page, you must specify the site that contains<br />

your SilkPerformer Extras folder.<br />

Note The Extras folder is located on your SilkPerformer Installation<br />

CD. If you have used the Web setup package rather than an<br />

installation CD, the Extras folder is located in the folder where you<br />

extracted the package to.<br />

5 Click New Local Site.<br />

6 On the Browse for Folder page, browse to and select the Eclipse Plug-in<br />

directory in your SilkPerformer Extras directory (.../Extras/Eclipse<br />

Plugin/).<br />

7 Click OK.<br />

8 Click OK on the Edit Local Site dialog to confirm your directory<br />

selection. The directory now appears in the Sites to include in search<br />

pick list.<br />

326 SilkPerformer User Guide


17 OTHER SUPPORTED ENVIRONMENTS<br />

SilkPerformer Plug-In for Eclipse<br />

Configuring the plugin<br />

9 Select the checkbox of your newly defined local site (.../Extras/Eclipse<br />

Plugin/) and click Finish.<br />

10 On the Search Results page, click the plus sign of the new local site to<br />

expand its contents.<br />

11 Select the checkbox of the plug-in feature (SilkPerformer Feature).<br />

12 Click Next.<br />

13 A license description appears on the Feature License page. If you agree<br />

to the terms of the license agreement, select the I accept the terms in the<br />

license agreement option box.<br />

14 Click Next.<br />

15 On the Installation window, click Finish.<br />

16 Verify the features you are about to install (listed on the Feature<br />

Verification window) and click Install.<br />

17 On the Install/Update dialog, click Yes to restart the Eclipse Workbench.<br />

18 Upon restart, a SilkPerformer menu entry will appear in the Eclipse<br />

workbench.<br />

Procedure To configure Eclipse settings for the plug-in:<br />

1 Go to Window/Preferences.<br />

2 Select the SilkPerformer node on the navigation tree to display<br />

SilkPerformer settings.<br />

3 Confirm that the installation directory of your SilkPerformer installation<br />

is listed in the Install directory text box. If it is not listed, click Browse to<br />

browse for and select your SilkPerformer installation directory.<br />

4 Edit the Default project name as required.<br />

5 Edit the Default test class name as required.<br />

6 (experienced users only) Edit the default Timeout for connecting to Java<br />

debugger setting as required. This is the amount of time allowed (in<br />

milliseconds) for connecting to a SilkPerformer process during tests.<br />

7 (experienced users only) Edit the default Shutdown after finish delay<br />

setting as required. This is the amount of time (in milliseconds) that<br />

Eclipse waits before retrieving results after the completion of<br />

SilkPerformer tests.<br />

8 Select the Autostart monitoring checkbox to have Performance Explorer<br />

begin server monitoring when SilkPerformer tests are initiated.<br />

SilkPerformer User Guide 327


17 OTHER SUPPORTED ENVIRONMENTS<br />

SilkPerformer Plug-In for Eclipse<br />

9 Select a Log Level to specify when logs are to be written. Selecting<br />

‘None’ results in no log files being written. Selecting ‘Errors’ results in<br />

log files being written only when errors are encountered. Selecting<br />

‘Debug’ results in all activity being logged.<br />

10 Select the Java / Installed JREs node in the navigation tree to open the<br />

Installed JREs page. The Java runtimes that are used by Eclipse on your<br />

local system are listed here. Confirm the Location and Type settings for<br />

your Java runtime environment.<br />

- If you need to add a Java runtime profile, click the Add button and<br />

proceed with step 11.<br />

- If you need to edit an existing Java runtime profile, click the Edit<br />

button and proceed with step 11.<br />

- If your Java runtime settings are acceptable, proceed with step 13.<br />

11 On the Add/Edit JRE dialog, click the Browse button to browse to and<br />

select the directory that contains your JDK installation (specifically, your<br />

Java compiler), then click OK.<br />

Note You must select a JDK (version 1.5 or higher), rather than a<br />

JRE, because SilkPerformer attempts to recompile Java files in its<br />

test classes.<br />

12 The fields on the Add/Edit JRE dialog are automatically populated with<br />

values derived from your JDK installation. Click OK to save your<br />

settings.<br />

13 Back on the Installed JREs page, click OK to save your settings.<br />

Projects<br />

Setting up New<br />

Projects<br />

There are restrictions on concurrent use of Eclipse and SilkPerformer. Projects<br />

are locked from use by Eclipse while SilkPerformer Workbench works on them.<br />

If you attempt to open a project from Eclipse that is currently in use by<br />

SilkPerformer, you will receive an error message. You must close SilkPerformer<br />

to pass project control back to Eclipse.<br />

Procedure To set up a new project:<br />

1 Within a SilkPerformer-enabled Eclipse workbench, select File / New/<br />

Project to launch the New Project wizard.<br />

2 Expand the SilkPerformer node in the navigation tree.<br />

3 Select the Java Project node.<br />

4 Click Next.<br />

328 SilkPerformer User Guide


17 OTHER SUPPORTED ENVIRONMENTS<br />

SilkPerformer Plug-In for Eclipse<br />

Importing a<br />

SilkPerformer project<br />

into Eclipse<br />

Configuring<br />

SilkPerformer project<br />

properties from<br />

Eclipse<br />

5 On the New SilkPerformer load testing capable Java project page, edit<br />

the Name of your new project as required.<br />

6 Edit the Test class name (the name of the initial test class template) as<br />

required.<br />

7 Click Finish to have the plug-in generate the test class template in your<br />

Eclipse workspace and link the test classes to a test case in your<br />

SilkPerformer project.<br />

A class path links the new test class into SilkPerformer’s workspace so that it<br />

works with both the Eclipse editor and SilkPerformer. Behind each test class is<br />

BDF stub code. This code is generated each time a test class is compiled, so any<br />

changes you make to BDF stub code will be overwritten the next time the test<br />

class is compiled.<br />

Another way of linking your Eclipse and SilkPerformer workspaces is to import<br />

an existing SilkPerformer project into your Eclipse workspace.<br />

Procedure To import a SilkPerformer project into Eclipse:<br />

1 Select Import from the File menu.<br />

2 On the Import dialog, expand the Other node in the navigation tree.<br />

3 Select Import Existing SilkPerformer Java Project.<br />

4 Click Next to view all available SilkPerformer projects in your<br />

SilkPerformer workspace.<br />

5 Select the checkboxes of the projects that you want to import.<br />

6 Click Finish to import the selected project settings and classpaths into<br />

your Eclipse workspace.<br />

Procedure To configure SilkPerformer project properties from Eclipse:<br />

1 Go go the Project menu and select Properties.<br />

2 Select the SilkPerformer Project node in the navigation tree.<br />

3 At the top of the SilkPerformer Project Properties page the path to the<br />

Targeted SilkPerformer Project is displayed. If required, edit the Name<br />

that has been specified for the project when opened in SilkPerformer<br />

workbench.<br />

4 Edit the Description that has been defined for the project, as required.<br />

5 You can define SilkPerformer Project Attributes for the project (Name,<br />

value Type, Value, Default value, Description). See Project Attributes<br />

Overview in the BDL Function Reference for full details regarding<br />

configuring SilkPerformer project settings.<br />

6 Click Apply to apply your changes.<br />

SilkPerformer User Guide 329


17 OTHER SUPPORTED ENVIRONMENTS<br />

SilkPerformer Plug-In for Eclipse<br />

Configuring<br />

SilkPerformer system<br />

settings<br />

Configuring<br />

SilkPerformer project<br />

settings<br />

Redirecting Java build<br />

paths<br />

7 Click OK to save the project settings.<br />

Note SilkPerformer project attributes can also be accessed directly<br />

by selecting Project Attributes from Eclipse’s SilkPerformer menu.<br />

To configure SilkPerformer system settings, select System Settings from<br />

Eclipse’s SilkPerformer menu. For full details on configuring system settings<br />

for SilkPerformer workbench, see “SilkPerformer Workbench”.<br />

To configure profile settings for an active SilkPerformer project, select Profile<br />

Settings from Eclipse’s SilkPerformer menu. You will be directed to the<br />

General tab for your project profile Java settings, where you can view the Java<br />

version, Java home, and classpaths have been set up for your newly created<br />

project. For full details on configuring profile settings for SilkPerformer<br />

projects, see “Project Profile Settings”.<br />

Note When Eclipse controls a SilkPerformer project, all Java<br />

settings defined in SilkPerformer are overruled by the settings you<br />

defined in Eclipse.<br />

From the moment that SilkPerformer projects are controlled from Eclipse, the<br />

classpaths of projects are controlled from the Eclipse environment. For this<br />

reason you may want to adjust the Java build path of your Eclipse projects.<br />

Note There are restrictions for classpaths of Eclipse projects that are<br />

used within SilkPerformer. To enable the distribution of libraries<br />

during a loadtest, all libraries must be located either in the<br />

SilkPerformer project directory (\Working\Projects) or they must be<br />

available on a UNC path.<br />

Procedure To redirect an Eclipse project’s Java build path:<br />

1 Right-click a SilkPerformer-enabled project in Eclipse’s Package<br />

Explorer.<br />

2 Select Build Path/Configure Build Path from the context menu.<br />

3 Select the Libraries tab on the Java Build Path page. Here you will see<br />

all of the User libraries that are required for running tests.<br />

4 Click Add Library.<br />

5 On the Add Library page, select User Library from the pick list and click<br />

Next.<br />

6 Click User Libraries.<br />

7 On the User Libraries page, click the New button.<br />

8 Specify a name for the new library on the New User Library dialog, and<br />

click OK.<br />

9 Back on the User Libraries page, select Add JARs.<br />

330 SilkPerformer User Guide


17 OTHER SUPPORTED ENVIRONMENTS<br />

SilkPerformer Plug-In for Eclipse<br />

Generating multiple<br />

load-testing Java<br />

classes<br />

10 Browse to and select one or more Java libraries that are available to your<br />

local system (hold down your Shift or Ctrl keys to select multiple<br />

libraries).<br />

11 Click Open to add the JAR files to your new user library.<br />

12 Back on the User Libraries page, click OK.<br />

13 Back on the Add Library page, click Finish to migrate these settings to<br />

the classpaths of both your SilkPerformer Workbench project and your<br />

SilkPerformer-enabled Eclipse project.<br />

You can generate multiple load-testing capable Java classes for SilkPerformerenabled<br />

Eclipse projects.<br />

Note SilkPerformer can handle user-defined JAR libraries. It can<br />

only launch classes that are within the root package of Java projects<br />

within SilkPerformer. Only external libraries such as JARs can be<br />

used.<br />

Procedure To add a SilkPerformer test class to an Eclipse project:<br />

1 Select Other from the File menu.<br />

2 On the New page, select SilkPerformer/SilkPerformer Test Class from<br />

the navigation tree.<br />

3 On the New SilkPerformer Test Class page, edit the Project name and<br />

Test class values as required.<br />

4 Click the Browse button.<br />

5 On the SilkPerformer-Enabled Projects dialog, select the SilkPerformerenabled<br />

Eclipse project to which this new test class template is to be<br />

appended.<br />

6 Click Finish to append the test class template to your Eclipse project.<br />

TryScript Runs<br />

Executing TryScript<br />

runs for test classes<br />

Procedure To execute a TryScript run for a test class:<br />

1 In Eclipse’s Package Explorer navigation tree, select the test class for<br />

which you want to run a TryScript.<br />

2 Select Try Script from Eclipse’s SilkPerformer menu. Eclipse then<br />

automatically switches to the Debug perspective and initiates a TryScript<br />

run. The bottom pane of the Debug page includes SilkPerformer views<br />

that monitor the status of the test.<br />

The two main SilkPerformer views are:<br />

SilkPerformer User Guide 331


17 OTHER SUPPORTED ENVIRONMENTS<br />

SilkPerformer Plug-In for Eclipse<br />

- SilkPerformer Virtual User - This view displays virtual-user status<br />

messages that are passed from the latest TryScript test.<br />

- SilkPerformer simulation Controller - This view displays<br />

simulation-status messages that are passed by the SilkPerformer<br />

Simulation Controller.<br />

3 If your test class generates errors or leads to a failed test, you must edit<br />

your test class in the Eclipse Editor. If your TryScript run is successful,<br />

you can view the results of the test in the SilkPerformer log files and<br />

result files, including TrueLog files. See “Viewing Results” for full<br />

details.<br />

Viewing Results<br />

Viewing Virtual User<br />

Reports<br />

Viewing Virtual User<br />

Log Files<br />

Viewing Virtual User<br />

Output Files<br />

Viewing TrueLogs<br />

Following a successful test or TryScript run, you can choose to view a Virtual<br />

User Report file, a Virtual User Log file, a Virtual User Output file or a TrueLog.<br />

To view a Virtual User Report, select Virtual User Report File from Eclipse’s<br />

SilkPerformer menu. The report is then displayed in Eclipse’s SilkPerformer<br />

Report File Viewer tab. See “Virtual User Report files” for full details<br />

regarding Virtual User Reports.<br />

To view log files, select Virtual User Log File from Eclipse’s SilkPerformer<br />

menu. The log file of the most recent test run is then displayed.<br />

To view output files, select Virtual User Output File from Eclipse’s<br />

SilkPerformer menu. The output file of the TestClass code for the most recent<br />

test run is then displayed. See “Virtual User Output files” for full details<br />

regarding Virtual User Output files.<br />

To view a TrueLog, select Show TrueLog from Eclipse’s SilkPerformer menu.<br />

The TrueLog file of the most recent TryScript run is then displayed in Silk<br />

TrueLog Explorer. See the Silk TrueLog Explorer User Guide for full details<br />

regarding TrueLog files.<br />

Launch Configurations<br />

Defining a launch<br />

configuration for<br />

SilkPerformer<br />

TryScripts<br />

Procedure To set up a launch configuration for TryScript runs:<br />

1 Select the Debug button on Eclipse’s main toolbar.<br />

2 On the Debug page, select the SilkPerformer TryScript node in the<br />

navigation tree.<br />

3 Click the New button on the toolbar.<br />

332 SilkPerformer User Guide


17 OTHER SUPPORTED ENVIRONMENTS<br />

Remedy Support<br />

4 On the Create, manage, and run configurations page, the currently active<br />

SilkPerformer project and its first test class are pre-selected. Select the<br />

browse (...) button alongside the Project text box.<br />

5 On the SilkPerformer Enabled Projects dialog, select the SilkPerformerenabled<br />

project that is to be associated with this launch configuration.<br />

6 Click OK.<br />

7 On the Launch as SilkPerformer test case dialog, select the TestClass<br />

that is to be launched with this launch configuration.<br />

8 Click OK.<br />

9 (optional) Edit the parameters of any pre-defined project attributes in the<br />

Project Attributes section of the page.<br />

10 Click Apply to apply your changes.<br />

11 Click Debug to run a TryScript run based on your launch configuration<br />

settings.<br />

Baseline Tests<br />

Once you are satisfied with the TryScript results generated by your TestClass, it<br />

is time to pass your test project from Eclipse to SilkPerformer and run a<br />

baseline test. See “Establishing Baseline Performance” for full details<br />

regarding baseline tests.<br />

Running baseline<br />

tests<br />

Procedure To run a baseline test:<br />

1 Select Open in SilkPerformer from Eclipse’s SilkPerformer menu.<br />

SilkPerformer workbench launches, with your Eclipse project loaded in<br />

the Project tree. All TestClasses are appended to the project under the<br />

Scripts node.<br />

2 Define and run a baseline test, as explained in “Establishing Baseline<br />

Performance”.<br />

Remedy Support<br />

The testing workflow for testing Remedy with SilkPerformer is the same as the<br />

workflow for testing Web-based applications, with the following exceptions:<br />

• On the Workflow - Outline Project dialog, you must select the Remedy<br />

version under test (these settings are grouped under the ERP/CRM node).<br />

• On the Workflow - Model Script dialog, you enter the commandline path<br />

to the Remedy installation under test.<br />

SilkPerformer User Guide 333


17 OTHER SUPPORTED ENVIRONMENTS<br />

Remedy Support<br />

BMC tutorial<br />

Licensing<br />

TrueLog support<br />

Data representation in<br />

SilkPerformer<br />

• Recorded scripts include a number of WebRemedy functions, which are<br />

modified WebPagePost and WebPageUrl calls.<br />

• In the Forms section of test scripts, each Web form contains an XML<br />

fragment that is a visualization of the Remedy traffic that was generated<br />

by the browser. This XML visualization of the browser traffic is easier to<br />

read than actual Remedy traffic. It also facilitates SilkPerformer script<br />

customization. The actual, originally recorded Remedy traffic is<br />

commented at the end of each Web form XML fragment.<br />

BMC has created an excellent tutorial that illustrates how to load test BMC<br />

Remedy IT Service Management (ITSM) applications with BMC Remedy<br />

Action Request System (AR System). To obtain the tutorial, contact BMC and<br />

request the following white paper: Performance Benchmarking Kit: Using<br />

Incident Management with SilkPerformer.<br />

A premium virtual user license is required to test Remedy with SilkPerformer.<br />

TrueLog functionality is not supported for Remedy testing.<br />

Remedy uses a proprietary format for data that is sent from the client to the<br />

server. This format includes length prefixes and makes customization difficult.<br />

Example:<br />

157/GetTableEntryList/11/smi-web-00126/<br />

SMI:TEL35:SHR:AgentConsole12/Windows_View9/53687098211/<br />

smi-web-00127/SMI:TEL35:SYS:IncomingEmail0/1/01/02/0/0/<br />

2/0/2/0/2/0/<br />

Such data is sent in HTTP requests to the URL http:///arsys/<br />

BackChannel.<br />

Remedy versions 6.3 patch level 2 and earlier send such data in the body of<br />

HTTP POST requests. Versions 6.3 and later send such data in the query string<br />

of HTTP GET requests.<br />

The main benefit of SilkPerformer’s Remedy add-on is that this proprietary data<br />

format is translated into an XML-based representation that eliminates the length<br />

prefixes and introduces names to the individual data items. This makes scripts<br />

easier to understand and customize. During script replay, this XML-based<br />

format is transparently translated back into the original format.<br />

This backward transformation is performed by the functions<br />

WebRemedyBackChannelUrl and WebRemedyBackChannelPost.<br />

WebRemedyBackChannelUrl is a replacement for the function WebPageUrl,<br />

while WebRemedyBackChannelPost is a replacement for the function<br />

WebPagePost.<br />

Example:<br />

Without the Remedy add-on the following API call would be recorded as:<br />

334 SilkPerformer User Guide


17 OTHER SUPPORTED ENVIRONMENTS<br />

Remedy Support<br />

WebPagePost("http://213.131.176.85/arsys/BackChannel",<br />

"157/GetTableEntryList/11/smi-web-00126/<br />

SMI:TEL35:SHR:AgentConsole12/W"<br />

"indows_View9/53687098211/smi-web-00127/<br />

SMI:TEL35:SYS:IncomingEmail0/1"<br />

"/01/02/0/0/2/0/2/0/2/0/",<br />

STRING_COMPLETE,<br />

"text/plain; charset=UTF-8",<br />

"arsys/BackChannel");<br />

With the Remedy add-on the API call is recorded as follows:<br />

WebRemedyBackChannelPost("http://213.131.176.85/<br />

arsys/BackChannel",<br />

"\r\n"<br />

"\r\n"<br />

" smi-web-001\r\n"<br />

" SMI:TEL35:SHR:AgentConsole\r\n"<br />

" Windows_View\r\n"<br />

" 536870982\r\n"<br />

" smi-web-001\r\n"<br />

" SMI:TEL35:SYS:IncomingEmail\r\n"<br />

" \r\n"<br />

" 0\r\n"<br />

" 0\r\n"<br />

" \r\n"<br />

" \r\n"<br />

" \r\n"<br />

" \r\n"<br />

" \r\n"<br />

"",<br />

STRING_COMPLETE,<br />

"text/plain; charset=UTF-8",<br />

"BackChannel - GetTableEntryList");<br />

The key differences are:<br />

- Use of the function WebRemedyBackChannelPost instead of<br />

WebPagePost<br />

SilkPerformer User Guide 335


17 OTHER SUPPORTED ENVIRONMENTS<br />

Remedy Support<br />

Additional benefits<br />

Remedy SilkEssential<br />

- Data is in XML format instead of original format<br />

- XML format does not contain length prefixes, which would<br />

otherwise have to be considered during script customization.<br />

- XML format specifies data type and meaningful names for each data<br />

item.<br />

In addition to the different representation of the data there are other benefits to<br />

using the Remedy add-on:<br />

- Remedy.bdh: A bdh file that implements the functions<br />

WebRemedyBackChannelPost, WebRemedyBackChannelUrl and<br />

WebRemedyInit.<br />

- The recorder places a call to the function WebRemedyInit() into the<br />

TInit transaction.<br />

- The function WebRemedyInit() installs verifications to catch<br />

application level errors.<br />

- The recorder detects all timestamps which would otherwise be hard<br />

coded into the script, and records the function GetTimeStamp()<br />

instead.<br />

- The recorder records parsing functions for IDs of newly created<br />

entities and appropriate substitutions for all occurrences of such IDs<br />

in the script with the parsed variable.<br />

The Remedy application type is triggered through a SilkEssential package. It<br />

contains a set of recording rules and a remedy.bdh. The remedy.bdh wraps the<br />

WebPageCalls:<br />

// wrapper function for WebPagePost<br />

// param nDataLength will be ignored<br />

function WebRemedyBackChannelPost(sUrl :<br />

string;<br />

sData :<br />

string;<br />

nDataLength : number<br />

optional;<br />

sContent : string<br />

optional;<br />

sTimer : string<br />

optional;<br />

formUrl : form<br />

optional) : boolean <br />

begin<br />

WebRemedyBackChannelPost := WebPagePost(sUrl,<br />

RemedyBackChannelData(sData), STRING_COMPLETE, sContent,<br />

sTimer, formUrl);<br />

336 SilkPerformer User Guide


17 OTHER SUPPORTED ENVIRONMENTS<br />

Adobe Flex AMF3 Support<br />

end WebRemedyBackChannelPost;<br />

and<br />

// wrapper function for WebPageUrl for use with<br />

BackChannel requests<br />

function WebRemedyBackChannelUrl(sUrl : string;<br />

sTimer : string<br />

optional;<br />

formUrl : form<br />

optional) : boolean <br />

var<br />

sXmlData : string(100000);<br />

sDummy : string;<br />

begin<br />

WebFormExpand(formUrl, sDummy, 1, true);<br />

WebFormValueGet(formUrl, sXmlData, sizeof(sXmlData),<br />

"param");<br />

WebFormValueSet(ARSYS_BACKCHANNEL_INTERNAL_HELPER,<br />

"param", RemedyBackChannelData(sXmlData));<br />

WebRemedyBackChannelUrl := WebPageUrl(sUrl, sTimer,<br />

ARSYS_BACKCHANNEL_INTERNAL_HELPER);<br />

end WebRemedyBackChannelUrl;<br />

dclform<br />

ARSYS_BACKCHANNEL_INTERNAL_HELPER :<br />

"param" := "";<br />

Protocol detection and<br />

conversion<br />

Remedy protocol detection is not available by default. However, it is already<br />

built into the SilkPerformer recorder and is enabled by choosing the appropriate<br />

Remedy application type when creating a new project.<br />

The Remedy data conversion into XML and back out of XML is implemented<br />

in the ProxyEngine for recording and in the perfRemedy.dll, which is loaded into<br />

the perfRun by the Remedy.bdh.<br />

Adobe Flex AMF3 Support<br />

AMF3 (Action Message Format, version 3) is a binary protocol that was created<br />

by Adobe. It is primarily used for remote procedure calls by Flex applications.<br />

A primary goal in the design of AMF3 is that transmitted data be as small as<br />

possible. This requirement presents a challenge for protocol customization with<br />

SilkPerformer. To make the AMF3 protocol customizable and human-readable,<br />

SilkPerformer transforms AMF3 traffic into XML during script recording, and<br />

SilkPerformer User Guide 337


17 OTHER SUPPORTED ENVIRONMENTS<br />

Adobe Flex AMF3 Support<br />

Understanding Flex<br />

Understanding<br />

Advanced Flex Data<br />

Services<br />

transforms the XML back into AMF3 format during replay. This means that you<br />

do not have to content with binary AMF3 data in hex string form. Rather, in<br />

recorded scripts and TrueLogs, you see only XML-formatted data.<br />

AMF0 and AMF3 support are tightly integrated (in fact AMF3 uses AMF0’s<br />

message structure). Every AMF3 message begins as an AMF0 message (even<br />

when they contain the version “3” in the first two bytes of the data stream). A<br />

special AMF0 data type marker indicates where AMF0 encoding ends and<br />

AMF3 encoding begins.<br />

According to Adobe (see www.adobe.com), “Flex is a free, open source<br />

framework for building highly interactive, expressive web applications that<br />

deploy consistently on all major browsers, desktops and operating systems. It<br />

provides a modern, standards-based language and programming model that<br />

supports common design patterns. MXML, a declarative XML-based language,<br />

is used to describe UI layout and behaviors, and ActionScript 3, a powerful OO<br />

programming language is used to create client logic. Flex also includes a rich<br />

component library with over 100 proven, extensible UI components for creating<br />

RIAs, as well as an interactive Flex application debugger.<br />

Rich Internet applications created with Flex can run in the browser using the<br />

ubiquitous Adobe Flash ® Player software or on the desktop on Adobe AIR .<br />

This enables Flex applications to run consistently across all major browsers and<br />

across operating systems on the desktop. And using Adobe AIR, the crossoperating<br />

system runtime, Flex applications can now access local data and<br />

system resources on the desktop.<br />

You can accelerate application development with Adobe Flex Builder 3, a<br />

highly productive, Eclipse based development environment, and Adobe Live<br />

Cycle Data Services ES, a set of advanced data services that can be used in Flex<br />

development. Both of these products are available for purchase.”<br />

According to Adobe, “Adobe LiveCycle Data Services ES provides a<br />

comprehensive set of data-enabling features for using data in RIAs. It enables<br />

RIAs to talk to back-end data and business logic in a faster, more efficient<br />

operating model. LiveCycle Data Services ES also enables seamless integration<br />

with LiveCycle ES business processes and document services.<br />

BlazeDS is a free, open source project providing Flex Remoting and Messaging<br />

to all developers. Flex Remoting provides a binary, serialized data transport<br />

format called the ActionScript Message Format (AMF) to provide a fast,<br />

efficient means of transporting data to your RIA which accelerates application<br />

performance. Flex Remoting also makes it fast and easy for developers to<br />

connect to back-end business logic and data. Flex Messaging adds realtime data<br />

push and publish/subscribe, both powerful capabilities now made easy. Using<br />

BlazeDS, you can start using these powerful Java server integration features for<br />

free, then subscribe to the LiveCycle Data Services Community Edition for<br />

certified builds and support, or upgrade to the full LiveCycle Data Services ES<br />

Enterprise edition for a complete server solution.”<br />

338 SilkPerformer User Guide


17 OTHER SUPPORTED ENVIRONMENTS<br />

Adobe Flex AMF3 Support<br />

AMF3 Data Types<br />

AMF3 provides a number of data types.<br />

Simple Data Types<br />

Integer<br />

Double<br />

String<br />

Here are four simple data types that are provided by AMF3. In the binary<br />

protocol, each of these data types is transmitted as a 1-byte type marker. The<br />

corresponding XML tags for each data type are shown within brackets.<br />

• Undefined ()<br />

• Null ()<br />

• False ()<br />

• True ()<br />

Integers in AMF3 are serialized as variable-length 29-bit unsigned integers. The<br />

variable-length format ensures that integers take up as little space as necessary.<br />

In XML format, integers look like this:<br />

123456<br />

The integer data type is encoded as a 1-byte type marker, followed by up to 4<br />

bytes that encode the integer using the variable length format. Besides their use<br />

as a data type, variable-length integers are used in other places within the<br />

protocol.<br />

A double stores an 8-byte double precision floating point value as defined in<br />

IEEE 754. This is the data type that many programming languages refer to as a<br />

double. In XML format, doubles look like this:<br />

3.14159<br />

In the binary format, doubles are encoded as 1-byte type markers followed by 8<br />

bytes that contain the double value.<br />

Strings are used to store all types UTF-8-encoded string data. Besides their use<br />

as a data type, strings are also used to specify string data, such as classes or<br />

member names. All string values in an AMF3 data stream are put into a<br />

reference table which is typically generated when AMF3 or XML data is parsed.<br />

A string can either be encoded as a string value or as a string reference. A string<br />

reference refers to a previous occurrence of its number in the string reference<br />

table. This feature is used to save space when the same string value occurs<br />

several times in a single AMF3 data stream.<br />

In XML format, a string looks like this:<br />

Hello, World!<br />

When string references are used, the referenced string is marked with a<br />

reference ID (in the form of an attribute), and the string reference refers to the<br />

reference ID:<br />

This string is referenced<br />

SilkPerformer User Guide 339


17 OTHER SUPPORTED ENVIRONMENTS<br />

Adobe Flex AMF3 Support<br />

<br />

XML and<br />

XMLDocument<br />

Date<br />

Array<br />

AMF3 provides two data types to encode XML data, XMLDocument, which<br />

represents a Flash legacy data type, and XML, which is a newer XML type. Both<br />

data types encode XML as strings. The difference is that these strings are not<br />

registered in the string reference table. They are registered in the object<br />

reference table.<br />

Note With the XML format, the actual XML content must be XMLencoded.<br />

Due to a limitation with SilkPerformer's XML parser, it is<br />

currently not possible to use XML CDATA sections to notate such<br />

data.<br />

&lt;Data&gt;some data&lt;/Data&gt;<br />

&lt;Data&gt;some more data&lt;/Data&gt;<br />

As with strings, XML data can be referenced to save space:<br />

&lt;Data&gt;foobar&lt;/Data&gt;<br />

<br />

In AMF3, the date is encoded as the number of milliseconds elapsed since<br />

January 1st 1970 00:00, in the UTC timezone. The number of milliseconds is<br />

encoded as a double. Dates also support references, and each date is registered<br />

in the object reference table.<br />

2007-02-18 11:29:00.000<br />

2000-01-01 00:00:00.000<br />

<br />

Arrays in AMF3 cover two types of data structures: (1) standard arrays, where<br />

each element is identified by an index number, and (2) associative arrays, where<br />

each element is identified by a key (in the case of AMF3, this is always a string).<br />

In the binary representation of an array, the associative portion of the array is<br />

listed first. This is followed by a separator (an empty string) and finally the<br />

dense portion of the array (the standard array elements).<br />

In XML representation, the elements of an associative array are marked by their<br />

name attributes. Generally, arrays are not bound to a specific type, which means<br />

that you can put any data type in them, including different data types.<br />

<br />

23<br />

42<br />

EMEA\johndoe<br />

2008-02-17 13:47:13.000<br />

<br />

<br />

In the above example there is an array with three elements that have a name<br />

attribute (meaning, they belong to the associative portion of the array) and two<br />

340 SilkPerformer User Guide


17 OTHER SUPPORTED ENVIRONMENTS<br />

Adobe Flex AMF3 Support<br />

Object<br />

elements that do not have a name attribute, which means that they belong to the<br />

dense portion of the array.<br />

As with other data types, arrays can be referenced; their elements can be<br />

referenced; even their elements’ names can be referenced:<br />

<br />

bar<br />

<br />

<br />

In this example, there is an array with two string elements. The first element has<br />

the name “foo” and the value “bar”. The second element has no name, but<br />

references the string with the string reference table ID #0 (the string “foo”).<br />

Arrays themselves are registered in the object reference table.<br />

Objects are the most powerful data type within AMF3. There are several<br />

subtypes of classes that you need to be aware of. What all object types have in<br />

common is that they bear a class name.<br />

Object Traits<br />

The traits of an object are its member names, plus information indicating if an<br />

object is dynamic or externalizable.<br />

An object with traits contains a list of member names followed by the<br />

corresponding members. In binary format, member names are encoded as<br />

strings without type markers. The number of member names is encoded in an<br />

additional field of flags that also contains information about the object’s sub<br />

type. Following the members, an optional, additional list of dynamic members,<br />

each preceded by their respective member name, is included. The list of<br />

dynamic members is only included if the dynamic flag is set to true and<br />

terminated by an empty string.<br />

<br />

strFirstName<br />

strSurname<br />

John<br />

Doe<br />

<br />

<br />

42<br />

<br />

Object References<br />

Objects can be directly referenced because they are registered in the objects<br />

reference table.<br />

<br />

42<br />

<br />

<br />

SilkPerformer User Guide 341


17 OTHER SUPPORTED ENVIRONMENTS<br />

Adobe Flex AMF3 Support<br />

Traits References<br />

Each object of subtype object traits or externalizable traits is not only added to<br />

the objects reference table, but also to the traits reference table. Other objects<br />

can then refer to the traits of these objects. This means that such an object does<br />

not need to come with the list of members and the object flags by itself, but only<br />

with the actual members.<br />

<br />

userid<br />

firstName<br />

lastName<br />

jdoe<br />

John<br />

Doe<br />

<br />

<br />

mmustermann<br />

Max<br />

Mustermann<br />

<br />

Externalizable Traits<br />

Externalizable traits contain the binary representation of an object, an<br />

indeterminate number of bytes serialized in an unknown format. The format<br />

depends on the class that serializes and deserializes this data. The class also has<br />

to know how many bytes it has to consume from the byte stream.<br />

SilkPerformer provides support for the three most common classes:<br />

• flex.messaging.io.ArrayCollection<br />

• flex.messaging.io.ArrayList<br />

• flex.messaging.io.ObjectProxy<br />

According to Adobe, these three classes are the most common, and are encoded<br />

as AMF3. This means that these three classes are parsed like normal arrays or<br />

objects, respectively.<br />

In case a class other than these three is found, it is assumed that all bytes up to<br />

the end of the stream belong to the externalizable traits. The content of such an<br />

unknown externalizable trait is stored as Base64-encoded data.<br />

<br />

<br />

1<br />

2<br />

3<br />

4<br />

<br />

<br />

342 SilkPerformer User Guide


17 OTHER SUPPORTED ENVIRONMENTS<br />

Adobe Flex AMF3 Support<br />

<br />

<br />

hugo<br />

hugo2<br />

<br />

<br />

<br />

<br />

555-55-5555<br />

Tyler<br />

5<br />

<br />

<br />

SGVsbG8sIHdvcmxk<br />

ByteArray<br />

References<br />

A ByteArray holds an array of bytes. In XML representation, binary data is<br />

encoded in Base64 format.<br />

ByteArrays are registered in the object reference table.<br />

SGVsbG8sIHdvcmxk<br />

Three different reference tables are used. The following list offers an overview<br />

of which data types are registered in which reference table.<br />

• String Reference Table:<br />

- String<br />

- Class names (not an actual data type)<br />

- Member names (not an actual data type)<br />

- Value name of elements of the associative portion of an array (not an<br />

actual data type)<br />

• Object Reference Table:<br />

- Object<br />

- Date<br />

- Array<br />

- ByteArray<br />

- XML<br />

- XmlDocument<br />

• Traits Reference Table:<br />

- Object traits<br />

SilkPerformer User Guide 343


17 OTHER SUPPORTED ENVIRONMENTS<br />

Adobe Flex AMF3 Support<br />

- Externalizable traits<br />

• Not registered in any reference table:<br />

- Undefined<br />

- Null<br />

- False<br />

- True<br />

- Integer<br />

- Double<br />

Reference IDs are generated by the AMF3 parser. However in hand-written<br />

XML documents, you can use custom reference IDs:<br />

EMEA\johndoe<br />

<br />

Warning Custom reference IDs are lost when an XML document is<br />

transformed from XML to AMF3 and back to XML because the<br />

AMF3 generator simply looks up the reference table position using<br />

the reference ID string and only encodes the position in the AMF3.<br />

When parsing such a generated AMF3 data stream, the parser no<br />

longer has the information about the custom reference IDs. It<br />

generates reference IDs that begin with “#” and a continuous number<br />

that directly reflects the position in the string reference table.<br />

344 SilkPerformer User Guide


17 OTHER SUPPORTED ENVIRONMENTS<br />

Adobe Flex AMF3 Support<br />

AMF3-specific XML<br />

tags at a glance<br />

Here is an overview of all the AMF3-specific XML tags, including their<br />

attributes. See the list following the table for reference ID explanations.<br />

XML Nodename<br />

Value Location<br />

1: Optional<br />

Additional<br />

attributes<br />

Amf3 Subnodes ---<br />

Null --- ---<br />

Undefined --- ---<br />

False --- ---<br />

True --- ---<br />

Integer Content of node ---<br />

Double Content of node ---<br />

String Content of node val-refId (1;2), valref<br />

(1;2)<br />

XMLDocument Content of node refId (1;3), ref (1;3)<br />

Notes<br />

Date Content of node refId (1;3), ref (1;3) Unlike AMF0,<br />

AMF3 dates are<br />

shown in UTC time<br />

format.<br />

Array Subnodes refId (1;3), ref (1;3) Subnodes may<br />

have a name<br />

attribute (1;2)<br />

Object Subnodes dynamic (1;5),<br />

externalizable (1;5),<br />

classname,<br />

classname-refId<br />

(1;2), classname-ref<br />

(1;2), traits-refId<br />

(1;4), traits-ref (1;4)<br />

Subnodes may have<br />

a name attribute<br />

(1;2) if object is<br />

dynamic<br />

Member Content of node refId (1;2), ref (1;2) May only appear as<br />

a subnode of an<br />

object<br />

XML Content of node refId (1;3), ref (1;3)<br />

ByteArray Content of node refId (1;3), ref (1;3) Content is Base64-<br />

encoded<br />

SilkPerformer User Guide 345


17 OTHER SUPPORTED ENVIRONMENTS<br />

Adobe Flex AMF3 Support<br />

2: String reference<br />

3: Object reference<br />

4: Traits reference<br />

5: Boolean value (“true” or “false;” default is “false.”)<br />

Creating AMF3 SilkPerformer Projects<br />

To configure scripting for an AMF3 Application, as with AMF0 projects, create<br />

a project based on the Web Browser -> Flash Remoting project type. Due to the<br />

tight integration of AMF0 and AMF3 support, this project type works for both<br />

AMF0 and AMF3.<br />

Recording<br />

Common patterns in<br />

AMF3 traffic<br />

To record a script for an AMF3 Application, as with AMF0 projects, use the<br />

Model Script dialog.<br />

You will typically only encounter a few object types that are sent as remote<br />

procedure calls with their corresponding responses.<br />

The two most common types of objects that are sent from a Flex application to<br />

the server are:<br />

• flex.messaging.messages.CommandMessage (sent by the Flex<br />

application on startup)<br />

• flex.messaging.messages.RemotingMessage (directly associated with<br />

user actions such as button clicks)<br />

A CommandMessage’s XML structure typically looks like this:<br />

<br />

<br />

<br />

<br />

<br />

<br />

operation<br />

correlationId<br />

body<br />

clientId<br />

timeToLive<br />

destination<br />

messageId<br />

headers<br />

timestamp<br />

5<br />

<br />

346 SilkPerformer User Guide


17 OTHER SUPPORTED ENVIRONMENTS<br />

Adobe Flex AMF3 Support<br />

<br />

<br />

0<br />

<br />

93C26579-723C-8375-6A63-0E2F350D5C02<br />

<br />

nil<br />

<br />

0<br />

<br />

<br />

<br />

<br />

<br />

The basic structure (the AmfXml and Msg tags) is the same as AMF0, and the<br />

AMF3-specific part is encapsulated within the AMF3 tags. Below that, you can<br />

see the flex.messaging.messages.CommandMessage object.<br />

RemotingMessages are quite similar:<br />

<br />

<br />

<br />

<br />

<br />

<br />

source<br />

operation<br />

body<br />

clientId<br />

timeToLive<br />

destination<br />

messageId<br />

headers<br />

timestamp<br />

<br />

getCollection<br />

<br />

<br />

0<br />

mathservice<br />

7966B5A2-EF2C-B8C3-8FE3-0E2F34BFAD68<br />

<br />

my-amf<br />

SilkPerformer User Guide 347


17 OTHER SUPPORTED ENVIRONMENTS<br />

Adobe Flex AMF3 Support<br />

BB7EB7E4-DA1C-4595-61B1-<br />

AF035EA08054<br />

<br />

0<br />

<br />

<br />

<br />

<br />

<br />

Responses to CommandMessages and RemotingMessages are usually objects of<br />

the type flex.messaging.messages.AcknowledgeMessage:<br />

<br />

<br />

<br />

;jsessionid=FD9408A5721C2FA76BDABBA5F5C56A09<br />

<br />

<br />

<br />

<br />

destination<br />

headers<br />

correlationId<br />

messageId<br />

timestamp<br />

clientId<br />

timeToLive<br />

body<br />

<br />

<br />

DSId<br />

BB7EB7E4-DA1C-4595-61B1-AF035EA08054<br />

<br />

93C26579-723C-8375-6A63-0E2F350D5C02<br />

BB7EB7E4-DA3E-FADA-E6D5-1DEDDD67C705<br />

1202834762618<br />

BB7EB7E4-DA2D-84CA-B275-089186BC83A6<br />

0<br />

<br />

<br />

348 SilkPerformer User Guide


17 OTHER SUPPORTED ENVIRONMENTS<br />

Customizing Oracle Applications 12i Scripts for Replay<br />

<br />

<br />

<br />

Customizing AMF3<br />

scripts<br />

Warning Do not change the overall structure of XML objects<br />

within AMF3 scripts. It is okay to parse values or insert verification<br />

function, but deleting or rearranging AMF3 XML elements will<br />

destroy a call. The order of an object’s member values directly<br />

depends on the member names. Also do not change the order of<br />

elements within arrays.<br />

Customizing Oracle Applications 12i Scripts for Replay<br />

Prerequisite for<br />

recording<br />

Customizing recorded<br />

scripts<br />

Before recording Oracle Applications 12i you must disable ports 9000-9005.<br />

Before you can replay a recorded Oracle Applications 12i script you need to<br />

customize the script.<br />

The parameter icx_ticket contains session information for Oracle Applications<br />

12i. The SilkPerformer recorder generates code to automatically parse the value<br />

of icx_ticket:<br />

WebParseDataBoundEx(gsIcxTicket, STRING_COMPLETE,<br />

"icx_ticket='", 1, "'", WEB_FLAG_IGNORE_WHITE_SPACE, 1);<br />

WebPageParseUrl("IMG SRC", "IMG SRC=\"", "or", WEB_<br />

FLAG_IGNORE_WHITE_SPACE);<br />

WebPageUrl("http://myserver.com:8005/OA_HTML/<br />

runforms.jsp", "Oracle Applications R12", OA_HTML_<br />

RUNFORMS_JSP003);<br />

The WebParseDataBoundEx function tells the SilkPerformer runtime to parse<br />

the value of icx_ticket from the next HTML page call into the gsIcxTicket<br />

variable.<br />

In this example, the next HTML page call is http://myserver.com:8005/OA_<br />

HTML/runforms.jsp.<br />

This page takes input parameters from the form OA_HTML_RUNFORMS_<br />

JSP003. If this form already contains a recorded value for icx_ticket, the value<br />

has to be set to an empty value.<br />

SilkPerformer User Guide 349


17 OTHER SUPPORTED ENVIRONMENTS<br />

Customizing Oracle Applications 12i Scripts for Replay<br />

For all subsequent usages of the icx_ticket parameter, the value stored in the<br />

gsIcxTicket variable must be used instead of the recorded value.<br />

Note The SilkPerformer recorder scripts customized code for the<br />

OraFormsConnect function by default. Verify that the customization<br />

has been performed correctly.<br />

Additional session<br />

information<br />

customization<br />

Additional customizations are necessary after you have customized the icx_<br />

ticket parameter. TrueLog Explorer can assist you with these customizations.<br />

Procedure To customize Oracle Applications 12i session information:<br />

1 Ensure that the icx_ticket parameter is customized correctly.<br />

2 Try Run the script in SilkPerformer with TrueLog generation enabled.<br />

3 Open the resulting Try Script TrueLog with TrueLog Explorer. Typically,<br />

an HTML page (one appearing soon after login) will show errors.<br />

4 Click the Analyze Test button on the Workflow Bar.<br />

5 Select Compare your test run from the Workflow - Analyze Test wizard<br />

page.<br />

6 Close the Step through Truelog dialog.<br />

7 Select the TrueLog node that corresponds to the recorded application’s<br />

login page.<br />

8 Right-click the node and select Synchronize Truelogs from the context<br />

menu.<br />

9 Select Edit / Truelog Type / Web from the TrueLog Explorer menu bar.<br />

350 SilkPerformer User Guide


17 OTHER SUPPORTED ENVIRONMENTS<br />

Customizing Oracle Applications 12i Scripts for Replay<br />

10 Select the Source Differences tab.<br />

11 Right-click any rows that show differences between the recorded<br />

TrueLog and the replay TrueLog that also occur in the script and<br />

therefore likely contain session information (highlighted in yellow) that<br />

should be customized.<br />

12 Run another TryScript run in SilkPerformer to verify that your session<br />

information customizations are successful.<br />

SilkPerformer User Guide 351


17 OTHER SUPPORTED ENVIRONMENTS<br />

Customizing Oracle Applications 12i Scripts for Replay<br />

352 SilkPerformer User Guide


18<br />

Trouble 18 Chapter<br />

Shooting<br />

Introduction<br />

What you will learn<br />

This chapter explains known issues and trouble shooting tips for SilkPerformer.<br />

This chapter contains the following sections:<br />

Section<br />

Page<br />

Overview 353<br />

Contacting technical support 353<br />

Controller Agent Communication Troubleshooting 354<br />

Error Message Overview 356<br />

Overview<br />

All <strong>Borland</strong> customers whose products qualify for maintenance and all<br />

prospective customers who are evaluating <strong>Borland</strong> products are eligible for<br />

<strong>Technical</strong> Support.<br />

Contacting technical<br />

support<br />

If you have a question on recording Web traffic, load testing scenarios or any<br />

other product or implementation issue, our highly trained technical support staff<br />

will respond to your requests as quickly and professionally as possible.<br />

To reach <strong>Borland</strong> <strong>Technical</strong> Support:<br />

- Visit http://support.borland.com<br />

Required information<br />

Please have the following information ready when you call:<br />

- Product name and version number<br />

- Operating system name and version<br />

SilkPerformer User Guide 353


18 TROUBLE SHOOTING<br />

Controller Agent Communication Troubleshooting<br />

- Exact wording of any error messages involved<br />

- Customer ID found on your shipping receipt for SilkPerformer or on<br />

an index card found in your software box<br />

Controller Agent Communication Troubleshooting<br />

The following issues may occur when a controller computer attempts to connect<br />

to agent computers:<br />

“Load Test Controller - 3211: Could not connect agent control service.”<br />

This problem may be caused by one of the following reasons:<br />

The agent control service is not running.<br />

Solution: Start the agent control service.<br />

A port mismatch occurs (i.e., the port that the agent control service is listening to<br />

and the port at which the controller wants to connect the agent control service<br />

are different).<br />

Solution: Adjust the agent connection settings.<br />

The agent is connected through a proxy and the proxy is down.<br />

Solution: Check the agent connection settings and restart the proxy.<br />

“Load Test Controller - 3212: Could not authenticate the Agent Control”<br />

Service."<br />

The agent requires a password and encryption is enabled. The agent’s server<br />

certificate could not be found or a required dynamic link library (.dll) is missing<br />

(e.g., "ssleay32.dll"). However, note that the agent control service does not<br />

report an error when it is started, if this is the problem.<br />

Solution: Your best option is to re-install the remote agent, because missing<br />

certificates or dynamic link libraries are indications that the agent was not<br />

installed correctly.<br />

“Load Test Controller - 3213: The agent control service could not create<br />

the agent.”<br />

This is the same type of error as 3212, except that the agent does not require a<br />

password.<br />

“Load Test Controller - 3233: The agent's version does not match the<br />

version of its controller.”<br />

Solution: Install the correct remote agent version.<br />

“Load Test Controller - 3303: The local results directory could not be<br />

created.”<br />

This is an access rights problem, that is, the user account of the agent process<br />

does not have the necessary access rights to create a directory; the parent<br />

354 SilkPerformer User Guide


18 TROUBLE SHOOTING<br />

Controller Agent Communication Troubleshooting<br />

directory of the desired directory is probably a read-only version for all<br />

accounts.<br />

Solution: Grant the necessary access rights.<br />

“Load Test Controller - 3304: The local results directory could not be<br />

cleared.”<br />

A file within the local results directory is still open and being used by another<br />

process (most likely the perfLtcAgent.exe and perfRun.exe). This is usually a<br />

hint that either the agent or the runtime processes did not shutdown at the end of<br />

a previous load test, which should not happen.<br />

Solution: Check for pending perfLtcAgent.exe or perfRun.exe files and<br />

terminate them manually.<br />

If this is not the case, check that other programs are not using an open file from<br />

the local results directory. If none of the above options solve the problem, reboot<br />

the remote agent’s machine.<br />

“Load Test Controller - 3305: The local data directory could not be<br />

created.”<br />

The reason and solutions to this problem are the same as for error 3303.<br />

“Load Test Controller - 3306: The local data directory could not be<br />

cleared.”<br />

The reasons and solutions to this problem are the same as for error 3304.<br />

“SilkPerformer - 32: Access denied, authentication required.”<br />

The agent expects a password, but the controller did not send a password,<br />

meaning the controller did not authenticate itself.<br />

Solution: Adjust the agent connection settings.<br />

“SilkPerformer - 33: Authentication failed (wrong password).”<br />

The agent expects a password but the password sent by the controller is<br />

incorrect.<br />

Solution: Adjust the agent connection settings.<br />

“SilkPerformer - 25: Limit of concurrent instances exceeded.”<br />

Two agents cannot run simultaneously. Most likely, the agent is involved in a<br />

load test started by another controller.<br />

Solution: Wait for the other controller to finish its load test and then try again.<br />

If this is not the problem, the agent did not terminate correctly at the end of a<br />

previous load test and you must terminate the agent process manually.<br />

“System - 2: The system cannot find the file specified.”<br />

The agent executable (perfLtcAgent.exe) could not be found or there is a<br />

different entry for the agent executable in the performerLocal.ini file.<br />

Solution: Check the performerLocal.ini file. If it is not there or if the<br />

perfLtcAgent.exe is not present, then re-install the agent.<br />

SilkPerformer User Guide 355


18 TROUBLE SHOOTING<br />

Error Message Overview<br />

“Load Test Controller - 3422: Command timed out.”<br />

Usually the controller has 30 seconds to:<br />

- Connect to the remote agent control service.<br />

- Pass authentication information to the remote agent control service<br />

(if required).<br />

- Ask the agent control service to create the agent.<br />

- Connect to the agent.<br />

- Exchange version information with the remote agent.<br />

These tasks may take more time than the default timeout of 30 seconds,<br />

especially if the agent is connected through a proxy or if the connection is slow.<br />

Solution: Specify a higher timeout in the system settings (System Settings/<br />

Control/Remote Agent Connection).<br />

In the remote performerLocal.ini file, the "port" entry is missing in the agent's<br />

AcsClient/type section. That is, the agent was started by the agent control<br />

service, but it is not listening to any port and therefore cannot be connected.<br />

Solution: Specify the "port" entry in the agent’s AcsClient/type section in the<br />

remote performerLocal.ini file.<br />

“Load Test Controller - 3223: Agent connection lost.”<br />

This occurs when the connection is broken between the controller and agent or<br />

when the underlying communication units of the load test controller report<br />

connection problems. Furthermore, connecting the agent through a proxy might<br />

be the cause of the error if the proxy itself is buggy.<br />

Solution: There should be log files named orbClient_.log,<br />

orbServer_.log in the controller’s or agent’s home directory,<br />

respectively, where logging information related to the error can be found.<br />

Error Message Overview<br />

SilkPerformer system-related errors occur either during script compilation or<br />

during load test execution and can cause load tests to fail. As they occur,<br />

SilkPerformer reports system-level errors on the screen. Severe system-level<br />

errors are reported to the Windows NT Event Log.<br />

SilkPerformer distinguishes among the following types of system-level errors:<br />

• “Compiler errors”<br />

- “Lexical errors” (LEX errors)<br />

- “Semantic errors” (SEM errors)<br />

- “Syntax errors” (SYN errors)<br />

• “Internal errors” (COM errors)<br />

356 SilkPerformer User Guide


18 TROUBLE SHOOTING<br />

Error Message Overview<br />

• “System limitation errors” (RES errors)<br />

• “Runtime errors” (RUN errors)<br />

Each error message is identified by a sequential error number (unique within an<br />

error category) plus a three-character code that indicates the category of error,<br />

followed by a string providing a detailed description of the error.<br />

See the BDL Function Reference for details on error-handling functions.<br />

Compiler errors<br />

Lexical errors<br />

If an error occurs during compilation, the SilkPerformer compiler stops at the<br />

position where the error was detected. The error message is displayed and the<br />

line causing the error is highlighted. The compiler distinguishes among three<br />

categories of errors:<br />

- “Lexical errors” (LEX)<br />

- “Syntax errors” (SYN)<br />

- “Semantic errors” (SEM)<br />

A lexical error (error type LEX) occurs if the compiler detects lexical symbols<br />

that are not allowed in Benchmark Description Language.<br />

Example<br />

If a script contains an invalid character such as '{', compilation is aborted and an<br />

error message is printed:<br />

1 benchmark WebTest<br />

2<br />

3 dcluser<br />

4 user {<br />

Output<br />

compile error LEX 13: not a lexical symbol of BDL<br />

--- compilation was not successful ---<br />

Syntax errors<br />

A syntax error (error type SYN) occurs if the syntax of a test script does not<br />

agree with the syntax of Benchmark Description Language.<br />

Example<br />

If you do not specify the keyword then within an if statement, an error message<br />

appears:<br />

8 transaction TMain<br />

9 var<br />

10 j : number init 1;<br />

11 i : array [500] of number;<br />

12 s : array [5] of string(10);<br />

13 begin<br />

14 if j=1<br />

15 j:<br />

Output<br />

SilkPerformer User Guide 357


18 TROUBLE SHOOTING<br />

Error Message Overview<br />

compile error SYN 38: 'then' expected<br />

--- compilation was not successful ---<br />

Semantic errors<br />

System limitation<br />

errors<br />

Runtime errors<br />

Internal errors<br />

A semantic error (error type SEM) occurs if semantic conditions do not comply<br />

with the requirements of Benchmark Description Language.<br />

Example<br />

If you use an undeclared variable (“i” in the example below), compilation is<br />

aborted and an error message is displayed:<br />

46 dcltrans<br />

47 transaction TMain<br />

48 var<br />

49 artname : string(40);<br />

50 artno, price : number;<br />

51 result set c1;<br />

52 begin<br />

53 writeln; write("transaction TMain:"); writeln;<br />

54 c1: SelArticle(out artno, price, artname);<br />

56 write("rows found: "); write(rows(c1));<br />

57 fetch c1 all;<br />

58 for i:<br />

Output<br />

compile error SEM 12: variable is not declared<br />

--- compilation was not successful ---<br />

System limitation errors (error types RES) can occur while either compiling a<br />

script or running a load test. If they occur during a test execution, they will cause<br />

the test to fail. These errors indicate that a system limitation has been exceeded.<br />

Only the SilkPerformer simulator will produce run-time errors (error type<br />

RUN). Run-time errors indicate programming errors in test scripts that cannot<br />

be recognized during compilation (for example, using array indexes outside the<br />

scope of an array). If a run-time error occurs, an error message is printed on<br />

screen and to a .rpt file.<br />

SilkPerformer can detect internal script errors (error type COM). Please contact<br />

<strong>Borland</strong> technical support if you encounter one.<br />

358 SilkPerformer User Guide


Index<br />

Symbols<br />

.NET 19, 20, 104, 128, 269<br />

.NET Explorer 269<br />

.NET Framework 269<br />

Remoting objects 269<br />

@codepage 310<br />

A<br />

Abandon option 85<br />

Accepted Baseline Reports 182<br />

ADO 19, 114, 128<br />

Adobe Flex 338<br />

Advanced Flex Data Services 338<br />

Agents 121<br />

Agent Pool 32<br />

Connection properties 51<br />

Monitoring 195<br />

Multiple 165<br />

Pool settings 33, 48<br />

Remote 48<br />

AJAX 311<br />

Alphanumeric characters 91<br />

AMF3 337<br />

Creating projects 346<br />

Data types 339<br />

References 343<br />

XML tags 345<br />

Animated checkbox 136<br />

Application profiles 39, 40, 41<br />

Application types, available 17<br />

Arguments, program 42<br />

ARM options 73<br />

Arrays 170<br />

ASCII 308<br />

Authentication, browsers 85<br />

B<br />

Bandwidth 75<br />

Baseline performance 177, 179<br />

Establishing 25<br />

Baseline Reports 26, 180, 182<br />

Benchmark Description Language 213<br />

<strong>Borland</strong> Optimizeit ServerTrace Plug-In 265<br />

Boundaries, fixed 170<br />

Bounds<br />

Variable, upper 170<br />

Browsers 144<br />

authentication 85<br />

Browser-level API 89<br />

Options 79<br />

Settings 83<br />

C<br />

Candle graphs 227<br />

Certificates, client 52<br />

Character encodings 309<br />

Charts 214<br />

Custom 214<br />

Options 225<br />

CIDR 145<br />

Citrix 44, 102, 128<br />

Citrix MetaFrame 19<br />

Measurements 243<br />

Client certificates 46, 52, 78<br />

Exporting 54<br />

Client-side real-time measures 75<br />

Code completion 249<br />

Code List, Code completion 249<br />

Codepage 310<br />

COM 19, 44, 128<br />

COM/ADO 114<br />

Command line<br />

Options 109<br />

Commandline<br />

Launching tests 205<br />

Component testing, remote 273<br />

Computers, agent 121<br />

Concurrent connections 232<br />

Configuring services 40<br />

Configuring SilkPerformer 31<br />

Connect timeout 76<br />

Connection parameters 197<br />

Content-encoding 81<br />

Control settings 36<br />

Controller connection, configuring 48<br />

Cookies 148, 150<br />

persistent recording 89<br />

CORBA 63, 105, 241<br />

Measurements 241<br />

Counter logs 259<br />

CPU utilization 232<br />

CSV files<br />

Converting to Time Series Data format 259<br />

SilkPerformer User Guide 359


csv2tsd.exe 259<br />

Customizing test scripts 139<br />

D<br />

Data files 120<br />

Data files, multi-column 254<br />

Data Source Wizard 196<br />

Data types<br />

Structured 172<br />

Data verification 93<br />

Databases 18, 63, 238<br />

Measurements 242<br />

DB2 CLI 44<br />

Digest verification 92<br />

Directories 32<br />

Settings 34<br />

DLLs 166<br />

DNS lookup 88<br />

Document cache 87<br />

Document download time 239<br />

Downstream traffic 76<br />

Duplex 76<br />

dynaTrace Diagnostics plug-in 267<br />

E<br />

eCATT, SAP 312<br />

Eclipse plug-in 325<br />

Installing 326<br />

Viewing test results 332<br />

Working with projects 328<br />

EJB 18, 43<br />

Emailing projects 247<br />

Embedded objects data 239<br />

Emulate DNS lookup 88<br />

Encodings, character 309<br />

Encryption 49<br />

Enterprise JavaBeans 269<br />

ERP/CRM 17<br />

Error code 66<br />

Error tolerance 85<br />

Error-handling 65<br />

Errors, SilkPerformer 353<br />

EUC-JP 309<br />

Evaluating SilkPerformer 4<br />

Exploring TrueLogs 136<br />

Exporting projects 246<br />

External functions 166<br />

F<br />

File locking 248<br />

Files, data 120<br />

Firewalls 49<br />

HTTP 50<br />

Multiple 52<br />

SOCKS 51<br />

TCP/IP 49<br />

Fixed boundaries 170<br />

Flash Remoting 17<br />

Flex 337<br />

Creating projects 346<br />

Data types 339<br />

References 343<br />

XML tags 345<br />

FTP 45, 128<br />

Passive semantics 76<br />

Function declarations 141<br />

Functions<br />

External 166<br />

Matrix 174<br />

Parsing 153<br />

G<br />

Graphs 222<br />

Green screen support 314<br />

GUI-level testing support 317<br />

Configuring Terminal Services settings 321<br />

Configuring Windows 320<br />

Functions 318<br />

H<br />

Host name 46<br />

Host options 77<br />

HTML 175<br />

Page Timers 137<br />

HTTP 45, 81, 234<br />

Firewalls 50<br />

HTTP body transformation 93<br />

HTTPS 46<br />

I<br />

IBM 314<br />

IDL files 108<br />

IIOP 44, 63, 105, 128, 241<br />

Measurements 236<br />

Importing projects 246<br />

Indention, smart 251<br />

Informational 66<br />

Input data, customized 252<br />

Interfaces<br />

Server 44<br />

360 SilkPerformer User Guide


Internet Explorer 42, 54<br />

Internet options 75<br />

IP addresses 46, 144<br />

Issues, known and workarounds in<br />

SilkPerformer 304<br />

J<br />

Jacada 43<br />

Java 19, 20, 129, 249, 269, 273<br />

Advanced options 109<br />

API 43<br />

Compiling files 258<br />

Configuration 55<br />

EJB 43<br />

Integration with SilkPerformer<br />

Java Framework 256<br />

Java Explorer 271<br />

Java Framework 271<br />

Java Virtual Machine 109<br />

JNDI 43<br />

Logging options 110<br />

Options 108<br />

Projects in SilkPerformer 257<br />

RMI 43<br />

JIT compiler 109<br />

Jolt 128<br />

JSON<br />

Pretty-formatted 311<br />

JUnit 19, 273<br />

K<br />

Keep-alive semantics 81<br />

Known issues in SilkPerformer 304<br />

L<br />

LAN 33, 49<br />

Latin-1 309<br />

Layout<br />

Reports 217<br />

Settings 35<br />

LDAP 20, 45, 128<br />

Licensing<br />

SilkPerformer 4<br />

Link checking 92<br />

Listen port 46<br />

Load tests<br />

Defining workload 27<br />

Executing 28<br />

Launching from commandline 205<br />

Starting 194<br />

Loading times tolerance 84<br />

Locking, files 248<br />

Log files 136<br />

M<br />

Manual script writing 131<br />

Mapi 20<br />

Measurements 230<br />

Memory 232<br />

Memory footprints by application type 7<br />

Message output 264<br />

MIBs 196<br />

Middleware measurements 242<br />

Modems 75, 144, 178<br />

Compression rate 76<br />

Module 65<br />

Monitoring<br />

Data 221<br />

Requirements 199<br />

Servers 183<br />

Multi-Byte Character Set (MBCS) 309<br />

Multi-column data files 254<br />

N<br />

Netscape 42, 55<br />

Network options 75<br />

NUnit 19, 273<br />

O<br />

OCI 44<br />

ODBC 44, 111<br />

OID 197<br />

Options<br />

Recording 107, 114<br />

Verification 90<br />

Oracle 17, 128<br />

Oracle Forms 18, 43, 97, 128<br />

Oracle Applications 12i 17<br />

Customizing scripts for replay 349<br />

ORB features support 107<br />

Outlining projects 16<br />

Output files 138, 178<br />

Output messages 264<br />

Overlay series 222<br />

Overview Report 229<br />

Overview Summary Reports 213<br />

SilkPerformer User Guide 361


P<br />

PAC 81<br />

Page data 239<br />

Page timers 138<br />

Page-based browser-level API 88<br />

Parameter Wizard 252<br />

Parameters<br />

Passing 168<br />

Test 5<br />

Parsing functions 153<br />

Passwords 86<br />

Authentication 49<br />

Performance<br />

Monitoring 195<br />

Test baseline 179<br />

Performance and Scalability Matrix 5<br />

Performance counter logs 259<br />

Performance Data Collection Engine 213<br />

Performance Explorer 75, 212, 213, 229, 259<br />

Converting CSV data for import 259<br />

Performance, baseline 25, 177<br />

Persistent-cookie recording 89<br />

Plug-Ins<br />

Initializing 264<br />

POP3 46<br />

Port settings 48<br />

Preprocessor arguments 108<br />

Printable characters 91<br />

Profile settings 60<br />

.NET options 104<br />

Administering Profiles 60<br />

Citrix options 102<br />

COM/ADO options 114<br />

CORBA options 105<br />

Database options 110<br />

IIOP options 105<br />

Internet options 75<br />

Java options 108<br />

Oracle Forms options 97<br />

Recording options 62<br />

Replay options 64<br />

Result options 66<br />

SAP GUI options 99<br />

Script options 62<br />

Simulation options 64<br />

Terminal Client options 94<br />

WAP options 117<br />

Web options 79<br />

Profile settings, projects 60<br />

Profiles<br />

Applications 41<br />

Users 144<br />

Program arguments 42<br />

Project profile settings 60<br />

Projects<br />

Configuring 60<br />

Emailing 247<br />

Importing/exporting 246<br />

Outlining 16<br />

Uploading to SilkCentral 247<br />

Protocol selection 42<br />

Protocol-specific recording options 63<br />

Proxies 39, 86<br />

Options 82<br />

Servers 50<br />

Settings 40, 45<br />

Proxy Auto-Config 81<br />

PVCS 297<br />

Q<br />

Queuing workload 64<br />

R<br />

Random variables 253<br />

Real-time measures 75<br />

Recorder 45<br />

Matrix 174<br />

Protocol-specific options 63<br />

SilkPerformer 39<br />

Recording<br />

Options 62, 88, 107, 114<br />

Reload times 84<br />

Remedy 129, 333<br />

SilkEssential 336<br />

Remote agents, configuring 48, 165<br />

Remote-component testing 273<br />

Rendezvous functionality 164<br />

Replay 77<br />

Errors 66<br />

Options 64<br />

Via a scripting function 54<br />

Within the GUI 54<br />

Reports 215, 229<br />

Custom 216<br />

Files 137<br />

Layouts 217<br />

Request data 240, 243<br />

Requests sent 232<br />

Response data 175, 240<br />

Response data verification 158<br />

Response time 243<br />

Thresholds 182<br />

Transactions 137<br />

Responses failed 233<br />

362 SilkPerformer User Guide


Responsiveness 232<br />

REST 311<br />

Results 33<br />

Analyzing 29<br />

Custom 219<br />

Exploring, test 209<br />

Options 66<br />

Overview 209<br />

Settings 38<br />

Viewing facilities 210<br />

RMI objects 269<br />

Root cause analysis, visual 212<br />

S<br />

Sample scripts 19, 131<br />

SAP 17<br />

eCATT 312<br />

SAPGUI 17<br />

SAP GUI 99<br />

Scalability<br />

Performance and Scalability Matrix 5<br />

Scaling options 223<br />

Scripts 119<br />

Customizing 24, 139<br />

Modeling 21<br />

Samples 19, 131<br />

Trying out 23, 132<br />

Validating 22<br />

Writing manually 131<br />

Security options 77<br />

Security, encryption 49<br />

Server busy time 239<br />

Server interfaces 44<br />

Server monitoring 183<br />

Requirements 199<br />

ServerTrace 266<br />

Services<br />

Configuring 40<br />

Session handling 149<br />

Session IDs 152<br />

Settings<br />

Browser 83<br />

Severity 65<br />

Shift-JIS 309<br />

Siebel 17<br />

Silk Performance Explorer 259<br />

SilkCentral<br />

Test Manager 211, 287<br />

Uploading projects to 247<br />

SilkEssential<br />

Remedy 336<br />

SilkPerformer<br />

Configuring 31<br />

Evaluation version 4<br />

Licensing 4<br />

Overview 1<br />

Recorder 39, 45<br />

Upgrading to 4<br />

What’s new 2<br />

Workbench 32<br />

SilkPerformer 2006 R2<br />

What’s new 2<br />

SilkTest<br />

GUI-level testing support 317<br />

Simulation 65<br />

Options 64<br />

Settings 83<br />

Smart indention 251<br />

SMTP 46, 128<br />

SNMP 197<br />

SOCKS 42, 46, 47, 49, 128<br />

Firewalls 51<br />

Proxy server 51<br />

Source code control integration<br />

SilkPerformer 295<br />

Source control integration 33<br />

MS VSS 296<br />

PVCS 296<br />

SilkPerformer 295<br />

StarTeam 296, 298, 299<br />

SQL 63, 237<br />

SQLSTATE 110<br />

SSL 49, 78<br />

StarTeam<br />

Source control integration 296, 298, 299<br />

Stress test 64<br />

Structured data types 172<br />

Subnet masks 145<br />

Summary Reports 213<br />

Summary tables 137<br />

Synchronization 163<br />

Source control status 303<br />

System classpath 109<br />

System Configuration Manager 48, 49, 145, 160<br />

T<br />

Table verification 92<br />

TCP/IP 44, 46<br />

Firewalls 49<br />

Templates<br />

Monitoring 196<br />

Custom 184<br />

Reports 217<br />

Terminal Client 94<br />

Terminal emulation 17, 314<br />

Terminal Emulation Support<br />

SilkPerformer User Guide 363


TN3270 314<br />

TN5250 314<br />

VT100 314<br />

VT200 314<br />

Test baseline<br />

Establishing 26<br />

Performance 179<br />

Test Manager<br />

Integration 210<br />

Test Manager, SilkCentral 33, 287<br />

Test parameters 5<br />

Test results<br />

Exploring 209<br />

Overview 209<br />

Viewing facilities 210<br />

Test scripts 119<br />

Customizing 24, 139<br />

Modeling 21<br />

Samples 131<br />

Trying out 23, 132<br />

Validating 22<br />

Writing manually 131<br />

Tests<br />

Executing, load 28<br />

Launching from commandline 205<br />

Remote components 273<br />

Results, analyzing 29<br />

Starting 194<br />

Text and grid color 223<br />

Think time<br />

Limited 64<br />

Random 64, 177<br />

Thresholds<br />

Response time 182<br />

Time series data 226<br />

Traffic 76<br />

Upstream 76<br />

Transaction declarations 141<br />

Transaction response times 137<br />

Transactions measurement group 238<br />

Trouble shooting, SilkPerformer 353<br />

TrueLog<br />

Exploring 136<br />

Setting options 70<br />

TrueLog Explorer 22<br />

TrueLog Explorer 135, 140, 150, 157<br />

Function matrix 174<br />

TrueLog On Error 190, 212<br />

TSD (Time Series Data) 259<br />

TSD-Writer 228<br />

Tuxedo 18, 44, 128, 243<br />

U<br />

Unicode 308<br />

Unicode Text/Hex Editor 311<br />

Unit testing 19, 273<br />

Uploading projects to SilkCentral 247<br />

Upper bounds, variable 170<br />

Upstream traffic 76<br />

User distribution 190<br />

User groups 142<br />

Customization 143<br />

User profiles 144<br />

User tolerance 84<br />

User types 137, 178<br />

UTF-16 309<br />

UTF-8 309<br />

V<br />

Validating test scripts 22<br />

Variables, random for virtual users 253<br />

Verification<br />

Response data 158<br />

Verification under load 211<br />

Verifications<br />

Data 93<br />

Digest 92<br />

Options 90<br />

Table 92<br />

Virtual User Summary report 135<br />

Virtual users 137, 142<br />

Monitoring 195<br />

Output files 229<br />

Parameter Wizard 252<br />

Stopping 65<br />

Vista, Windows 308<br />

Visual analysis of TrueLogs 135<br />

Visual SourceSafe 297<br />

Visual Studio .NET, Add-In 270<br />

W<br />

WAN 49<br />

Agents 51<br />

Networks 33<br />

WAP 117<br />

Measurements 240<br />

Warning 66<br />

WChar 106<br />

Web 136, 249<br />

Settings 42<br />

Web application testing, AJAX 311<br />

Web form<br />

364 SilkPerformer User Guide


Measurements 239<br />

Web forms 138, 147, 181<br />

Web page measurements 239<br />

Web Services 18, 20<br />

WebDAV (MS Outlook Web Access) 17<br />

WebSphere Application Servers 3.5 / 4.0 200<br />

Windows Vista 308<br />

WinSock 42, 128<br />

Workbench, SilkPerformer 245<br />

Workload 187<br />

Available models 185<br />

Customizing 142<br />

Defining 27, 121<br />

Queuing 64<br />

Workspace 33<br />

Settings 38<br />

Writing test scripts manually 131<br />

WString 106<br />

X<br />

XML 20<br />

Pretty-formatted 311<br />

Verification 92<br />

XML/SOAP 18<br />

Z<br />

ZIP archives 246<br />

SilkPerformer User Guide 365


366 SilkPerformer User Guide

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!