Software Testing Experience
Wednesday, April 9, 2008
Introduction to QTP 8.0
QUICKTEST Pro 8.0
Course Material
V 1.0
| Name | Role | Date |
Prepared by | |||
Reviewed by | |||
Approved by |
Revision History
A – Added, M – Modified, D – Deleted
S.No | Date | Version No | Page No | Change Mode (A/M/D) | Brief description of change |
Table of Contents
1.0 Introduction to QuickTest 1
1.1 Over view of Quick Test Pro 8.0 1
1.1.1 QuickTest Pro 8.0 Environment Support 1
1.1.2 QuickTest Pro 8.0 Configurations 2
2.1 Create and Execute Basic Scripts 3
2.2 Understand Recording Levels 5
2.3 Understand QuickTest Results 6
3.0 How QuickTest identifies objects 10
3.1.1 Object Identification While Recording 10
3.1.2 Object Identification During Test Run 10
3.2 Object Repository Introduction 10
3.2.1 Identifying the Object 11
3.2.2 Viewing the Object's Properties 11
3.3.1 To view object properties: 12
3.3.2 To view object methods: 13
4.1 Synchronizing Your Tests 15
4.2 Options to Synchronize Tests 15
4.1.1 4.2.1 Inserting Synchronization Point 15
4.1.2 4.2.2 Adding Exist and Wait Statements 16
4.1.3 Global synchronization Settings 16
4.1.4 4.3.1 Inserting Transactions 16
4.1.5 4.3.2 Ending Transactions 17
5.2 Adding Checkpoints to a test 18
5.1.1 5.2.1 To add checkpoints while recording: 18
5.1.2 To add a checkpoint while editing your test: 18
5.1.3 5.2.2.1 From Menu bar 18
5.1.4 5.3.1 QuickTest Professional Checkpoint Types 18
5.1.5 5.3.2 Creating a Standard Checkpoint 19
5.1.6 5.3.3 Creating a Text Checkpoint 19
5.4 Use regular expressions 19
5.1.7 5.4.1 To define a constant property value as a regular expression: 20
5.1.8 5.4.2 To parameterize a property value using regular expressions: 20
5.1.9 5.4.3 To define a regular expression in an object checkpoint: 20
5.1.10 5.4.4 Common options to create regular expressions. 20
6.0 Creating Tests with Multiple Actions 22
6.1 Benefits of Test Modularity 22
6.2 Creating Tests with Multiple Actions 22
6.1.1 6.2.1 Creating New Actions 22
6.1.2 6.2.2 Inserting Existing Actions 23
6.1.3 6.2.3 Nesting Actions 23
6.1.4 6.2.4 Splitting Actions 24
6.1.5 6.3.1 Setting Action Properties 24
6.1.6 6.3.2 Sharing Action Information 24
6.1.7 6.3.3 Exiting an Action 24
6.1.8 6.3.4 Removing Actions from a Test 24
6.1.9 6.3.5 Renaming Actions 24
6.1.10 6.3.6 Renaming Actions 24
7.1.1 7.1.1 Parameterize test Manually 26
7.1.2 7.1.2 DataTable Parameters 26
7.1.3 7.1.3 Using Environment Variable Parameters 26
7.2 Create data-driven tests 27
7.3 Local and Global Data Tables 27
7.1.4 7.3.1 Using the Data Driver to Parameterize Your Test 28
8.0 Working with Data Tables 30
8.2 Working with Global and Action Sheets 30
8.3 Editing and Saving Data Table 30
8.4 Importing Data from a Database 31
8.5 Using Formulas in the Data Table 31
8.6 Using Data Table Scripting Methods 32
9.1 About Outputting Values 33
7.1.5 9.1.1 Creating Page Output Values 33
7.1.6 9.1.2 Creating Text Output Values 33
7.1.7 9.1.3 Creating Standard Output Values 33
7.1.8 9.1.4 Creating Image Output Values 34
7.1.9 9.1.5 Creating XML Output Values 34
7.1.10 9.1.6 Creating Table Output Values 34
7.1.11 9.1.7 Creating Database Output Values 34
9.2 Capture and Reuse Run Time data 34
7.1.12 9.2.1 Adding a Standard Output Value 34
7.1.13 9.2.2 Creating Image Output Values 34
7.1.14 9.2.3 Creating Table Output Values 35
10.0 Alternatives to Standard Recording 36
7.1.15 10.1.1 Analog Recording 36
7.1.16 10.1.2 Recording in Analog Mode 36
7.1.17 10.2.1 Recording in Low-Level mode 37
10.3 Configuring Web Event Recording 38
7.1.18 10.3.1 To set Web Event Recording Configuration: 38
10.4 Define a Virtual Object 38
7.1.19 10.4.1 To define a virtual object: 38
11.0 Introduction to the Expert View 41
11.1 Object Model in the Expert View 41
11.2 Using QuickTest Professional's online books 41
12.0 Working in the Expert View 43
12.1 VBScript Language Overview 43
7.1.20 12.1.1 VBScript Data Types 43
7.1.21 12.1.2 VBScript Variables 43
7.1.22 12.1.3 VBScript Constants 44
7.1.23 12.1.4 VBScript Operators 44
7.1.24 12.1.5 Using Conditional Statements 45
7.1.25 12.1.6 Looping Through Code 46
7.1.26 12.1.7 VBScript Procedures 47
12.2 Working with the Data Table Object 48
7.1.27 12.2.1 AddSheet Method 48
7.1.28 12.2.2 DeleteSheet Method 48
7.1.29 12.2.3 Export Method 48
7.1.30 12.2.4 ExportSheet Method 48
7.1.31 12.2.5 GetCurrentRow Method 48
7.1.32 12.2.6 GetRowCount Method 48
7.1.33 12.2.7 GetSheet Method 49
7.1.34 12.2.8 GetSheetCount Method 49
7.1.35 12.2.9 Import Method 49
7.1.36 12.2.10 ImportSheet Method 49
7.1.37 12.2.11 SetCurrentRow Method 49
7.1.38 12.2.12 SetNextRow Method 49
7.1.39 12.2.13 SetPrevRow Method 49
7.1.40 12.2.14 GlobalSheet Property 49
7.1.41 12.2.15 LocalSheet Property 49
7.1.42 12.2.17 RawValue Property 49
7.1.43 12.2.18 Value Property 50
12.3 Working with TextUtil Object. 50
7.1.44 12.3.1 GetText Method 50
7.1.45 12.3.2 GetTextLocation Method 50
12.4 Working with Reporter Objects 50
7.1.46 12.4.1 ReportEvent Method 50
7.1.47 12.4.2 Filter Property 50
7.1.48 12.4.3 ReportPath Property 50
13.0 Object Recognition and Smart Identification 51
13.1 Object Repository Custom Configuration 51
13.2 Introduction to Smart Identification 51
13.2.1 13.2.1 Base filter properties 52
13.2.2 13.2.2 Optional filter properties 52
13.3 Understanding the Smart Identification Process 52
13.4 Smart Identification Configuration 52
14.0 Enhance Test Cases with Descriptive Programming 54
14.1 Interact with Test Objects not stored in the Object Repository 54
14.1.1 14.1.1 Entering Programmatic Description Directly into Test Statements 54
14.1.2 14.1.2 Using Description Objects for Programmatic Descriptions 55
14.1.3 14.1.3 Retrieving ChildObjects 55
14.1.4 14.1.4 Using Programmatic Descriptions for the WebElement Object 56
14.1.5 14.1.5 Using the Index Property in Programmatic Descriptions 56
14.2 Access Dynamic Objects during run-time 56
14.2.1 14.2.1 Retrieving Run-Time Object Properties 56
14.2.2 14.2.2 Activating Run-Time Object Methods 57
15.0 Enhance Test Cases with User-Defined Functions 58
15.1 Utilize external Windows API functions in Test Cases 58
15.1.1 15.1.1 Extern Object 58
15.2 Create QuickTest user-defined functions 60
16.1 Review of database concepts 62
16.1.1 Understanding relational tables 62
16.1.3 Using SQL to interact with a database 63
16.2 How to add a database checkpoint in QuickTest 64
17.0 Recovery Manager and Scenarios 70
18.0 Scripting in Real Time Environments 96
18.1 QuickTest Pro Coding Standards & Best Practices 96
18.2.1 Local scope variables 96
18.2.2 Global scope variables 96
18.2.8 Object Repository Files 98
18.3.3 Using Shared Object Repository 101
18.3.4 Using Relative paths 101
18.3.5 Using Global Variables 101
Introduction to QuickTest
Over view of Quick Test Pro 8.0
QuickTest Pro is Mercury Imperative's functional enterprise testing tool.
QuickTest Professional is a fresh approach to automated software and application testing .It is designed to provide a robust application verification solution without the need for advanced technical or programming
QuickTest Pro is similar to Astra QuickTest. The key difference lies in the number of environments that QuickTest Professional supports (e.g. ERP/CRM, Java applets and applications, multiple multimedia environments, etc.).
QuickTest Professional enables you to test standard Windows applications, Web objects, ActiveX controls, Visual Basic applications, and multimedia objects on Web pages.
We Can Use QuickTest add-ins for a number of special environments (such as Java, Oracle, SAP solutions, .NET Windows and Web Forms, Siebel, PeopleSoft, Web services, and terminal emulator applications).
QuickTest Pro 8.0 Environment Support
Windows Applications (MFC) • Visual Basic • Java • ActiveX | Enterprise Applications • SAP • Oracle • PeopleSoft • Siebel | Web Technologies HTML • DHTML • JavaScript |
Browsers IE • Netscape • AOL | Emerging Technologies • .Net Winforms, Webforms, Web services • J2EE Web services • XML, WSDL, UDDI | Terminal Emulators • 3270 • 5250 • VT100 |
Server Technologies • Oracle • Microsoft • IBM • BEA • ODBC • COM/COM+ | Multimedia • RealAudio/RealVideo • Windows Media Player • Flash | Languages • European • Japanese • Chinese (traditional and simplified) • Korean |
QuickTest Pro 8.0 Configurations
QuickTest Pro | QuickTest Pro Add-ins |
Web Environments IE NS AOL ActiveX XML DHTML HTML
Client/Server Windows Win32/MFC Visual Basic
Operating Systems Windows 98, 2000, NT, ME, XP
|
.Net Add-in Winforms, Webforms, Net Controls
Java Add-in JDK 1.1-1.4.2
Terminal Emulator Add-in 3270,5250,vt100
MySAP Add-in SAP GUI, Web, Portals 6.2
Oracle Add-in 11i
PeopleSoft Add-in 8.0-8.8
Siebel Add-in 7.0 & 7.5
Webservices Add-in WSDL,.Net,J2EE |
Record and Playback
Create and Execute Basic Scripts
Recording Tests
- Start QuickTest and open a new test.
- If QuickTest is not currently open, choose Start > Programs > QuickTest Professional > QuickTest Professional.
In the Add-in Manager, confirm that the Web Add-in is selected, and clear all other add-ins. Click OK to close the Add-in Manager and open QuickTest.
Note: While QuickTest loads your selected add-ins, the QuickTest splash screen is displayed. This may take a few seconds. If the Welcome window opens, click Blank Test.
- If QuickTest is not currently open, choose Start > Programs > QuickTest Professional > QuickTest Professional.
Otherwise, choose File > New, or click the New button .
A blank test opens.
- If QuickTest is already open, check which add-ins are loaded by selecting Help > About QuickTest Professional. If the Web Add-in is not loaded, you must exit and restart QuickTest. When the Add-in Manager opens, select the Web Add-in, and clear all other add-ins.
Choose File > New, or click the New button .
A blank test opens.
Note: If the Add-in Manager does not open when starting QuickTest, choose Tools > Options. In the General tab, select Display Add-in Manager on startup. When you exit and restart QuickTest, the Add-in Manager opens.
- Start recording.
- Choose Test > Record or click the Record button The Record and Run Settings dialog box opens.
In the Web tab, select Open the following browser when a record or run session begins.
- Choose Test > Record or click the Record button The Record and Run Settings dialog box opens.
- Choose a browser from the Type list and confirm that the URL in the Address box is for example . http://newtours.mercuryinteractive.com.
- Confirm that Close the browser when the test is closed is selected.
- In the Windows Applications tab, confirm that Record and run on these applications is selected, and that there are no applications listed.
This setting prevents you from inadvertently recording operations performed on various Windows applications (such as e-mail) during a recording session.
- Click OK.
QuickTest begins recording, and your browser opens to the Mercury Tours Web site.
- Login to the Mercury Tours Web site.
In the User Name and Password boxes, type the name and password you registered with Mercury Tours.
Click Sign-In.
The Flight Finder page opens.
- Enter flight details.
Change the following selections:
Departing From: New York
On: Dec 29
Arriving In: San Francisco
Returning: Dec 31
Service Class: Business class
Click CONTINUE to accept the other default selections. The Select Flight page opens.
Note: When entering dates while recording this test, do not click the View Calendar button, which opens a Java-based calendar. Your test will not record the date selected using this calendar because you did not load the Java Add-in for this tutorial.
To check which add-ins have been loaded, click Help > About QuickTest Professional. To change the available add-ins for your tests, you must close and reopen QuickTest Professional.
- Select a flight.
Click CONTINUE to accept the default flight selections. The Book a Flight page opens.
- Enter required passenger and purchase information.
Enter the required information (fields with red text labels) in the Passengers and Credit Card sections. (You may enter fictitious information.)
In the Billing Address section, select Ticketless Travel.
At the bottom of the page, click SECURE PURCHASE. The Flight Confirmation page opens.
- Review and complete your booking.
Click BACK TO HOME. The Mercury Tours home page opens.
- Stop recording.
In QuickTest, click Stop on the test toolbar to stop the recording process.
You have now reserved an imaginary business class ticket from New York to San Francisco. QuickTest recorded your Web browser operations from the time you clicked the Record button until you clicked the Stop button.
Save your test.
Select File > Save or click the Save button. The Save dialog box opens to the Tests folder.
Create a folder named Tutorial, select it, and click Open.
Type Recording in the File name field.
Confirm that Save Active Screen files is selected.
Click Save. The test name (Recording) is displayed in the title bar of the main QuickTest window.
Running a Test
Here you will run the test you recorded.
- Start QuickTest and open the Recording test.
If QuickTest is not already open, choose Start > Programs > QuickTest Professional > QuickTest Professional.
- If the Welcome window opens, click Open Existing.
- If QuickTest opens without displaying the Welcome window, choose File > Open
or click the Open button.
In the Open Test dialog box, locate and select the Recording test, then click Open.
- If the Welcome window opens, click Open Existing.
- Confirm that all images are saved to the test results.
QuickTest allows you to determine when to save images to the test results. In this lesson, all images should be saved to the test results.
Choose Tools > Options and select the Run tab. In the Save step screen capture to test results option, select always.
Click OK to close the Options dialog box.
- Start running your test.
Click Run or choose Test > Run. The Run dialog box opens.
Select New run results folder. Accept the default results folder name.
Click OK to close the Run dialog box.
Watch carefully as QuickTest opens your browser and starts running the test. In the browser, you can see QuickTest perform each step you recorded; a yellow arrow in the left margin of the test tree indicates the step that QuickTest is running.
Understand Recording Levels
Standard Recording
Records the test in terms of GUI objects
Analog Recording
enables you to record the exact mouse and keyboard operations you perform in relation to either the screen or the application window.
Low Level Recording
This mode records at the object level and records all run-time objects as Window or WinObject test objects.
Understand QuickTest Results
When QuickTest finishes running the test, the Test Results window opens.
Initially, the Test Results window contains two panes for displaying the key elements of your test run.
- The left pane displays the test results tree, an icon-based view of the steps that were performed while the test was running. Similar to the test tree in QuickTest main screen, it is organized according to the Web pages visited during the test run and can be expanded (+) to view each step. The steps performed during the test run are represented by icons in the tree. You can instruct QuickTest to run a test or action more than once using different sets of data in each run. Each test run is called an iteration and each iteration is numbered. (The test you ran had only one iteration.)
- The right pane displays the test results details. The iteration summary table indicates which iterations passed and which failed. The status summary table indicates the number of checkpoints or reports that passed, failed, and raised warnings during the test.
Your test run succeeded because QuickTest was able to navigate the Mercury Tours site just as the test was originally recorded. In this section, you will inspect the steps QuickTest performed when running your test, and how the application window appeared when a step was performed.
- View the test results for a specific step.
In the test results tree, expand (+) Test Recording Summary >
Recording Iteration 1 (Row 1) > Action1 Summary > Welcome Mercury > Find a Flight.
Highlight "fromPort":Select "New York" in the test results tree.
The Test Results window now contains three panes, displaying:
- the test results tree, with one step highlighted
- the test results details of the highlighted step
- the Active Screen, showing a screen capture of the Web page on which the step was performed.
When you click a page in the test results tree, QuickTest displays the corresponding page in the application view. When you click a step (an operation performed on an object) in the test results tree, the corresponding object is highlighted in the application view. In this case, the Departing From text box is highlighted.
2. Close the Test Results window.
Choose File > Exit.
Test Results Tree Symbols
indicates a step that succeeded.
indicates a step that failed.
indicates a warning, meaning that the step did not succeed, but it did not cause the action or test to fail.
indicates a step that failed unexpectedly, such as when an object is not found for a checkpoint.
indicates an optional step that failed and therefore was ignored. Note that this does not cause the test to fail.
indicates that the Smart Identification mechanism successfully found the object.
indicates that a recovery scenario was activated.
indicates that the test run was stopped before it ended.
How QuickTest identifies objects
Object Identification
Object Identification While Recording
Stores Object as Test Object, Determining the class it fits.
For each test object class, QuickTest always learns a list of mandatory properties. Checks whether this description is enough to uniquely identify the object. If it is not, QuickTest adds assistive properties, one by one, to the description, until it has a unique description.
Object Identification During Test Run
Searches for a run-time object that exactly matches the description of the test object
It expects to find a perfect match for both the mandatory and any assistive properties of test object
Uses Smart Identification mechanism to identify an object, even when the recorded description is no longer accurate.
Object Repository Introduction
The Object Repository dialog box displays a test tree of all objects in the current action or the entire test.
You can use the Object Repository dialog box to view or modify the properties of any test object in the repository or to add new objects to your repository.
Identifying the Object
The top part of the dialog box displays information about the object:
Information | Description |
Logical name | The name that QuickTest assigns to the object. |
Class | The class of the object. |
Find | Opens the Find dialog box, where you can find a property or value that occurs several times in the same action. |
Replace | Opens the Replace dialog box, where you can modify a property or value that occurs several times in the same action. |
Viewing the Object's Properties
The default properties for the object are listed in the Properties pane of the dialog box. The pane includes the properties, their values, and their types:
Pane Element | Description |
Type | The icon indicates that the value of the property is currently a constant. The icon indicates that the value of the property is currently a Data Table parameter. The icon indicates that the value of the property is currently an environment variable parameter. The icon indicates that the value of the property is currently a random number parameter. |
Property | The name of the property. |
Value | The value of the property. |
Enable Smart Identification | Indicates whether or not QuickTest uses Smart Identification to identify this object during the test run if it is not able to identify the object using the test object description. Note that this option is available only if Smart Identification properties are defined for the object's class in the Object Identification dialog box. Note: When you select Disable Smart Identification during the test run in the Run tab of the Test Settings dialog box, this option is disabled, although the setting is saved. When you clear the Disable Smart Identification during the test run check box, this option returns to its previous on or off setting after the test run. |
Add/Remove | Opens the Add/Remove Properties dialog box which lists the properties that can be used to identify the object. |
Use the Object Spy
Using the Object Spy, you can view the properties of any object in an open application. In addition to viewing object properties, the Object Spy also enables you to view both the run-time object methods and the test object methods associated with an object and to view the syntax for a selected method.
To view object properties:
Open your browser or application to the page containing the object on which you want to spy.
Choose Tools > Object Spy to open the Object Spy dialog box and display the Properties tab. Alternatively, click the Object Spy button from the Object Repository dialog box.
In the Object Spy dialog box, click the pointing hand. Both QuickTest and the Object Spy are minimized so that you can point to and click on any object in the open application.
Note: If the window on which you want to spy is partially hidden by another window, hold the pointing hand over the partially hidden window for a few seconds. The window comes into the foreground. You can now point and click on the object you want. You can configure the length of time required to bring a window into the foreground in the General tab of the Options dialog box.
If the object on which you want to spy can only be displayed by performing an event (such as a right-click or a mouse-over to display a context menu), hold the Ctrl key. The pointing hand temporarily turns into a standard arrow and you can perform the event. When the object on which you want to spy is displayed, release the Ctrl key. The arrow becomes a pointing hand again.
Click the object for which you want to view properties. The Object Spy returns to focus and displays the object hierarchy tree and the properties of the object that is selected within the tree.
To view the properties of the test object, click the Test Object Properties radio button. To view the properties of the run-time object, click the Run-Time Object Properties radio button.
Tip: You can use the Object property to retrieve the values of the run-time properties displayed in the Object Spy.
You can use the GetTOProperty and SetTOProperty methods to retrieve and set the value of test object properties for test objects in your test. You can use the GetROProperty to retrieve the current property value of the objects in your application during the test run.
If you want to view properties for another object within the displayed tree, click the object in the tree.
If you want to copy an object property or value to the clipboard, click the property or value. The value is displayed in the selected property/value box. Highlight the text in the selected property/value box and use Ctrl + C to copy the text to the clipboard or right-click the highlighted text and choose Copy from the menu.
Note: If the value of a property contains more than one line, the Values cell of the object properties list indicates multi-line value. To view the value, click the Values cell. The selected property/value box displays the value with delimiters indicating the line breaks.
To view object methods:
Open your browser or application to the page containing the object on which you want to spy.
Choose Tools > Object Spy to open the Object Spy dialog box. Alternatively, click the Object Spy button from the Object Repository dialog box.
Click the Methods tab.
Click the pointing hand. Both QuickTest and the Object Spy are minimized so that you can point to any object on the open application.
Note: If the object you want is partially hidden by another window, hold the pointing hand over the partially hidden window for a few seconds. The window comes into the foreground. You can now point and click on the object you want. You can configure this option in the Options dialog box.
If the object on which you want to spy can only be displayed by performing an event (such as a right-click or a mouse-over to display a context menu), hold the Ctrl key. The pointing hand temporarily turns into a standard arrow and you can perform the event. When the object on which you want to spy is displayed, release the Ctrl key. The arrow becomes a pointing hand again.
Click the object for which you want to view the associated methods. The Object Spy returns to focus and displays the object hierarchy tree and the run-time object or test object methods associated with the object that is selected within the tree.
To view the methods of the test object, click the Test Object Methods radio button. To view the methods of the run-time object, click the Run-Time Object Methods radio button.
Tip: You can use the Object property to activate the run-time object methods displayed in the Object Spy.
If you want to view methods for another object within the displayed tree, click the object on the tree.
If you want to copy the syntax of a method to the clipboard, click the method in the list. The syntax is displayed in the selected method syntax box. Highlight the text in the selected method syntax box and use Ctrl + C to copy the text to the clipboard, or right-click the highlighted text and choose Copy from the menu.
Synchronization
4.1 Synchronizing Your Tests
When you run tests, your application may not always respond with the same speed. For example, it might take a few seconds:
- For a progress bar to reach 100%
- For a button to become enabled
- For a button to become enabled
- For a window or pop-up message to open
You can handle these anticipated timing problems by synchronizing your test to ensure that QuickTest waits until your application is ready before performing a certain step
4.2 Options to Synchronize Tests
There are several options that you can use to synchronize your test:
- You can insert a synchronization point, which instructs QuickTest to pause the test until an object property achieves the value you specify.
- You can insert Exist or Wait statements that instruct QuickTest to wait until an object exists or to wait a specified amount of time before continuing the test.
- You can also increase the default timeout settings in the Test Settings and Options dialog boxes in order to instruct QuickTest to allow more time for certain events to occur.
4.2.1 Inserting Synchronization Point
- Begin recording your test.
- Display the screen or page in your application that contains the object for which you want to insert a synchronization point.
- In QuickTest choose Insert > Step > Synchronization Point. The mouse pointer turns into a pointing hand.
- Click the object in your application for which you want to insert a synchronization point.
If the location you click is associated with more than one object in your application, the Object Selection – Synchronization Point dialog box opens.
Select the object for which you want to insert a synchronization point, and click OK.
The Add Synchronization Point dialog box opens.
- The Property name list contains the test object properties associated with the object. Select the Property name you want to use for the synchronization point.
- Enter the property value for which QuickTest should wait before continuing to the next step in the test.
- Enter the synchronization point timeout (in milliseconds) after which QuickTest should continue to the next step, even if the specified property value was not achieved.
- Click OK. A WaitProperty step is added to your test.
For example, if you insert a synchronization point for the Update Order button, it may look something like this:
Window("Flights").WinButton("Update Order").WaitProperty "enabled", 1, 3000
4.2.2 Adding Exist and Wait Statements
You can use Exist and/or Wait statements in the Expert View to instruct QuickTest to wait for a window to open or an object to appear.
Exist statements return a Boolean value indicating whether or not an object currently exists.
Example following statement returns whether Flights Table is displayed:
y=Window("Flight Reservation").Dialog("Flights Table").Exist
Wait statements instruct QuickTest to wait a specified amount of time before proceeding to the next.
Example following statement waits for 10 seconds:
Wait (10)
Global synchronization Settings
Modifying Timeout Values
- To modify the maximum amount of time that QuickTest waits for an object to appear, change the Object Synchronization Timeout (Test > Settings > Run tab).
- To modify the amount of time that QuickTest waits for a Web page to load, change the Browser Navigation Timeout (Test > Settings > Web tab).
4.3 Transactions
The time taken by a section of the test to run can be measured by defining Transaction.
A transaction represents the business process that you are interested in measuring. You define transactions within your test by enclosing the appropriate sections of the test with start and end transaction statements.
4.3.1 Inserting Transactions
You define the beginning of a transaction in the Start Transaction dialog box.
To insert a transaction:
- In the test tree, click the step where you want the transaction timing to
begin. The page is displayed in the Active Screen tab.
- Click the Start Transaction button or choose Insert > Start Transaction. The
Start Transaction dialog box opens.
- Enter a meaningful name in the Name box.
- Decide where you want the transaction timing to begin:
To insert a transaction before the current step, select Before current step.
To insert a transaction after the current step, select After current step.
- Click OK. A tree item with the Start Transaction icon is added to the test tree.
4.3.2 Ending Transactions
You define the end of a transaction in the End Transaction dialog box.
To end a transaction:
- In the test tree, click the step where you want the transaction timing to end. The page opens in the Active Screen.
- Click the End Transaction button or choose Insert > End Transaction. The End Transaction dialog box opens.
- The Name box contains a list of the transaction names you defined in the
current test. Select the name of the transaction you want to end.
- Decide where to insert the end of the transaction:
To insert a transaction before the current step, select Before current step.
To insert a transaction after the current step, select After current step.
- Click OK. A tree item with the End Transaction icon is added to the test tree.
Checkpoints
5.1 About Checkpoints
A checkpoint
is a verification point that compares a current value for a specified property with the expected value for that property. This enables you to identify whether your Web site or application is functioning correctly.
5.2 Adding Checkpoints to a test
There are several ways to add checkpoints to your tests.
5.2.1 To add checkpoints while recording:
We can add checkpoints while recording the test. Use the commands on the Insert menu, or click the arrow beside the Insert Checkpoint button on the Test toolbar. This displays a menu of checkpoint options that are relevant to the selected step in the test tree.
To add a checkpoint while editing your test:
5.2.2.1 From Menu bar
Use the commands on the Insert menu, or click the arrow beside the Insert Checkpoint button on the Test toolbar. This displays a menu of checkpoint options that are relevant to the selected step in the test tree.
5.2.2.2 From Test Tree
Right-click the step in the test tree where you want to add the checkpoint and choose Insert Standard Checkpoint.
5.2.2.3 From the Active Screen
Right-click any object in the Active Screen and choose Insert Standard Checkpoint. This option can be used to create checkpoints for any object in the Active Screen (even if the object is not part of any step in your test tree).
5.3 Types of Checkpoints
A checkpoint
is a verification point that compares a current value for a specified property with the expected value for that property. This enables you to identify whether your Web site or application is functioning correctly.
5.3.1 QuickTest Professional Checkpoint Types
Checkpoint Type | Description |
Standard Checkpoint | Checks values of an object's properties |
Image Checkpoint | Checks the property values of an image |
Table Checkpoint | Checks information in a table |
Page checkpoint | Checks the characteristics of a Web page |
Text / Text Area Checkpoint | Checks that a text string is displayed in the appropriate place in a Web page or application window |
Bitmap Checkpoint | Checks an area of a Web page or application after capturing it as a bitmap |
Database Checkpoint | Checks the contents of databases accessed by an application or Web site |
Accessibility Checkpoint | Identifies areas of a Web site to check for Section 508 compliancy |
XML Checkpoint | Checks the data content of XML documents |
5.3.2 Creating a Standard Checkpoint
- Click the Insert Checkpoint toolbar button or choose Insert > Checkpoint > Standard Checkpoint.
- Click the object you want to check. The Select an Object dialog box opens.
- Select the item you want to check from the displayed object tree.
- Click OK. The Checkpoint Properties dialog box opens.
- Specify the settings for the checkpoint.
- Click OK to close the dialog box.
5.3.3 Creating a Text Checkpoint
- Display the page, window, or screen containing the text you want to check.
- Choose Insert > Checkpoint > Text Checkpoint, or click the arrow next to the Insert Checkpoint button and Choose Text Checkpoint.
- The QuickTest window is minimized and the mouse pointer turns into a pointing hand.
- Click the text string for which you want to create the checkpoint. If the area you defined is associated with more than one object, the Object Selection–Text Checkpoint
Properties dialog box opens. Select the required object
- The Text Checkpoint Properties dialog box opens.
- Specify the checkpoint settings.
- Click OK to close the dialog box.
5.4 Use regular expressions
Regular expressions enable QuickTest to identify objects and text strings with varying values.
You can use regular expressions when:
- Defining the property values of an object
- Parameterize a step
- Creating checkpoints with varying values
For example, if a window titlebar's name changes according to a file name, you can use a regular expression to identify a window whose titlebar has the specified product name, followed by a hyphen, and then any other text.
A regular expression is a string that specifies a complex search phrase. By using special characters such as a period (.), asterisk (*), caret (^), and brackets ([ ]), you can define the conditions of a search. When one of these special characters is preceded by a backslash (\), QuickTest searches for the literal character.
5.4.1 To define a constant property value as a regular expression:
- Open the Object Properties dialog box for the object either form test tree or from Active Screen or from Object Repository
- In the Property column, select the property you want to set as a regular expression.
- In the Edit value section, click Constant.
- Click the Edit Constant Value Options button. The Constant Value Options dialog box pens.
- Select the Regular Expression check box.
- In the Value box, enter the regular expression syntax for the string.
- Click OK to close the Constant Value Options dialog box.
- Click OK to save and close the Object Properties
5.4.2 To parameterize a property value using regular expressions:
Covered in Data Driving a Test
5.4.3 To define a regular expression in an object checkpoint:
- Display the page, window, or screen containing the text you want to check.
- Choose Insert > Checkpoint > Text Checkpoint, or click the arrow next to the Insert Checkpoint button and choose Text Checkpoint.
- Click the text string for which you want to create the checkpoint.
- Select the object for which you are creating the checkpoint. The Text Checkpoint Properties dialog box opens.
- In the Edit value section, click Constant.
- Click the Edit Constant Value Options button. The Constant Value Options dialog box opens.
- Select the Regular Expression check box.
- In the Value box, enter the regular expression syntax for the string.
- Click OK to close the Constant Value Options dialog box.
- Click OK to save and close Text Checkpoint Properties dialog box.
5.4.4 Common options to create regular expressions.
. | Matching Any Single Character |
[xy] | Matching Any Single Character in a List |
[^xy] | Matching Any Single Character Not in a List |
[x-y] | Matching Any Single Character within a Range |
* | Matching Zero or More Specific Characters |
+ | Matching One or More Specific Characters |
? | Matching Zero or One Specific Character |
( ) | Grouping Regular Expressions |
| Matching One of Several Regular Expressions |
^ | Matching the Beginning of a Line |
$ | Matching the End of a Line |
\w | Matching Any AlphaNumeric Character Including the Underscore |
\W | Matching Any Non-AlphaNumeric Character |
You can combine regular expression operators in a single expression to achieve the exact search criteria you need.
Creating Tests with Multiple Actions
Benefits of Test Modularity
- Makes code reusable.
- Scripts are easy to maintain.
- Scripts are efficient.
- Saves development time.
6.2 Creating Tests with Multiple Actions
You can divide your test into multiple actions by creating new actions or by inserting existing actions. There are three kinds of actions:
- Non-reusable action—an action that can be used only in the test in which it was created, and only once.
- Reusable action—an action that can be called multiple times by the test in which it was created (the local test) as well as by other tests.
- External action—a reusable action created in another test. External actions are read-only in the calling test. They can be modified only in the test in which they were created.
6.2.1 Creating New Actions
You can add new actions to your test during a recording session or while designing your test.
You can add the action as a top-level action, or you can add the action as a sub-action (or nested action) of an existing action in your test.
To create a new action in your test:
If you want to insert the action within an existing action, click the step after which you want to insert the new action.
- Choose Insert > New Action or click the New Action button. The Insert New Action dialog box opens.
- Type a new action name or accept the default name.
- If you wish, add a description of the action. You can also add an action description at a later time in the Action Properties dialog box.
- Select Reusable Action if you want to make the action reusable. You can also set or modify this setting at a later time in the Action Properties dialog box.
- Decide where to insert the action and select At the end of the test or After the current step.
- Click OK.
A new action is added to your test and is displayed at the bottom of the test tree or after the current step. You can move your action to another location in your test by dragging it to the desired location.
6.2.2 Inserting Existing Actions
You can insert an existing action by inserting a copy of the action into your test, or by inserting a call to the original action.
6.2.2.1 Inserting Copies Actions
When you insert a copy of an action into a test, the action is copied in its entirety, including checkpoints, parameterization, and the corresponding action tab in the Data Table. The action is inserted into the test as an independent, non-reusable action
Once the action is copied into your test, you can add to, delete from, or modify the action just as you would with any other recorded action. Any changes you make to this action after you insert it affect only this action, and changes you make to the original action do not affect the inserted action. You can insert copies of both reusable and non-reusable actions.
Steps to insert a copy of an action:
- Choose Insert > Copy of Action, right-click the action and select Insert Copy of Action, or right-click any step and select Action > Insert Copy. The Insert Copy of Action dialog box opens.
- Type a meaningful name for the action in the New action name box and give action description
- Specify where to insert the action : At the end of the test or After the current step.
- Click OK. The action is inserted into the test as an independent, nonreusable action.
6.2.2.2 Inserting Call to Actions
You can insert a call (link) to a reusable action that resides in your current test (local action), or in any other test (external action).
When you insert a call to an external action, the action is inserted in read-only format. You can view the components of the action in the action tree, but you cannot modify them.
Steps to insert a call to an action:
- Choose Insert > Call to Action, right-click the action and select Insert Call to Action, or right-click any step and select Action > Insert Call. The Insert Call to Action dialog box opens.
- In the Select an action box, select the action you want to insert from the list.
- Specify where to insert the action : At the end of the test or After the current step.
- Click OK. The action is inserted into the test as a call to the original action
6.2.3 Nesting Actions
Sometimes you may want to run an action within an action. This is called nesting.
Nesting actions Help you maintain the modularity of your test. Enable you to run one action or another based on the results of a conditional statement.
6.2.4 Splitting Actions
You can split an existing action into two sibling actions or into parent-child nested actions.
You cannot split an action and the option is disabled
- When an external action is selected
- When the first line of the action is selected
- While recording a test
- While running a test
- When you are working with a read-only test
6.3 Miscellaneous
6.3.1 Setting Action Properties
The Action Properties dialog box enables you to modify an action name, add or modify an action description, and set an action as reusable.
6.3.2 Sharing Action Information
There are several ways to share or pass values from one action to other actions:
- Store values from one action in the global Data Table and use these values as Data Table parameters in other actions.
- Set a value from one action as a user-defined environment variable and then use the environment variable in other actions.
- Add values to a Dictionary object in one action and retrieve the values in other actions.
6.3.3 Exiting an Action
You can add a line in your script in the Expert View to exit an action before it runs in its entirety.
There are four types of exit action statements you can use:
- ExitAction - Exits the current action, regardless of its iteration attributes.
- ExitActionIteration - Exits the current iteration of the action.
- ExitRun - Exits the test, regardless of its iteration attributes.
- ExitGlobalIteration - Exits the current global iteration.
6.3.4 Removing Actions from a Test
We can temove Non-reusable actions, External Actions, Reusable Actions, or Calls to External or Reusable actions.
6.3.5 Renaming Actions
You can rename actions from the Tree View or from the Expert View.
6.3.6 Renaming Actions
If you want to include one or more statements in every new action in your test, you can create an action template.
Steps to create an action template:
- Create a text file containing the comments, function calls, and other statements that you want to include in your action template.
- Save the text file as ActionTemplate.mst in your <QuickTest Installation Folder>\dat folder.
Data Driving a Test
7.1 Parameterize tests
You can use the parameter feature in QuickTest to enhance your tests by parameterizing values in the test. A parameter is a variable that is assigned a value from various data sources or generators.
Two different groups of parameters
- Data Table parameters - parameter is taken from data table.
- Other parameter types - parameter values are taken from random number, external user-defined file or enviorment variables etc.
7.1.1 Parameterize test Manually
- You can parameterize a step recorded in your test or a checkpoint added to your test.
- You can parameterize steps and checkpoints manually by opening the appropriate dialog box.
- You can parameterize a step in your test tree while recording or editing your test.
When you parameterize a step, you can parameterize an object property, a method argument, or both.
7.1.2 DataTable Parameters
You can supply the list of possible values for a parameter by creating a Data Table parameter.
Data Table parameters enable you to create a data-driven test that runs several times using the data you supply. In each iteration, QuickTest substitutes the constant value with a different value from the Data Table.
7.1.3 Using Environment Variable Parameters
QuickTest can insert a value from the Environment variable list, which is a list of variables and corresponding values that can be accessed from your test. Throughout the test run, the value of an environment variable remains the same, regardless of the number of iterations,
There are three types of environment variables:
7.1.3.1 User-Defined Internal
User defined internal variables are the variables that you define within the test. They are saved with the test and accessible only within the test in which they were defined.
Steps to add or modify environment variable parameters:
- In the Edit value section of the Object Properties, Object Repository, Method Arguments, or Checkpoint Properties dialog box, click Other as the type of parameter you want to use.
- Click the Edit Parameter Options button next to the parameter type box. The Parameter Options dialog box opens.
- Select Environment in the Parameter Types box.
- Accept the default name or enter a new name to add a new user-definedinternal environment parameter, or select an existing environment variable name from the Name box. If you select an existing internal parameter, you can modify the value.
- If you created a new parameter or selected an existing user-defined-internal parameter, enter the value for the parameter in the Value box.
- Select the Regular Expression check box if needed and Enter the regular expression
- Click OK to save your changes and close the dialog box.
7.1.3.2 User-Defined External
User defined external variables are the variable that you pre-defined in the active external environment variables file. You can create as many files as you want and select an appropriate file for each test. Note that external environment variable values are designated as read-only within the test.
To define these variables create an external environment variables file
To select the active external environment-variables file:
- Choose Test > Settings to open the Test Settings dialog box.
- Click the Environment tab.
- Select the Load variables and values from external file (reloaded each test run) check box.
- Use the browse button or enter the full path of the external environment- variables file you want to use with your test.
7.1.3.2 Build-in
Built-in variables, such as Test path and Operating system. They are accessible from all tests, and are designated as read-only.
7.2 Create data-driven tests
QuickTest Pro enables you to create and run tests, which are driven by data stored in table.
When you test your application, you may want to check how it performs the same operations with multiple sets of data. For example, suppose you want to check how your application responds to ten separate sets of data. You could record ten separate tests, each with its own set of data. Alternatively, you could create a data-driven test with a loop that runs ten times. In each of the ten iterations, the test is driven by a different set of data.
7.3 Local and Global Data Tables
Each action also has its own sheet in the Data Table so that you can insert data that applies only to that action. When there are parameters in the current action's sheet, you can set QuickTest to run one or more iterations on that action before continuing with the current global iteration of the test.
The Global sheet contains the data that replaces parameters in each iteration of the test. When you run your test, QuickTest inserts or outputs a value from or to the current row of the global data sheet during each global iteration.
7.3.1 Using the Data Driver to Parameterize Your Test
The Data Driver enables you to quickly parameterize several (or all) objects, methods, and/or checkpoints containing the same constant value within a given action. Similar to a 'Find and Replace All' operation versus a step-by-step 'Find and Replace' process, you can choose to replace all occurrences of a selected constant value with a parameter. QuickTest can also show you each occurrence of the constant so that you can decide whether or not to parameterize the value.
To parameterize a value using the Data Driver:
- Display the action you want to parameterize.
- Choose Tools > Data Driver. The Data Driver scans the test for constants (this may take a few moments) and then the Data Driver opens.
The Data Driver displays the Constants list for the action. For each constant value, it displays the number of times the constant value appears in the action.
By default, the list displays only the following constants:
The argument value of each Set method
The argument value of each Select method
The value of the second argument (Value) of each SetTOProperty method
- If you want to parameterize a value that is not currently displayed in the list (such as an object property value), click Add Value. The Add Value dialog box opens.
Enter a constant value in the dialog box and click OK. The constant is added to the list. - Select the type of parameterization you want to perform:
Step-by-step parameterization—Enables you to view the current values of each step containing the selected value. For each step, you can choose whether or not to parameterize the value and if so, which parameterization options you want to use.
Parameterize all—Enables you to parameterize all occurrences of the selected value throughout the action. You set your parameterization preferences one time and the same options are applied to all occurrences of the value.
If you selected Step-by-step parameterization, click Next. The Parameterize the Selected Step screen opens.
If you selected Parameterize all, the Parameter details area is enabled in the Data Driver main screen. Select your parameterization preferences the same way that you would for an individual step.
- In the Step to parameterize area, the first step with an object property, method argument, or checkpoint value containing the selected value is displayed in the test tree on the left. The parameterization options for the step are displayed on the right.
By default, the value is parameterized as a Data Table variable. Accept the default parameterization settings or set the parameterization options you want to apply to this step.- Click Next to parameterize the selected step and view the next step containing the selected value.
- Click Skip if you do not want to parameterize the selected step.
- Click Finish to apply the parameterization settings of the current step to all remaining steps containing the selected value.
- Click Next to parameterize the selected step and view the next step containing the selected value.
- If you clicked Next in the previous step, and steps remain that contain the selected value, the Parameterize the Selected Step screen opens displaying the next relevant step. Repeat step previous for each relevant step.
If there are no remaining steps containing the selected value, the Finished screen opens.
- Click Finish. The Data Driver Wizard closes and the Data Driver main screen shows how many occurrences you selected to parameterize and how many remain as constants.
8.0 Working with Data Tables
8.1 Introduction
Purpose: Insert data table parameters into the test to run it several times on different sets of data.
Iteration: Run the test on one set of data
Design-Time Data Table: This is the sheet used to store the data for the test, which is displayed at the bottom of the screen while creating and editing the test. It has the same characteristics of Microsoft excel spreadsheet that means can insert formulas within the cells.
Run-Time Data Table: This is the sheet created by quick test to hold live version of data table when you run your test. It is displayed in the Test Results window.
8.2 Working with Global and Action Sheets
There are two types of sheets within the Data Table—Global and Action. You can access the different sheets by clicking the appropriate tabs below the Data Table.
- Global Sheet data is available to all actions in your test, which is mainly used to pass parameters from one action to another.
- Action Sheet data available to only one action in your test.
For example, suppose you are creating a test on the sample Mercury Tours Web site. You might create one action for logging in, another for booking flights, and a third for logging out. You may want to create a test in which the user logs onto the site once, and then books flights for five passengers. The data about the passengers is relevant only to the second action, so it should be stored in the action tab corresponding to that action.
8.3 Editing and Saving Data Table
By default, QuickTest automatically saves the test's Data Table as an .xls file in the test folder. You can save the Data Table in another location and instruct the test to use this Data Table when running a test.
Attach External Data Table: Specify a name and location for the data table in the resources tab of the test setting dialog box.
Usage:
1. Run the same test with different sets of input values
For example, you can test the localization capabilities of your application by running your test with a different Data Table file for each language you want to test.
- The same input information for different tests
For example, you can test a Web version and a standard Windows version of the same application using different tests, but the same Data Table.
Note: The column names in the external Data Table match the parameter names in the test and that the sheets in the external Data Table match the actions in the test.
Edit information in the table by typing directly into the table.
Import data into Data Table from Microsoft Excel 95, Excel 97, Excel 2000, tabbed text files (.txt), or ASCII format by using File àImport from File Option.
Note: Microsoft Excel 2002 is not supported.
8.4 Importing Data from a Database
You can import data from a database by selecting a query from Microsoft Query or by manually specifying an SQL statement.
To import data from a database:
- Right-click on the Data Table sheet to which you want to import the data and select Sheet > Import > from Database. The Database Query Wizard opens.
- Select your database selection preferences and click Next. You can choose from the following options:
- Create query using Microsoft Query—Opens Microsoft Query, enabling you to create a new query. Once you finish defining your query, you exit back to QuickTest. This option is only available if you have Microsoft Query installed on your computer.
- Specify SQL statement manually—Opens the Specify SQL statement screen in the wizard, which enables you to specify the connection string and an SQL statement.
- Maximum number of rows—Select this check box and enter the maximum number of database rows to import. You can specify a maximum of 32,000 rows.
- Show me how to use Microsoft Query—displays an instruction screen before opening Microsoft Query when you click next. (Enabled only when Create query using Microsoft Query is selected).
- Create query using Microsoft Query—Opens Microsoft Query, enabling you to create a new query. Once you finish defining your query, you exit back to QuickTest. This option is only available if you have Microsoft Query installed on your computer.
- If you chose Create query using Microsoft Query in the previous step, Microsoft Query opens. Choose a data source and define a query.
Specify the connection string and the SQL statement and click Finish.
- Connection string—Enter the connection string or click Create to open the ODBC Select Data Source dialog box. You can select a .dsn file in the ODBC Select Data Source dialog box or create a new .dsn file to have it insert the connection string in the box for you.
- SQL statement—Enter the SQL statement.
- QuickTest takes several seconds to capture the database query and restore the QuickTest window. The resulting data from the database query is displayed in the Data Table.
Note: Contrary to importing an Excel file (File > Import From File), existing data in the Data Table is not replaced when you import data from a database. If the database you import contains a column with the same name as an existing column, the database column is added as a new column with the column name followed by a sequential number. For example, if your Data Table already contains a column called departures, a database column by the same name would be inserted into the Data Table as departures1.
8.5 Using Formulas in the Data Table
This enables to create contextually relevant data during the test run.
Also formulas can be used as part of a checkpoint to check that objects created on-the-fly (dynamically generated) or other variable objects in the Web page or application have the values expected for a given context.
Note: When ever you compare the values, must be of the same type, i.e. integers, strings, etc.
To do this, you can use the TEXT and VALUE functions to convert values from one type to another as follows:
- TEXT(value) returns the textual equivalent of a numeric value, so that, for example, TEXT(8.2)="8.2".
- VALUE(string) returns the numeric value of a string, so that, for example, VALUE("8.2")=8.2.
8.6 Using Data Table Scripting Methods
QuickTest provides several Data Table methods that enable you to retrieve information about the run-time Data Table and to set the value of cells in the run-time Data Table.
From a programming perspective, the Data Table is made up of three types of objects—DataTable, Sheet (sheet), and Parameter (column). Each object has several methods and properties that you can use to retrieve or set values.
9.0 Output and Correlation
9.1 About Outputting Values
An output value is a step in which one or more values are captured at a specific point in your test or component and stored for the duration of the run session. The values can later be used as input at a different point in the run session.
You can output the property values of any object. You can also output values from text strings, table cells, databases, and XML documents.
When you create output value steps, you can determine where the values are stored during the run session and how they can be used. During the run session, QuickTest retrieves each value at the specified point and stores it in the specified location. When the value is needed later in the run session, QuickTest retrieves it from this location and uses it as required.
Output values are stored only for the duration of the run session. When the run session is repeated, the output values are reset.
Note: You can insert an output value by using commands on the Insert menu or by clicking the arrow beside the Insert Checkpoint button on the Test toolbar. This displays a menu of options that are relevant to the selected step in the test tree.
9.1.1 Creating Page Output Values
You can create a page output value from a Web page property value. When you run the test, QuickTest retrieves the current value of the property and stores it in the run-time Data Table as an output value.
For example, the number of links on a Web page may vary based on the selections a user makes on a form on the previous page. You could make an output value to store the number of links on the page during each test run or iteration.
9.1.2 Creating Text Output Values
You can create a text output value from a text string. When you run the test, QuickTest retrieves the current value of the text string and enters it in the run-time Data Table as an output value.
QuickTest allows you to create text output values by adding one of the following to your test:
- Text Output Value—enables you to output the text displayed in a screen or Web page, according to specified criteria. It is supported for all environments.
- Standard Output Value—enables you to output an object's text property. This is the preferred way of outputting the text displayed in many Windows applications.
- Text Area Output Value—enables you to output the text string displayed within a defined area of a Windows-application screen, according to specified criteria. It is supported for Standard Windows, Visual Basic, and ActiveX environments.
Note: Text Area output values are only supported by the following operating systems: Windows NT, Windows 2000, and Windows XP.
9.1.3 Creating Standard Output Values
You can create a standard output value from an object property value. When you run the test, QuickTest retrieves the current value of the property and enters it in the run-time Data Table as an output value.
9.1.4 Creating Image Output Values
You can create an image output value from the property value of a Web image. When you run the test, QuickTest retrieves the current value of the property and enters it in the run-time Data Table as an output value.
9.1.5 Creating XML Output Values
You can create an XML output value from an element value or attribute of an XML file or Web page/frame. When you run the test, QuickTest retrieves the current value of the element or attribute and enters it in the run-time Data Table as an output value.
When you run your test, you can view summary results of the XML output value in the Test Results window. You can also view detailed results by opening the XML Output Value Results window.
9.1.6 Creating Table Output Values
You can create a table output value from the contents of a table cell. When you run the test, QuickTest retrieves the current value of a table cell and enters it in the run-time Data Table as an output value.
9.1.7 Creating Database Output Values
You can create a database output value from the contents of a database cell. When you run the test, QuickTest retrieves the current value of a database cell and enters it in the run-time Data Table as an output value.
9.2 Capture and Reuse Run Time data
9.2.1 Adding a Standard Output Value
You can create a standard output value from an object property value. When you run the test, QuickTest retrieves the current value of the property and enters it in the run-time Data Table as an output value.
To create a standard output value while recording:
- Choose Insert > Output Value > Standard Output Value .
The mouse pointer turns into a pointing hand.
- Click the object in your application.
If the location you clicked is associated with more than one object, the Select an Object dialog box opens.
- Select the object for which you want to specify an output value.
- Click OK.
The Output Value Properties dialog box opens.
- Specify the settings for the output value.
- Click OK to close the Output Value Properties dialog box.
- An output value step is added to your test tree.
9.2.2 Creating Image Output Values
You can create an image output value from the property value of a Web image. When you run the test, QuickTest retrieves the current value of the property and enters it in the run-time Data Table as an output value.
To create an image output value while recording:
- Choose Insert > Output Value > Standard Output Value .
The mouse pointer turns into a pointing hand.
- Click the image.
- If the location you clicked is associated with more than one object, the Select an Object dialog box opens.
- Select the Image item you want to specify for an output value.
- Click OK.
The Image Output Value Properties dialog box opens.
- Specify the settings for the output value.
- Click OK to close the Image Output Value Properties dialog box.
- An output value step is added to your test.
9.2.3 Creating Table Output Values
You can create a table output value from the contents of a table cell. When you run the test, QuickTest retrieves the current value of a table cell and enters it in the run-time Data Table as an output value.
To create a table output value while recording:
- Choose Insert > Output Value > Standard Output Value. The mouse pointer turns into a pointing hand.
- Click the table. If the location you clicked is associated with more than one object, the Select an Object dialog box opens.
Select a Table item and click OK. - The Output Value Properties dialog box opens.
- Specify the settings for the output value.
- Click OK to close the Output Value Properties dialog box.
- An output value step is added to your test tree.
Example: Consider the following problem for flight reservation application:
Create a new reservation and verify the reservation details.
Hint: you need order number to verify the reservation details.
Steps to solve the problem:
1. Create two actions à Create New Order and Open Order.
2. Create an output value for the order number field in Create New Order Action.
3. Parameterize Order Number in Open Order Action.
10.0 Alternatives to Standard Recording
10.1 Analog Recording
10.1.1 Analog Recording
Enables you to record the exact mouse and keyboard operations you perform in relation to either the screen or the application window.
In this recording mode, QuickTest records and tracks every movement of the mouse as you drag the mouse around a screen or window.
This mode is useful for recording operations that cannot be recorded at the level of an object, for example, recording a signature produced by dragging the mouse.
10.1.2 Recording in Analog Mode
- Click the Record button to begin recording.
- Click the Analog Recording button or choose Test > Analog Recording. The Analog Recording Settings dialog box opens.
- Select from the following options:
Record relative to the screen—records mouse movement or keyboard input relative to the coordinates of your screen, regardless of which application(s) are open.
Record relative to the following window—QuickTest records any mouse movement or keyboard input relative to the coordinates of the specified window.
- If you choose to Record relative to the following window, click the pointing hand and click anywhere in the window on which you want to record in analog mode.
- Click Start Analog Record. Perform the operations you want to record in analog mode.
- When you are finished and want to return to normal recording mode, click the Analog Recording button or choose Test > Analog Recording to turn off the option.
Notes:
When you record in analog mode relative to the screen, the test run will fail if your screen resolution or the screen location on which you recorded your analog steps has changed from the time you recorded.
All of your keyboard input, mouse movements, and clicks are recorded and saved in an external file. When QuickTest runs the test, the external data file is called. It tracks every movement and click of the mouse to replicate exactly the operations you recorded.
If you chose to Record relative to the screen, QuickTest inserts the RunAnalog step under a Desktop parent item.
For example: Desktop.RunAnalog "Track9"
If you chose to Record relative to the following window, QuickTest inserts the RunAnalog step under a Window parent item. For example:
Window("Microsoft Internet").RunAnalog "Track8"
The track file called by the RunAnalog method contains all your analog data and is stored with the action.
Tip: To stop an analog step in the middle of a test run, click Ctrl + Esc, then click Stop in the test toolbar.
10.2 Low-Level Recording
Enables you to record on any object in your application whether or not QuickTest recognizes the specific object or the specific operation.
This mode records at the object level and records all run-time objects as Window or WinObject test objects.
Use low-level recording for recording tests in an environment or on an object not recognized by QuickTest or if the exact coordinates of the object are important for your test
10.2.1 Recording in Low-Level mode
- Click the Record button to begin a recording session.
- Click the Low Level Recording button or choose Test > Low Level Recording.
- When you are finished and want to return to normal recording mode, click the Low Level Recording button or choose Test > Low Level Recording to turn off the option.
Notes:
In low-level recording and your entire keyboard input and mouse clicks are recorded based on mouse coordinates. When test is run, the cursor retraces the recorded clicks.
Suppose you type the word mercury into a user name edit box and then click the Tab key while in normal recording mode. Your script are displayed as follows:
Browser("Mercury Tours").Page("Mercury Tours") .WebEdit("username").Set "mercury"
If you perform the same action while in low-level recording mode, the script is recorded as follows
Window("Microsoft Internet").WinObject("Internet Explorer_Se").Click 29,297
Window("Microsoft Internet").WinObject("Internet Explorer_Se").Type "mercury" + micTab
10.3 Configuring Web Event Recording
The Web Event Recording Configuration dialog box offers three standard event-configuration levels.
By default, Quick Test uses the Basic recording -configuration level.
If Quick Test does not record all the events you need, you may require a higher event-configuration level.
Level | Description |
Basic( Default )
| •Always records click events on standard Web objects such as images, buttons, and radio buttons. •Always records the submit event within forms. •Records click events on other objects with a handler or behavior connected. |
Medium | Records click events on the <DIV>, <SPAN>, and <TD> HTML tag objects, in addition to the objects recorded in the basic level. |
High | Records mouse over, mouse down, and double-click events on objects with handlers or behaviors attached, in addition to the objects recorded in the basic level. |
10.3.1 To set Web Event Recording Configuration:
- Choose Tools > Web Event Recording Configuration.
The Web Event Recording Configuration dialog box opens. Use the slider to select your preferred standard event-recording configuration.
- Click OK.
10.4 Define a Virtual Object
You can teach Quick Test to recognize any area of your application as an object by defining it as a virtual object.
Virtual objects enable you to record and run tests on objects that are not normally recognized by Quick Test.
Using the Virtual Object Wizard, you can map a virtual object to a standard object class, specify the boundaries and the parent of the virtual object, and assign it a logical name.
10.4.1 To define a virtual object:
- With Quick Test open (but not in record mode), open your Web site or application and display the object containing the area you want to define as a virtual object.
- In Quick Test, choose Tools > Virtual Objects > New Virtual Object. The Virtual Object Wizard opens. Click Next.
- Select a standard class to which you want to map your virtual object.
- Click Mark Object.
The Quick Test window and the Virtual Object Wizard are minimized. Use the crosshairs pointer to mark the area of the virtual object. You can use the arrow keys while holding down the left mouse button to make precise adjustments to the area you define with the crosshairs. Click Next.
- Click an object in the object tree to assign it as the parent of the virtual object.
- In the Identify object-using box, select how you want Quick Test to identify and map the virtual object.
If you want Quick Test to identify all occurrences of the virtual object, select parent only. Quick Test identifies the virtual object using its direct parent only, regardless of the entire parent hierarchy.
If you want Quick Test to identify the virtual object in one occurrence only, select entire parent hierarchy. Quick Test identifies the virtual object only if it has the exact parent hierarchy. Click Next.
- Specify a name and a collection for the virtual object. Choose from the list of collections or create a new one by entering a new name in the Collection name box.
- To add the virtual object to the Virtual Object Manager and close the wizard, select No and then click Finish.
11.0 Introduction to the Expert View
11.1 Object Model in the Expert View
The Expert View provides an alternative to the Tree View for testers who are familiar with VBScript. In the Expert View, you can view the recorded test in VBScript and enhance it with programming.
The Expert View displays the steps you executed while recording your test in VBScript. After you record your test, you can increase its power and flexibility by adding recordable and non-recordable VBScript statements. You can add statements that perform operations on objects or retrieve information from your site. For example, you can add a step that checks that an object exists, or you can retrieve the return value of a method.
The objects in QuickTest are divided by environment. QuickTest environments include standard Windows objects, Visual Basic objects, ActiveX objects, Web objects, Multimedia objects, as well as objects from other environments available as external add-ins.
Most objects have corresponding methods. For example, the Back method is associated with the Browser object.
In the following example, the user enters mercury in the User Name edit box while recording. The following line is recorded in the Expert View:
Browser ("Mercury_Tours"). Page ("Mercury_Tours"). WebEdit ("username").Set "mercury"
When running the test, the Set method inserts the mercury text into the WebEdit object.
In the following example, the user selects Paris from the Departure City list box while recording. The following line is recorded in the Expert View:
Browser("Mercury Tours").Page("Find Flights").WebList("depart").Select "Paris"
When the test runs, the Select method selects Paris in the WebList object.
11.2 Using QuickTest Professional's online books
QuickTest Professional documentation helps you take full advantage of he capabilities of this powerful, easy-to-use, testing tool.
- QuickTest Professional User's Guide—provides step-by-step instructions on how to use QuickTest to test your applications. It describes many useful features, options, and testing procedures with guidelines and helpful examples.
- QuickTest Professional Installation Guide—explains how to install QuickTest Professional.
- QuickTest Professional Tutorial—teaches you basic QuickTest skills and shows you how to start testing your applications.
- QuickTest Professional Object Model Reference—provides access to the QuickTest Professional VBScript methods, including a description of each object, a list of the methods associated with each object, description syntax, and an example of usage for each object and method.
- QuickTest Professional Shortcut Key Reference Card—provides a list of commands that you can execute using shortcut keys.
- QuickTest Professional Automation Object Model Reference — (available from the QuickTest Professional Start menu program folder and from the QuickTest Professional Help menu) provides syntax, descriptive information, and examples for the automation objects, methods, and properties. It also contains a detailed overview to help you get started writing QuickTest automation scripts.
12.0 Working in the Expert View
12.1 VBScript Language Overview
12.1.1 VBScript Data Types
VBScript has only one data type called a Variant. A Variant is a special kind of data type that can contain different kinds of information, depending on how it is used.
Subtype | Description |
Empty | Variant is uninitialized. Value is 0 for numeric variables or a zero-length string ("") for string variables. |
Null | Variant intentionally contains no valid data. |
Boolean | Contains either True or False. |
Byte | Contains integer in the range 0 to 255. |
Integer | Contains integer in the range -32,768 to 32,767. |
Currency | -922,337,203,685,477.5808 to 922,337,203,685,477.5807. |
Long | Contains integer in the range -2,147,483,648 to 2,147,483,647. |
Single | Contains a single-precision, floating-point number in the range -3.402823E38 to -1.401298E-45 for negative values; 1.401298E-45 to 3.402823E38 for positive values. |
Double | Contains a double-precision, floating-point number in the range -1.79769313486232E308 to -4.94065645841247E-324 for negative values; 4.94065645841247E-324 to 1.79769313486232E308 for positive values. |
Date (Time) | Contains a number that represents a date between January 1, 100 to December 31, 9999. |
String | Contains a variable-length string that can be up to approximately 2 billion characters in length. |
Object | Contains an object. |
Error | Contains an error number. |
12.1.2 VBScript Variables
12.1.2.1 Declaring Variables
You declare variables explicitly in your script using the Dim statement, the Public statement, and the Private statement.
Variables declared with Dim at the script level are available to all procedures within the script. At the procedure level, variables are available only within the procedure.
Public statement variables are available to all procedures in all scripts.
Private statement variables are available only to the script in which they are declared.
12.1.2.2 Variable Naming Restrictions
Variable names follow the standard rules for naming anything in VBScript. A variable name:
Must begin with an alphabetic character.
Cannot contain an embedded period.
Must not exceed 255 characters.
Must be unique in the scope in which it is declared.
12.1.2.3 Scope and Lifetime of Variables
A variable's scope is determined by where you declare it. When you declare a variable within a procedure, only code within that procedure can access or change the value of that variable. It has local scope and is a procedure-level variable. If you declare a variable outside a procedure, you make it recognizable to all the procedures in your script. This is a script-level variable, and it has script-level scope.
The lifetime of a variable depends on how long it exists. The lifetime of a script-level variable extends from the time it is declared until the time the script is finished running. At procedure level, a variable exists only as long as you are in the procedure. When the procedure exits, the variable is destroyed. Local variables are ideal as temporary storage space when a procedure is executing. You can have local variables of the same name in several different procedures because each is recognized only by the procedure in which it is declared.
12.1.3 VBScript Constants
You create user-defined constants in VBScript using the Const statement. Using the Const statement, you can create string or numeric constants with meaningful names and assign them literal values. For example:
Const MyString = "This is my string."
Const MyAge = 49
12.1.4 VBScript Operators
12.1.4.1 Arithmetic Operators
Description | Symbol |
Exponentiation | ^ |
Unary negation | - |
Multiplication | * |
Division | / |
Integer division | \ |
Modulus arithmetic | Mod |
Addition | + |
Subtraction | - |
String concatenation | & |
12.1.4.2 Comparison Operators
Description | Symbol |
Equality | = |
Inequality | <> |
Less than | < |
Greater than | > |
Less than or equal to | <= |
Greater than or equal to | >= |
Object equivalence | Is |
12.1.4.3 Logical Operators
Description | Symbol |
Logical negation | Not |
Logical conjunction | And |
Logical disjunction | Or |
Logical exclusion | Xor |
Logical equivalence | Eqv |
Logical implication | Imp |
12.1.5 Using Conditional Statements
The following conditional statements are available in VBScript:
12.1.5.1 If...Then...Else statement.
Example:
If value = 0 Then
AlertLabel.ForeColor = vbRed
Else
AlertLabel.Forecolor = vbBlack
End If
12.1.5.2 Select Case statement.
Example:
Select Case strMyText
Case "MasterCard"
DisplayMCLogo
ValidateMCAccount
Case "Visa"
DisplayVisaLogo
ValidateVisaAccount
Case Else
DisplayUnknownImage
PromptAgain
End Select
12.1.6 Looping Through Code
The following looping statements are available in VBScript:
12.1.6.1 Do...Loop:
Loops while or until a condition is True.
Repeats a block of statements while a condition is True or until a condition becomes True.
Do [{While Until} condition]
[statements]
[Exit Do]
[statements]
Loop
Or, you can use this syntax:
Do
[statements]
[Exit Do]
[statements]
Loop [{While Until} condition]
12.1.6.2 While...Wend:
Loops while a condition is True.
Executes a series of statements as long as a given condition is True.
While condition
Version [statements]
Wend
12.1.6.3 For...Next:
Uses a counter to run statements a specified number of times.
Repeats a group of statements a specified number of times.
For counter = start To end [Step step]
[statements]
[Exit For]
[statements]
Next
For Each...Next: Repeats a group of statements for each item in a collection or each element of an array.
Repeats a group of statements for each element in an array or collection.
For Each element In group
[statements]
[Exit For]
[statements]
Next [element]
12.1.7 VBScript Procedures
12.1.7.1 Sub Procedures
A Sub procedure is a series of VBScript statements (enclosed by Sub and End Sub statements) that perform actions but don't return a value.
Example:
Sub ConvertTemp()
temp = InputBox("Please enter the temperature in degrees F.", 1)
MsgBox "The temperature is " & Celsius(temp) & " degrees C."
End Sub
12.1.7.2 Function Procedures
A Function procedure is a series of VBScript statements enclosed by the Function and End Function statements.
Example:
Function Celsius(fDegrees)
Celsius = (fDegrees - 32) * 5 / 9
End Function
The easiest way to create a test is to begin by recording typical business processes that you perform on your application or Web site. Then, to increase your test's power and flexibility, you can add programming statements to the recorded framework. Programming statements can contain:
- recordable test object methods: operations that a user can perform on an application or Web site.
- non-recordable test object methods: operations that users cannot perform on an application or Web site. You use these methods to retrieve or set information, or to perform operations triggered by an event.
- run-time methods of the object being tested.
- various VBScript programming commands that affect the way the test runs, such as conditions and loops. These are often used to control the logical flow of a test.
- supplemental statements, such as comments, to make your test easier to read, and messages that appear in the test results, to alert you to a specified condition
Note: Test object methods are defined in QuickTest; run-time methods are defined within the object you are testing, and therefore are retrieved from them.
You can incorporate decision-making into your test and define messages for the test results by using the appropriate dialog boxes.
In addition, you can improve the readability of your test using With statements. You can instruct QuickTest to automatically generate With statements as you record. But even after your basic test is recorded, you can convert its statements, in the Expert View, to With statements—by selecting a menu command.
12.2 Working with the Data Table Object
12.2.1 AddSheet Method
Adds the specified sheet to the run-time Data Table
Syntax: DataTable.AddSheet(SheetName)
Example:
Variable=DataTable.AddSheet ("MySheet").AddParameter("Time", "8:00")
12.2.2 DeleteSheet Method
Deletes the specified sheet from the run-time Data Table.
Syntax: DataTable.DeleteSheet SheetID
Example: DataTable.DeleteSheet "MySheet"
12.2.3 Export Method
Saves a copy of the run-time Data Table in the specified location.
Syntax: DataTable.Export(FileName)
Example: DataTable.Export ("C:\flights.xls")
12.2.4 ExportSheet Method
Exports a specified sheet of the run-time Data Table to the specified file.
Syntax: DataTable.ExportSheet(FileName, DTSheet)
Example: DataTable.ExportSheet "C:\name.xls" ,1
12.2.5 GetCurrentRow Method
Returns the current (active) row in the run-time global data sheet.
12.2.6 GetRowCount Method
Returns the total number of rows in the longest column in the global data sheet or in the specified data sheet of the run-time Data Table.
Example:
rowcount = DataTable.GetSheet("MySheet").GetRowCount
12.2.7 GetSheet Method
Returns the specified sheet from the run-time Data Table.
Example:MyParam=DataTable.GetSheet ("MySheet").AddParameter("Time", "8:00")
12.2.8 GetSheetCount Method
Returns the total number of sheets in the run-time Data Table.
12.2.9 Import Method
Imports the specified Microsoft Excel file to the run-time Data Table.
Syntax: DataTable.Import(FileName)
Example: DataTable.Import ("C:\flights.xls")
12.2.10 ImportSheet Method
Imports a sheet of a specified file to a specified sheet in the run-time Data Table.
Syntax: DataTable.ImportSheet(FileName, SheetSource,SheetDest)
Example: DataTable.ImportSheet "C:\name.xls" ,1 ,"name"
12.2.11 SetCurrentRow Method
Sets the specified row as the current (active) row in the run-time Data Table.
Example: DataTable.SetCurrentRow (2)
12.2.12 SetNextRow Method
Sets the row after the current (active) row as the new current row in the run-time Data
Table.
12.2.13 SetPrevRow Method
Sets the row above the current (active) row as the new current (active) row in the run-time
Data Table.
12.2.14 GlobalSheet Property
Returns the Global sheet of the run-time Data Table.
Example:
DataTable.GlobalSheet.AddParameter "Time", "5:45"
12.2.15 LocalSheet Property
Returns the current (active) local sheet of the run-time Data Table.
Example:
MyParam=DataTable.LocalSheet.AddParameter("Time", "5:45")
12.2.17 RawValue Property
Retrieves the raw value of the cell in the specified parameter and the current row of the run-time
Data Table.
Syntax: DataTable.RawValue
ParameterID [, SheetID]
SheetID can be the sheet name, index or dtLocalSheet, or
dtGlobalSheet.
12.2.18 Value Property
Retrieves or sets the value of the cell in the specified parameter and the current row of the run-time Data Table.
Syntax:DataTable.Value(ParameterID [, SheetID])
12.3 Working with TextUtil Object.
12.3.1 GetText Method
Returns the text from the specified window handle area.
Syntax
TextUtil.GetText(hWnd [, Left, Top, Right, Bottom])
12.3.2 GetTextLocation Method
Checks whether a specified text string is contained in a specified window area.
Syntax
TextUtil.GetTextLocation(TextToFind, hWnd, Left, Top, Right, Bottom[, MatchWholeWordOnly])
12.4 Working with Reporter Objects
12.4.1 ReportEvent Method
Reports an event to the Test Report.
Syntax
Reporter.ReportEvent EventStatus, ReportStepName, Details [, in]
EventStatus – micPass, micFail, micDone, micWarning
12.4.2 Filter Property
Retrieves or sets the current mode for displaying events in the Test Results.
Syntax
To retrieve mode setting: CurrentMode = Reporter.Filter
To set the mode: Reporter.Filter = NewMode
Mode - 0 or rfEnableAll, 1 or rfEnableErrorsAndWarnings,
2 or rfEnableErrorsOnly, 3 or rfDisableAll
12.4.3 ReportPath Property
Retrieves the folder path in which the current test's Test Results are stored.
Syntax Path = Reporter.ReportPath
Object Recognition and Smart Identification
Object Repository Custom Configuration
You use the main screen of the Object Identification dialog box to set mandatory and assistive recording properties, to select the ordinal identifier, and to specify whether you want to enable the Smart Identification mechanism for each test object. From the Object Identification dialog box, you can also define user-defined object classes and map them to Standard Windows object classes, and you can configure the smart identification mechanism for any object.
To configure mandatory and assistive properties for a test object class:
- Choose Tools > Object
Identification. The Object Identification dialog box opens. - Select the appropriate environment in the Environment list. The test object classes associated with the selected environment are displayed in the Test object classes list.
- Select the properties you want to include in the Mandatory Properties list and/or clear the properties you want to remove from the list.
- Enter a valid property in the format attribute/<PropertyName> and click OK. The new property is added to the Mandatory Properties list. For example, to add a property called MyColor, enter attribute/MyColor.
- Click OK to close the Add/Remove Properties dialog box. The updated set of mandatory properties is displayed in the Mandatory Properties list.
- In the Assistive Properties list, click Add/Remove. The Add/Remove Properties dialog box for assistive properties opens.
- Select the properties you want to include in the assistive properties list and/or clear the properties you want to remove from the list.
- Enter a valid property in the format attribute/<PropertyName> and click OK. The new property is added to the Mandatory Properties list. For example, to add a property called MyColor, enter attribute/MyColor.
- Click OK to close the Add/Remove Properties dialog box. The properties are displayed in the Assistive Properties list.
- Use the up and down arrows to set your preferred order for the assistive properties. When you record a test and assistive properties are necessary to create a unique object description, QuickTest adds the assistive properties to the description one at a time until it has enough information to create a unique description, according to the order you set in the Assistive Properties list.
Introduction to Smart Identification
When QuickTest uses the recorded description to identify an object, it searches for an object that matches every one of the property values in the description. In most cases, this description is the simplest way to identify the object and unless the main properties of the object change, this method will work.
If QuickTest is unable to find any object that matches the recorded object description, or if it finds more than one object that fits the description, then QuickTest ignores the recorded description, and uses the Smart Identification mechanism to try to identify the object.
While the Smart Identification mechanism is more complex, it is more flexible, and thus, if configured logically, a Smart Identification definition can probably help QuickTest identify an object, if it is present, even when the recorded description fails.
The Smart Identification mechanism uses two types of properties:
13.2.1 Base filter properties
The most fundamental properties of a particular test object class; those whose values cannot be changed without changing the essence of the original object. For example, if a Web link's tag was changed from <A to any other value, you could no longer call it the same object.
13.2.2 Optional filter properties
Other properties that can help identify objects of a particular class as they are unlikely to change on a regular basis, but which can be ignored if they are no longer applicable.
Understanding the Smart Identification Process
If QuickTest activates the Smart Identification mechanism during a test run (because it was unable to identify an object based on its recorded description), it follows the following process to identify the object:
- QuickTest "forgets" the recorded test object description and creates a new object candidate list containing the objects (within the object's parent object) that match all of the properties defined in the base filter property list.
- From that list of objects, QuickTest filters out any object that does not match the first property listed in the Optional Filter Properties list. The remaining objects become the new object candidate list.
- QuickTest evaluates the new object candidate list:
If the new object candidate list still has more than one object, QuickTest uses the new (smaller) object candidate list to repeat step 2 for the next optional filter property in the list. If the new object candidate list is empty, QuickTest ignores this optional filter property, returns to the previous object candidate list, and repeats step 2 for the next optional filter property in the list. If the object candidate list contains exactly one object, then QuickTest concludes that it has identified the object and performs the statement containing the object.
- QuickTest continues the process described in steps 2 and 3 until it either identifies one object, or runs out of optional filter properties to use.
If, after completing the Smart Identification elimination process, QuickTest still cannot identify the object, then QuickTest uses the recorded description plus the ordinal identifier to identify the object
Smart Identification Configuration
- Choose Tools > Object
Identification. The Object Identification dialog box opens. - Select the appropriate environment in the Environment list. The test object classes associated with the selected environment are displayed in the Test object classes list.
- Select the test object class you want to configure.
- Click the Configure button next to the Enable Smart Identification check box. The Configure button is enabled only when the Enable Smart Identification option is selected.
The Smart Identification Properties dialog box opens. - In the Base Filter Properties list, click Add/Remove. The Add/Remove Properties dialog box for base filter properties opens.
- Select the properties you want to include in the Base Filter Properties list and/or clear the properties you want to remove from the list.
- Click OK to close the Add/Remove Properties dialog box. The updated set of base filter properties is displayed in the Base Filter Properties list.
- In the Optional Filter Properties list, click Add/Remove. The Add/Remove Properties dialog box for optional filter properties opens.
- Select the properties you want to include in the Optional Filter Properties list and/or clear the properties you want to remove from the list.
- Click OK to close the Add/Remove Properties dialog box. The properties are displayed in the Optional Filter Properties list.
- Use the up and down arrows to set your preferred order for the optional filter properties. When QuickTest uses the Smart Identification mechanism, it checks the remaining object candidates against the optional properties one-by-one according to the order you set in the Optional Properties list until it filters the object candidates down to one object.
Enhance Test Cases with Descriptive Programming
Interact with Test Objects not stored in the Object Repository
You can also instruct QuickTest to perform methods on objects without referring to the Object Repository, without referring to the object's logical name. To do this, you provide QuickTest with a list of properties and values that QuickTest can use to identify the object or objects on which you want to perform a method.
Such a programmatic description can be very useful if you want to perform an operation on an object that is not stored in the object repository. You can also use programmatic descriptions in order to perform the same operation on several objects with certain identical properties, or in order to perform an operation on an object whose properties match a description that you determine dynamically during the test run.
There are two types of programmatic descriptions.
- You can either list the set of properties and values that describe the object directly in a test statement,
- or you can add a collection of properties and values to a description object, and then enter the description object name in the statement.
14.1.1 Entering Programmatic Description Directly into Test Statements
You can describe an object directly in a test statement by specifying property:=value pairs describing the object instead of specifying an object's logical name.
The general syntax is:
TestObject("PropertyName1:=ProperyValue1", "..." , "PropertyNameX:=ProperyValueX")
TestObject—the test object class.
PropertyName:=PropertyValue—the test object property and its value. Each property:=value pair should be separated by commas and quotation marks.
For Example: Window("Text:=Myfile.txt - Notepad").Move 50, 50
If you want to use the same programmatic description several times in one test, you may want to assign the object you create to a variable.
For Example:
Set MyWin = Window("Text:=Myfile.txt - Notepad")
MyWin.Move 50, 50
14.1.2 Using Description Objects for Programmatic Descriptions
You can use the Description object to return a Properties collection object containing a set of Property objects. A Property object consists of a property name and value. You can then specify the returned Properties object in place of a logical name in a test statement.
To create the Properties collection, you enter a Description.Create statement using the following syntax:
Set MyDescription = Description.Create()
Once you have created a Properties object (such as MyDescription in the example above), you can enter statements to add, edit, remove, and retrieve properties and values to or from the Properties object during the test run. This enables you to determine which, and how many properties to include in the object description in a dynamic way during the test run.
Once you have filled the Properties collection with a set of Property objects (properties and values), you can specify the Properties object in place of a logical name in a test statement.
For example, instead of entering:
Window("Error"). WinButton("text:=OK", "width:=50").Click
You can enter:
Set MyDescription = Description.Create()
MyDescription("text").Value = "OK"
MyDescription("width").Value = 50
Window("Error").WinButton(MyDescription).Click
14.1.3 Retrieving ChildObjects
You can use the ChildObjects method to retrieve all objects located inside a specified parent object, or only those child objects that fit a certain programmatic description. In order to retrieve this subset of child objects, you first create a description object and add the set of properties and values that you want your child object collection to match using the Description object.
Note: You must use the Description object to create the programmatic description for the ChildObjects description argument. You cannot enter the programmatic description directly into the argument using the property:=value syntax.
Once you have "built" a description in your description object, use the following syntax to retrieve child objects that match the description:
Set
MySubSet=TestObject.ChildObjects(MyDescription)
For example, the statements below instruct QuickTest to select all of the check boxes on the Itinerary Web page:
Set MyDescription = Description.Create()
MyDescription("html tag").Value = "INPUT"
MyDescription("type").Value = "checkbox"
Set Checkboxes = Browser("Itinerary").Page("Itinerary").ChildObjects(MyDescription)
NoOfChildObjs = Checkboxes.Count
For Counter=0 to NoOfChildObjs-1
Checkboxes(Counter).Set "ON"
Next
14.1.4 Using Programmatic Descriptions for the WebElement Object
The WebElement object enables you to perform methods on Web objects that may not fit into any other Mercury test object class. The WebElement test object is never recorded, but you can use a programmatic description with the WebElement object to perform methods on any Web object in your Web site.
For example, when you run the statement below:
Browser("Mercury Tours").Page("Mercury Tours").WebElement("Name:=UserName", "Index:=0").Click
or
set WebObjDesc = Description.Create()
WebObjDesc("Name").Value = "UserName"
WebObjDesc("Index").Value = "0"
Browser("Mercury Tours").Page("Mercury Tours").WebElement(WebObjDesc).Click
QuickTest clicks on the first Web object in the Mercury Tours page with the name UserName.
14.1.5 Using the Index Property in Programmatic Descriptions
The index property can sometimes be a useful test object property for uniquely identifying an object. The index test object property identifies an object based on the order in which it appears within the source code, where the first occurrence is 0.
Note that index property values are object-specific. Thus, if you use an index value of 3 to describe a WebEdit test object, QuickTest searches for the fourth WebEdit object in the page.
If you use an index value of 3 to describe a WebElement object, however, QuickTest searches for the fourth Web object on the page regardless of the type, because the WebElement object applies to all Web objects.
For example, suppose you have a page with the following objects:
an image with the name "Apple"
an image with the name "UserName"
a WebEdit object with the name "UserName"
an image with the name "Password"
a WebEdit object with the name "Password"
The description below refers to the third item in the list above, as it is the first WebEdit object on the page with the name UserName.
WebEdit("Name:=UserName", "Index:=0")
The following description, however, refers to the second item in the list above, as that is the first object of any type (WebElement) with the name UserName.
WebElement("Name:=UserName", "Index:=0")
Access Dynamic Objects during run-time
14.2.1 Retrieving Run-Time Object Properties
You can use the Object property to access the native properties of any run-time object. For example, you can retrieve the current value of the ActiveX calendar's internal Day property as follows:
Dim MyDay
Set MyDay=Browser("index").Page("Untitled").ActiveX("MSCAL.Calendar.7").Object.Day
14.2.2 Activating Run-Time Object Methods
You can use the Object property to activate the internal methods of any run-time object. For example, you can activate the edit box's native focus method as follows:
Dim MyWebEdit
Set MyWebEdit=Browser("Mercury Tours").Page("Mercury Tours").WebEdit("username").Object
MyWebEdit.focus
Enhance Test Cases with User-Defined Functions
Utilize external Windows API functions in Test Cases
15.1.1 Extern Object
Enables you to declare calls to external procedures from an external dynamic-link library(DLL)
Associated Methods
- Declare Method : Declares references to external procedures in a dynamic-link library (DLL).
Once you use the Declare method for a method, you can use the Extern object to call the declared method.
Syntax
Extern.Declare(RetType, MethodName, LibName, Alias [, ArgType(s)])
RetType | String | Data type of the value returned by the method. |
MethodName | String | Any valid procedure name. |
LibName | String | Name of the DLL or code resource that contains the declared procedure. |
Alias | String | Name of the procedure in the DLL or code resource. Note: DLL entry points are case sensitive. Note: If Alias is an empty string, MethodName is used as the Alias. |
ArgType(s) | String | A list of data types representing the data types of the arguments that are passed to the procedure when it is called. Note: For out arguments, use the micByRef flag. |
Declare Data Types
The following data types can be used for the Extern.Declare RetType and ArgType(s) arguments.
Type | Description |
micVoid | =0 ; void (RetType only) |
micInteger | =2 ; int |
micLong | =3 ; long |
micFloat | =4 ; float |
micDouble | =5 ; double |
micString | =8 ; CHAR* |
micDispatch | =9 ; IDispatch* |
micWideString | =18 ; WChar* |
micChar | =19 ; char |
micUnknown | =20 ; IUnknown |
micHwnd | =21 ; HWND |
micVPtr | =22 ; void* |
micShort | =23 ; short |
micWord | =24 ; WORD |
micDWord | =25; DWORD |
micByte | =26 ; BYTE |
micWParam | =27 ; WPARAM |
micLParam | =28 ; LPARAM |
micLResult | =29 ; LRESULT |
micByRef | =0X4000 ; out |
micUnsigned | =0X8000 ; unsigned |
micUChar | =micCharmicUnsigned ; unsigned char |
micULong | =micLongmicUnsigned ; ; unsigned long |
micUShort | =micShortmicUnsigned ; ; unsigned short |
micUInteger | =micIntegermicUnsigned ; ; unsigned int |
Example
The following example uses the Extern.Declare and Extern.<declared method>methods to change the title of the Notepad window.
'Declare FindWindow method
Extern.Declare micHwnd, "FindWindow", "user32.dll", "FindWindowA", micString, micString
'Declare SetWindowText method
Extern.Declare micLong, "SetWindowText", "user32.dll", "SetWindowTextA", micHwnd, micString
'Get HWND of the Notepad window
hwnd = Extern.FindWindow("Notepad", vbNullString)
if hwnd = 0 then
MsgBox "Notepad window not found"
end if
'Change the title of the notepad window
res = Extern.SetWindowText(hwnd, "Textpad")
Create QuickTest user-defined functions
In addition to the test objects, methods, and functions supported by the QuickTest Test Object Model, you can define your own VBScript functions subroutines, classes, modules, etc., and then call them from your test.
Vbscript function libraries can be wriiten in any text editor. We have to save the file with .vbs extension.Syntax for writing vbscript function in vbscript file is as follows.
[Public [Default] Private] Function name [(arglist)]
[statements]
[name = expression]
[Exit Function]
[statements]
[name = expression]
End Function
Arguments
Public Indicates that the Function procedure is accessible to all other procedures in all scripts.
Default Used only with the Public keyword in a Class block to indicate that the Function
procedure is the default method for the class. An error occurs if more than one Default
procedure is specified in a class.
Private Indicates that the Function procedure is accessible only to other procedures in the script where it is declared or if the function is a member of a class, and that the Function procedure is accessible only to other procedures in that class.
name Name of the Function; follows standard variable naming conventions.
arglist List of variables representing arguments that are passed to the Function procedure
when it is called. Commas separate multiple variables.
statements Any group of statements to be executed within the body of the Function procedure.
expression Return value of the Function.
The arglist argument has the following syntax and parts:
[ByVal ByRef] varname[( )]
Arguments
ByVal Indicates that the argument is passed by value.
ByRef Indicates that the argument is passed by reference.
varname Name of the variable representing the argument; follows standard variable naming
conventions.
You can call these user defined functions from QuickTest as follows:
- Specify the default library files for all new tests in the Test Settings dialog box (Test > Settings > Resources tab).
- call a function contained in a VBScript file directly from any action using the ExecuteFile function.
To execute an externally-defined function:
- Create a VBScript file using standard VBScript syntax
- Store the file in any folder that you can access from the machine running your test.
- Add an ExecuteFile statement to an action in your test or in an associated library file using the following syntax:
ExecuteFile
FileName
where FileName is the absolute or relative path of your VBScript file.
- Use the functions, subroutines, classes, etc., from the specified VBScript file as necessary in your action or within other functions in an associated library file.
Database Verification
Review of database concepts
A relational database is a structured collection of information that is related to a particular subject or purpose, such as an inventory database or a human resources database. You use databases to manage information. Information, such as product name, cost, and on-hand inventory, is stored in a database.
Within the database, you organize the data into storage containers called tables. Tables are made up of columns and rows. Columns represent individual fields in a table. Rows represent records of data in a table.
Each field in the table contains one piece of information. In an employee table, for example, one column contains the employee name, another contains the employee phone number, and the address, city, state, zip, and salary are all stored in their own columns. Each record represents one set of related information. For example, an employee table might store information about one employee per row. The number of rows in a table represents the total number of table records.
Understanding relational tables
In a database, you can organize data in multiple tables. For example, if you manage a database for the Human Resource department, you might have one table that lists all the employees information and another table that lists all the departments:
Because you have multiple departments for employees, but you would not store the information about the departments in every employee row for several reasons:
- The department information is the same for each employee in a given department, however, repeating the department information for each employee is redundant. Storing redundant data takes up more disk space.
- If the department information changes, you can update one occurrence. All references to that department are updated automatically.
Storing multiple occurrences of the same data is rarely a good thing. Good relational database design separates application entities into their own tables. Key values from one table are often stored in a related table rather than repeating the information. The key value is used to join the data between the tables to return the complete set of data required.
About SQL
SQL (Structured Query Language) is a language that lets you communicate with databases. For example, you can use SQL to retrieve data from a database, add data to a database, delete or update records in a database, change columns in multiple rows, add columns to tables, and add and delete tables.
Using SQL to interact with a database
Unlike other computer languages, SQL is made up of a small number of language elements that let you interact efficiently with a database. Some of the more frequently used elements include these SQL commands:
Command | Description |
SELECT | Use to retrieve (query) information in a database. |
INSERT | Use to add records to a database. |
UPDATE | Use to update information in a database. |
DELETE | Use to delete information in a database. |
Connection String
For connecting to database we must provide the information to connect to the database. There are two ways to provide this information.
The first way is through the use of a System DSN. A System DSN is a file containing information about a particular database. This information includes the physical location of the database on the computer, what type of database it is (SQL, Access, etc.), and other pertinent information. (DSN stands for Data Source Name)
the other way is to use what is called a DSN-less connection. This approach uglies up your connection string a bit, because you need to supply all of the important information in the connection string, since there isn't a DSN which holds that information. Access databases are the ones that typically use DSN-less connections.
Here is an example of a DSN-less connection string.
objConn.ConnectionString = "DBQ=C:\WebShare\MyDatabase.mdb;DRIVER={MS Access (*.mdb)}"
In QuickTest proYou can use database checkpoints in your test to check databases accessed by your Web site or application and to detect defects. You define a query on your database, and then you create a database checkpoint that checks the results of the query.
There are two ways to define a database query:
Use Microsoft Query. You can install Microsoft Query from the custom installation of Microsoft Office.
Manually define an SQL statement.
In QuickTest, you create a database checkpoint based on the results of the query you defined on a database. QuickTest captures the current information about the database and saves this information as expected data. A database checkpoint is inserted into the test script. This checkpoint is displayed in your test script as a DbTable.Check CheckPoint statement .
When you run the test, the database checkpoint compares the current state of the database to the expected data defined in the Checkpoint Properties dialog box. If the expected data and the current results do not match, the database checkpoint fails.
How to add a database checkpoint in QuickTest
You can define the query for your checkpoint using Microsoft Query or by manually entering a database connection and SQL statement.
To create a database checkpoint:
1 Choose Insert > Checkpoint > Database Checkpoint. The Database Query Wizard opens.
2 Select your database selection preferences and click Next. You can choose from the following options:
- Create query using Microsoft Query—Opens Microsoft Query, enabling you to create a new query. Once you finish defining your query, you return to QuickTest. This option is available only if you have Microsoft Query installed on your computer.
- Specify SQL statement manually—Opens the Specify SQL statement screen in the wizard, which enables you to specify the connection string and an SQL statement. For additional information, see step 3.
- Maximum number of rows—Select this check box if you would like to limit the number of rows and enter the maximum number of database rows to check. You can specify a maximum of 32,000 rows.
- Show me how to use Microsoft Query—Displays an instruction screen when you click Next before opening Microsoft Query. (Enabled only when Create query using Microsoft Query is selected).
3 If you chose Create query using Microsoft Query in the previous step, Microsoft Query opens. Choose a data source and define a query. If you chose Specify SQL statement in the previous step, the Specify SQL statement screen opens. Specify the connection string and the SQL statement, and click Finish.
4 The Checkpoint Properties dialog box opens. Select the checks to perform on the result set. You can also modify the expected data in the result set.
5 Click OK to close the dialog box. A checkpoint statement is added for the selected object in the Keyword View and Expert View.
1.3 Specifying SQL Statements
You can manually specify the database connection string and the SQL statement.
1.3.1 To specify SQL statements:
1 Choose Specify SQL statement in the Database Query Wizard screen. The following screen opens:
2 Specify the connection string and the SQL statement, and click Finish.
- Connection string—Enter the connection string, or click Create to open the ODBC Select Data Source dialog box. You can select a .dsn file in the ODBC Select Data Source dialog box or create a new .dsn file to have the Database Query Wizard insert the connection string in the box for you.
- SQL statement—Enter the SQL statement. QuickTest takes several seconds to capture the database query and restore the QuickTest window.
3 Return to step 4 in the previous procedure to continue creating your database checkpoint in QuickTest.
1.4 Creating a Query in Microsoft Query
You can use Microsoft Query to choose a data source and define a query within the data source.
1.4.1 To choose a data source and define a query in Microsoft Query:
1 When Microsoft Query opens during the insert database checkpoint process, choose a new or an existing data source.
2 Define a query.
3 When you are done, in the Finish screen of the Query Wizard, select Exit and return to QuickTest Professional and click Finish to exit Microsoft Query. Alternatively, click View data or edit query in Microsoft Query and click Finish. After viewing or editing the data, choose
File > Exit and return to QuickTest Professional to close Microsoft Query and return to QuickTest.
4 Return to step 4 on above page to continue creating your database checkpoint in QuickTest.
1.5 Understanding the Table/Database Checkpoint Properties Dialog Box
The Table/Database Checkpoint Properties dialog box enables you to specify which cell contents of your table or database to check and which verification method and type to use. You can also edit or parameterize the expected data for the cells included in the check.
The top part of the Table/Database Checkpoint Properties dialog box displays the data that was captured for the checkpoint. You use this area to specify which cells you want to check.
Below the expected data, the Database Checkpoint dialog box contains the following three tabs:
- Expected Data—Enables you to set each checked cell as a constant or parameterized value. For example, you can instruct QuickTest to use a value from the Data Table as the expected value for a particular cell.
- Settings—Enables you to set the criteria for a successful match between the expected and actual values. For example, you can instruct QuickTest to treat the value as a number so that 45 or 45.00 are treated as the same value, or you can instruct QuickTest to ignore spaces when comparing the values.
- Cell Identification—Enables you to instruct QuickTest how to locate the cells to be checked. For example, suppose you want to check the data that is displayed in the first row and second column in the Table/Database Checkpoint Properties dialog box. However, you know that each time you run your test or component, it is possible that the rows may be in a different order, depending on the sorting that was performed in a previous step. Therefore, rather than finding the data based on row and column numbers, you may want QuickTest to identify the cell based on the column name and the row containing a known value in a key column.
The bottom part of the Table/Database Checkpoint Properties dialog box contains the following options:
- Checkpoint timeout—Specifies the time interval (in seconds) during which QuickTest attempts to perform the checkpoint successfully. QuickTest continues to perform the checkpoint until it passes or until the timeout occurs. If the checkpoint does not pass before the timeout occurs, the checkpoint fails.
For example, suppose it takes some time for data to load in a table. Increasing the checkpoint timeout value in this case can ensure that the data has sufficient time to load and therefore enables the checkpoint to pass before the end of the timeout period is reached.
You can see information about the checkpoint timeout, including the time interval used by QuickTest to perform the checkpoint, in the Test Results window.
Note: The Checkpoint timeout option is available only when creating a table checkpoint. It is not available when creating a database checkpoint.
- Insert statement—Specifies when to perform the checkpoint in the test or component. Choose Before current step if you want to check the table or database content before the highlighted step is performed. Choose After current step if you want to check the table or database content after the highlighted step is performed.
Note: The Insert statement option is not available when adding a checkpoint during recording or when modifying an existing checkpoint. It is available when adding a new checkpoint to an existing test or component.
1.6 Modifying a Database Checkpoint
You can make the following changes to an existing database checkpoint:
- Modify the SQL query definition.
- Modify the expected data, verification type, or method.
1.6.1 To modify the SQL query definition:
1 In the Keyword View, right-click the database object that you want to
modify.
2 Select Object Properties.
3 Modify the SQL and connection string properties as necessary and click OK.
1.6.2 To modify the expected data in a database checkpoint:
1 In the Keyword View or Expert View, right-click the database checkpoint
that you want to modify.
2 Select Checkpoint Properties. The Checkpoint Properties dialog box opens.
Modify the settings as described "Understanding the Table/Database
Checkpoint Properties Dialog Box" above.
Recovery Manager and Scenarios
You can instruct QuickTest to recover from unexpected events and errors that occur in your testing environment during a run session.
This section describes:
- About Defining and Using Recovery Scenarios
- Deciding When to Use Recovery Scenarios
- Defining Recovery Scenarios
- Understanding the Recovery Scenario Wizard
- Managing Recovery Scenarios
- Setting the Recovery Scenarios List for Your Tests or Components
- Programmatically Controlling the Recovery Mechanism
2.1 About Defining and Using Recovery Scenarios
Unexpected events, errors, and application crashes during a run session can disrupt your run session and distort results. This is a problem particularly when running tests or components unattended—the test or component is suspended until you perform the operation needed to recover.
The Recovery Scenario Manager provides a wizard that guides you through the process of defining a recovery scenario—a definition of an unexpected event and the operation(s) necessary to recover the run session. For example, you can instruct QuickTest to detect a Printer out of paper message and recover the run session by clicking the OK button to close the
message an continue the test or component.
A recovery scenario consists of the following:
- Trigger Event—The event that interrupts your run session. For example, a window that may pop up on screen, or a QuickTest run error.
- Recovery Operation(s)—The operation(s) that need to be performed in order to continue running the test or component. For example, clicking an OK button in a pop-up window, or restarting Microsoft Windows.
- Post-Recovery Test Run Option—The instructions on how QuickTest should proceed once the recovery operations have been performed, and from which point in the test or component QuickTest should continue, if at all. For example, you may want to restart a test or component from the beginning, or skip a step entirely and continue with the next step in the test or component.
Recovery scenarios are saved in recovery scenario files. A recovery scenario file is a logical collection of recovery scenarios, grouped according to your own specific requirements.
To instruct QuickTest to perform a recovery scenario during a run session, you must first associate it with that test or component. A test or component can have any number of recovery scenarios associated with it. You can prioritize the scenarios associated with your test or component to ensure that trigger events are recognized and handled in the required order.
When you run a test or component for which you have defined recovery scenarios and an error occurs, QuickTest looks for the defined trigger event(s) that caused the error. If a trigger event has occurred, QuickTest performs the corresponding recovery and post-recovery operations.
You can also control and activate your recovery scenarios during the run session by inserting Recovery statements into your test or component.
Note: If you choose On error in the Activate recovery scenarios box in the Recovery tab of the Test Settings dialog box or Business Component Settings dialog box, the recovery mechanism does not handle triggers that occur in the last step of a test or component. If you chose this option and need to recover from an unexpected event or error that may occur in the last step of
a test or component, you can do this by adding an extra step to the end of your test or component.
2.2 Deciding When to Use Recovery Scenarios
If you can predict that a certain event may happen at a specific point in your test or component, it is highly recommended to handle that event directly within your test or component by adding steps such as If statements or optional steps, rather than depending on a recovery scenario. For
example, if you know that an Overwrite File message box may open when a Save button is clicked during a run session, you can handle this event with an If statement that clicks OK if the message box opens or by adding an optional step that clicks OK in the message box. Handling an event directly within your test enables you to handle errors more specifically than
recovery scenarios, which by nature are designed to handle a more generic set of unpredictable events. It also enables you to control the timing of the corrective operation with minimal resource usage and maximum performance. By default, recovery operations are activated only occur after a step returns an error, which can potentially occur several steps after the one that actually caused the error. The alternative, checking for trigger events after every step, may slow performance.
You should use recovery scenarios only for unpredictable events, or events that you cannot synchronize with a specific step in your test or component. For example, a recovery scenario can handle a printer error by clicking the default button in the Printer Error message box. You cannot handle this error directly in your test or component, since you cannot know at what point the network will return the printer error. You could try to handle this event in your test or component by adding an If statement immediately after the step that sent a file to the printer, but if the network takes time to return the printer error, your test or component may have progressed several steps before the error is displayed. Therefore, for this type of event, only a
recovery scenario can handle it.
2.3 Defining Recovery Scenarios
The Recovery Scenario Manager dialog box enables you to create recovery scenarios and save them in recovery files. You create recovery scenarios using the Recovery Scenario Wizard, which leads you through the process of defining each of the stages of the recovery scenario. You then save the recovery scenarios in a recovery file, and associate them with specific tests or
components.
2.3.1 Creating a Recovery File
You save your recovery scenarios in a recovery file. A recovery file is a convenient way to organize and store multiple recovery scenarios together. You can create a new recovery file or edit an existing one.
To create a recovery file:
1 Choose Tools > Recovery Scenario Manager. The Recovery Scenario Manager dialog box opens.
2 By default, the Recovery Scenario Manager dialog box opens with a new recovery file. You can either use this new file, or click the Open button to choose an existing recovery file. Alternatively, you can click the arrow next to the Open button to select a recently-used recovery file from the list. You can now create recovery scenarios using the Recovery Scenario Wizard and save them in your recovery file, as described in the following sections.
2.3.2 Understanding the Recovery Scenario Manager Dialog Box
The Recovery Scenario Manager dialog box enables you to create and edit recovery files, and create and manage recovery scenarios. The Recovery Scenario Manager dialog box displays the name of the currently open recovery file, a list of the scenario(s) saved in the recovery file, and a description of each scenario.
2.4 Understanding the Recovery Scenario Wizard
The Recovery Scenario Wizard leads you, step-by-step, through the process of creating a recovery scenario. The Recovery Scenario Wizard contains five main steps:
- defining the trigger event that interrupts the run session
- specifying the recovery operation(s) required to continue
- choosing a post-recovery test run operation
- specifying a name and description for the recovery scenario
- specifying whether to associate the recovery scenario to the current test and/or to all new tests
You open the Recovery Scenario Wizard by clicking the New Scenario button in the Recovery Scenario Manager dialog box. Welcome to the Recovery Scenario Wizard Screen The Welcome to the Recovery Scenario Wizard screen provides general information about the different options in the Recovery Scenario Wizard, and provides an overview of the stages involved in defining a recovery scenario.
Click Next to continue to the Select Trigger Event screen.
2.4.1 Select Trigger Event Screen
The Select Trigger Event screen enables you to define the event type that triggers the recovery scenario, and the way in which QuickTest recognizes the event.
Select a type of trigger and click Next. The next screen displayed in the wizard depends on which of the following trigger types you select:
- Pop-up window—QuickTest detects a pop-up window and identifies it according to the window title and textual content. For example, a message box may open during a run session, indicating that the printer is out of paper. QuickTest can detect this window and activate a defined recovery scenario in order to continue the run session. Select this option and click Next to continue to the Specify Pop-up Window Conditions screen.
- Object state—QuickTest detects a specific test object state and identifies it according to its property values and the property values of all its ancestors. Part III • Creating Tests 418 Note that an object is identified only by its property values, and not by its class. For example, a specific button in a dialog box may be disabled when a specific process is open. QuickTest can detect the object property state of the button that occurs when this problematic process is open and activate a defined recovery scenario to close the process and continue the run session. Select this option and click Next to continue to the Select Object screen.
- Test run error—QuickTest detects a run error and identifies it by a failed return value from a method. For example, QuickTest may not be able to identify a menu item specified in the method argument, due to the fact that the menu item is not available at a specific point during the run session. QuickTest can detect this run error and activate a defined recovery scenario in order to continue the run session. Select this option and click Next to continue to the Select Test Run Error screen.
- Application crash—QuickTest detects an application crash and identifies it according to a predefined list of applications. For example, a secondary application may crash when a certain step is performed in the run session. You want to be sure that the run session does not fail because of this crash, which may indicate a different problem with your application. QuickTest can detect this applicaion crash and activate a defined recovery scenario to continue the run session. Select this option and click Next to continue to the Recovery Operations screen.
Notes: The set of recovery operations is performed for each occurrence of the trigger event criteria. For example, suppose you define a specific object state, and two objects match this state, the set of replay operations is performed two times, once for each object that matches the specified state. The recovery mechanism does not handle triggers that occur in the last step
of a test or component. If you need to recover from an unexpected event or error that may occur in the last step of a test or component, you can do this by adding an extra step to the end of your test or component.
2.4.1.1 Specify Pop-up Window Conditions Screen
If you chose a Pop-up window trigger in the Select Trigger Event screen, the Specify Pop-up Window Conditions screen opens.
Click the pointing hand and then click the pop-up window to capture the window title and textual content of the window.
Tip: Hold the CTRL key to change the window focus or perform operations such as a right-click or mouseover to display a context menu. Note that pressing the CTRL key does not enable you to select an application from the Windows taskbar, therefore you must make sure that the window you want to access is not minimized. You can choose whether you want to identify the pop-up window according to its Window title and/or Window text. You can also use regular expressions
in the window title or textual content by selecting the relevant Regular expression check box and then entering the regular expression in the relevant location. Click Next to continue to the Recovery Operations screen.
2.4.1.2 Select Object Screen
If you chose an Object state trigger in the Select Trigger Event screen, the Select Object screen opens.
Click the pointing hand and then click the object whose properties you
want to specify.
Tip: Hold the CTRL key to change the window focus or perform operations such as a right-click or mouseover to display a context menu. Note that pressing the CTRL key does not enable you to select an application from the Windows taskbar, therefore you must make sure that the window you want to access is not minimized.
If the location you click is associated with more than one object, the Object Selection–Object State Trigger dialog box opens.
Select the object whose properties you want to specify and click OK. The selected object and its parents are displayed in the Select Object screen.
Note: The hierarchical object selection tree also enables you to select an object that QuickTest would not ordinarily record (a non-parent object), such as a web table. Click Next to continue to the Set Object Propertie s and Values screen.
2.4.1.3 Set Object Properties and Values Screen
After you select the object whose properties you want to specify in the Select Object screen, the Set Object Properties and Values screen opens.
For each object in the hierarchy, in the Edit property value box, you can modify the property values used to identify the object. You can also click the Add/Remove button to add or remove object properties from the list of property values to check. Note that an object is identified only by its property values, and not by its class.
Select the Regular expression check box if you want to use regular expressions in the property value. Click Next to continue to the Recovery Operations screen.
2.4.1.4 Select Test Run Error Screen
If you chose a Test run error trigger in the Select Trigger Event screen, the Select Test Run Error screen opens.
In the Error list, choose the run error that you want to use as the trigger
event:
- Any error—Any error code that is returned by a step.
- Item in list or menu is not unique—Occurs when more than one item in the list, menu, or tree has the name specified in the method argument.
- Item in list or menu not found—Occurs when QuickTest cannot identify the list, menu, or tree item specified in the method argument. This may be due to the fact that the item is not currently available or that its name has changed.
- More than one object responds to the physical description—Occurs when more than one object in your application has the same property values as those specified in the test object description for the object specified in the step.
- Object is disabled—Occurs when QuickTest cannot perform the step because the object specified in the step is currently disabled.
- Object not found—Occurs when no object within the specified parent object matches the test object description for the object.
- Object not visible—Occurs when QuickTest cannot perform the step because the object specified in the step is not currently visible on the screen. Click Next to continue to the Recovery Operations screen.
2.4.1.5 Select Processes Screen
If you chose an Application crash trigger in the Select Trigger Event screen, the Select Processes screen opens.
The Running processes list displays all application processes that are currently running. The Processes list displays the application processes that will trigger the recovery scenario if they crash.
You can add application processes to the Processes list by typing them in the Processes list or by selecting them from the Running processes list.
To add a process from the Running processes list, double-click a process in the Running processes list or select it and click the Add button. You can select multiple processes using standard Windows multiple selection techniques (CTRL and SHIFT keys).
To add a process directly to the Processes list, click the Add New Process button to enter the name of any process you want to add to the list. To remove a process from the Processes list, select it and click the Remove Process button.
Tip: You can modify the name of a process by selecting it in the Processes list and clicking the process name to edit it.
Click Next to continue to the Recovery Operations screen.
2.4.2 Recovery Operations Screen
The Recovery Operations screen enables you to manage the collection of recovery operations in the recovery scenario. Recovery operations are operations that QuickTest performs sequentially when it recognizes the trigger event.
You must define at least one recovery operation. To define a recovery operation and add it to the Recovery operations list, click Next to continue to the Recovery Operation screen.
If you define two or more recovery operations, you can select a recovery operation and use the Move Up or Move Down buttons to change the order in which QuickTest performs the recovery operations. You can also select a recovery operation and click the Remove button to delete a recovery
operation from the recovery scenario.
Note: If you define a Restart Microsoft Windows recovery operation, it is always inserted as the last recovery operation, and you cannot change its position in the list.
After you have defined at least one recovery operation, the Add another recovery operation check box is displayed.
- Select the check box and click Next to define another recovery operation.
- Clear the check box and click Next to continue to the Post-Recovery Test Run Options screen.
2.4.2.1 Recovery Operation Screen
The Recovery Operation screen enables you to specify the operation(s) QuickTest performs after it detects the trigger event.
Select a type of recovery operation and click Next. The next screen displayed in the wizard depends on which recovery operation type you select.
You can define the following types of recovery operations:
- Keyboard or mouse operation—QuickTest simulates a click on a button in a window or a press of a keyboard key. Select this option and click Next to continue to the Recovery Operation – Click Button or Press Key screen.
- Close application process—QuickTest closes specified processes. Select this option and click Next to continue to the Recovery Operation – Close Processes screen.
- Function call—QuickTest calls a VBScript function. Select this option and click Next to continue to the Recovery Operation – Function screen.
- Restart Microsoft Windows—QuickTest restarts Microsoft Windows. Select this option and click Next to continue to the Recovery Operations screen.
Note: If you use the Restart Microsoft Windows recovery operation, you must ensure that any test or component associated with this recovery scenario is saved before you run it. You must also configure the computer on which the test or component is run to auto login on restart.
2.4.2.2 Recovery Operation – Click Button or Press Key Screen
If you chose a Keyboard or mouse operation recovery operation in the Recovery Operation screen, the Recovery Operation – Click Button or Press Key screen opens.
Specify the keyboard or mouse operation that you want QuickTest to perform when it detects the trigger event:
- Click Default button / Press the ENTER key—Instructs QuickTest to click the default button or press the ENTER key in the displayed window when the trigger occurs.
- Click Cancel button / Press the ESCAPE key—Instructs QuickTest to click the Cancel button or press the ESCAPE key in the displayed window when the trigger occurs.
- Click button with label—Instructs QuickTest to click the button with the specified label in the displayed window when the trigger occurs. If you select this option, click the pointing hand and then click anywhere in the trigger window.
Tip: Hold the CTRL key to change the window focus or perform operations such as a right-click or mouseover to display a context menu. Note that pressing the CTRL key does not enable you to select an application from the Windows taskbar, therefore you must make sure that the window you want to access is not minimized.
All button labels in the selected window are displayed in the list box. Select the required button from the list.
- Press key or key combination—Instructs QuickTest to press the specified keyboard key or key combination in the displayed window when the trigger occurs. If you select this option, click in the edit box and then press the key or key combination on your keyboard that you want to specify. Click Next. The Recovery Operations screen reopens, showing the keyboard or mouse recovery operation that you defined.
2.4.2.3 Recovery Operation – Close Processes Screen
If you chose a Close application process recovery operation in the Recovery Operation screen, the Recovery Operation – Close Processes screen opens.
The Running processes list displays all application processes that are currently running. The Processes to close list displays the application processes that will be closed when the trigger is activated. You can add application processes to the Processes to close list by typing them in the Processes to close list or by selecting them from the Running
processes list.
To add a process from the Running processes list, double-click a process in the Running processes list or select it and click the Add button. You can select multiple processes using standard Windows multiple selection techniques (CTRL and SHIFT keys).
To add a process directly to the Processes to close list, click the Add New Process button to enter the name of any process you want to add to the list. To remove a process from the Processes to close list, select it and click the Remove Process button.
Tip: You can modify the name of a process by selecting it in the Processes to close list and clicking the process name to edit it. Click Next. The Recovery Operations screen reopens, showing the close processes recovery operation that you defined.
2.4.2.4 Recovery Operation – Function Call Screen
If you chose a Function call recovery operation in the Recovery Operation screen, the Recovery Operation – Function Call screen opens. Select a recently specified library file in the Library file box. Alternatively, click the browse button to navigate to an existing library file.
Note: QuickTest automatically associates the library file you select with your test or component. Therefore, you do not need to associate the library file with your test or component in the Resources tab of the Test Settings dialog box or Business Component Settings dialog box, respectively.
After you select a library file, choose one of the following options:
- Select function—Choose an existing function from the library file you selected.
Note: Only functions that match the prototype syntax for the trigger type selected in the Select Trigger Event screen are displayed.
Following is the prototype for each trigger type:
Test run error trigger
OnRunStep
(
[in] Object as Object: The object of the current step.
[in] Method as String: The method of the current step.
[in] Arguments as Array: The actual method's arguments.
[in] Result as Integer: The actual method's result.
)
Pop-up window and Object state triggers
OnObject
(
[in] Object as Object: The detected object.
)
Application crash trigger
OnProcess
(
[in] ProcessName as String: The detected process's Name.
[in] ProcessId as Integer: The detected process' ID.
)
- Define new function—Create a new function by specifying a unique name for it, and defining the function in the Function Name box according to the displayed function prototype. The new function is added to the library file you selected.
Note: If more than one scenario use a function with the same name from different library files, the recovery process may fail. In this case, information regarding the recovery failure is displayed during the run session.
Click Next. The Recovery Operations screen reopens, showing the function operation that you defined.
2.4.3 Post-Recovery Test Run Options Screen
When you clear the Add another recovery operation check box in the Recovery Operations screen and click Next, the Post-Recovery Test Run Options screen opens.
Post-recovery test run options specify how to continue the run session after QuickTest has identified the event and performed all of the specified recovery operations.
QuickTest can perform one of the following run session options after it performs the recovery operations you defined:
- Repeat current step and continue
The current step is the step that QuickTest was running when the recovery scenario was triggered. If you are using the On error activation option for recovery scenarios, the step that returns the error is often one or more steps later than the step that caused the trigger event to occur. Thus, in most cases, repeating the current step does not repeat the trigger event.
- Proceed to next step
Skips the step that QuickTest was running when the recovery scenario was triggered. Keep in mind that skipping a step that performs operations on your application may cause subsequent steps to fail.
- Proceed to next action iteration
Stops performing steps in the current action iteration and begins the next action iteration from the beginning (or the next action if no additional iterations of the current action are required).
- Proceed to next test iteration
Stops performing steps in the current action and begins the next test iteration from the beginning (or stops running the test if no additional iterations of the current action are required).
- Restart current test run
Stops performing steps and re-runs the test or component from the beginning.
- Stop the test run
Stops running the test or component.
Note: If you chose Restart Microsoft Windows as a recovery operation, you can choose from only the last two test run options listed above.
Select a test run option and click Next to continue to the Name and Description screen.
2.4.4 Name and Description Screen
After you specify a test run option in the Post-Recovery Test Run Options screen, and click Next, the Name and Description screen opens.
In the Name and Description screen, you specify a name by which to identify your recovery scenario. You can also add descriptive information regarding the scenario.
Enter a name and a textual description for your recovery scenario, and click Next to continue to the Completing the Recovery Scenario Wizard screen.
2.4.5 Completing the Recovery Scenario Wizard Screen
After you specify a recovery scenario name and description in the Name and Description screen and click Next, the Completing the Recovery Scenario Wizard screen opens.
In the Completing the Recovery Scenario Wizard screen, you can review a summary of the scenario settings you defined. You can also specify whether to automatically associate the recovery scenario with the current test or component, and/or to add it to the default settings for all new tests.
Select the Add scenario to current test check box to associate this recovery scenario with the current test or component. When you click Finish, QuickTest adds the recovery scenario to the Scenarios list in the Recovery tab of the Test Settings dialog box or Business Component Settings dialog box, respectively.
Select the Add scenario to default test settings check box to make this recovery scenario a default scenario for all new tests. The next time you create a test; this scenario will be listed in the Scenarios list in the Recovery tab of the Test Settings dialog box.
Note: You can remove scenarios from the default scenarios list.
Note: You define the default recovery scenarios for all new components in the component template.
Click Finish to complete the recovery scenario definition.
Saving the Recovery Scenario in a Recovery File
After you create or modify a recovery scenario in a recovery file using the Recovery Scenario Wizard, you need to save the recovery file.
To save a new or modified recovery file:
1 Click the Save button. If you added or modified scenarios in an existing recovery file, the recovery file and its scenarios are saved. If you are using a new recovery file, the Save Attachment dialog box opens.
Tip: You can also click the arrow to the right of the Save button and select Save As to save the recovery file under a different name.
2 Choose the folder in which you want to save the file.
3 Type a name for the file in the File name box. The recovery file is saved in the specified location with the file extension .qrs.
Tip: If you have not yet saved the recovery file, and you click the Close button in the Recovery Scenario Manager dialog box, QuickTest prompts you to save the recovery file. Click Yes, and proceed with step 2 above. If you added or modified scenarios in an existing recovery file, and you click Yes to the message prompt, the recovery file and its scenarios are saved.
Managing Recovery Scenarios
Once you have created recovery scenarios, you can use the Recovery Scenario Manager to manage them.
The Recovery Scenario Manager contains the following recovery scenario
icons:
Icon Description
The Recovery Scenario Manager enables you to manage existing scenarios by:
- Viewing Recovery Scenario Properties
- Modifying Recovery Scenarios
- Deleting Recovery Scenarios
- Copying Recovery Scenarios between Recovery Scenario Files
Viewing Recovery Scenario Properties
You can view properties for any defined recovery scenario.
To view recovery scenario properties:
1 In the Scenarios box, select the recovery scenario whose properties you want to view.
2 Click the Properties button. Alternatively, you can double-click a scenario in the Scenarios box. The Recovery Scenario Properties dialog box opens.
The Recovery Scenario Properties dialog box displays the following read-only information about the selected scenario:
- General tab—Displays the name and description defined for the recovery scenario, plus the name and path of the recovery file in which the scenario is saved.
- Trigger Event tab—Displays the settings for the trigger event defined for the recovery scenario.
- Recovery operation tab—Displays the recovery operation(s) defined for the recovery scenario.
- Post-Recovery Operation tab—Displays the post-recovery operation defined for the recovery scenario.
Modifying Recovery Scenarios
You can modify the settings for an existing recovery scenario.
To modify a recovery scenario:
1 In the Scenarios box, select the scenario that you want to modify.
2 Click the Edit button. The Recovery Scenario Wizard opens, with the settings you defined for the selected recovery scenario.
3 Navigate through the Recovery Scenario Wizard and modify the details as needed.
Note: Modifications you make are not saved until you click Save in the Recovery Scenario Manager dialog box. If you have not yet saved your modifications, and you click the Close button in the Recovery Scenario Manager dialog box, QuickTest prompts you to save the recovery file. Click Yes to save your changes.
Deleting Recovery Scenarios
You can delete an existing recovery scenario if you no longer need it. When you delete a recovery scenario from the Recovery Scenario Manager, the corresponding information is deleted from the recovery scenario file.
Note: If a deleted recovery scenario is associated with a test or component, QuickTest ignores it during the run session.
To delete a recovery scenario:
1 In the Scenarios box, select the scenario that you want to delete.
2 Click the Delete button. The recovery scenario is deleted from the Recovery Scenario Manager dialog box.
Note: The scenario is not actually deleted until you click Save in the Recovery Scenario Manager dialog box. If you have not yet saved the deletion, and you click the Close button in the Recovery Scenario Manager dialog box, QuickTest prompts you to save the recovery file. Click Yes to
save the recovery scenario file and delete the scenarios.
Copying Recovery Scenarios between Recovery Scenario Files
You can copy recovery scenarios from one recovery scenario file to another.
To copy a recovery scenario from one recovery scenario file to another:
1 In the Scenarios box, select the recovery scenario that you want to copy.
2 Click the Copy button. The scenario is copied to the Clipboard.
3 Click the Open button and select the recovery scenario file to which you want to copy the scenario, or click the New button to create a new recovery scenario file in which to copy the scenario.
4 Click the Paste button. The scenario is copied to the new recovery scenario file.
Notes: If a scenario with the same name already exists in the recovery scenario file, you can choose whether you want to replace it with the new scenario you have just copied. Modifications you make are not saved until you click Save in the Recovery Scenario Manager dialog box. If you have not yet saved your modifications, and you click the Close button in the Recovery Scenario Manager dialog box, QuickTest prompts you to save the recovery file. Click Yes to save your
changes.
Setting the Recovery Scenarios List for Your Tests or Components
After you have created recovery scenarios, you associate them with selected tests or components so that QuickTest will perform the appropriate scenario(s) during the run sessions if a trigger event occurs. You can prioritize the scenarios and set the order in which QuickTest applies the scenarios during the run session. You can also choose to disable specific scenarios, or all scenarios, that are associated with a test or component. You can also define which recovery scenarios will be used as the default scenarios for all new tests.
Note: You define the default recovery scenarios for all new components in the component template.
Adding Recovery Scenarios to Your Test or Component
After you have created recovery scenarios, you can associate one or more scenarios with a test or component in order to instruct QuickTest to perform the recovery scenario(s) during the run session if a trigger event occurs. The Recovery tab of the Test Settings dialog box or Business Component Settings dialog box lists all the recovery scenarios associated with the current test or
component.
Tip: When a trigger event occurs, QuickTest checks for applicable recovery scenarios in the order in which they are displayed in the Recovery tab.
To add a recovery scenario to a test or component:
1 Choose Test > Settings or Component > Settings. The Test Settings dialog box or Business Component Settings dialog box opens. Select the Recovery tab.
2 Click the Add button. The Add Recovery Scenario dialog box opens.
3 In the Recovery file box, select the recovery file containing the recovery scenario(s) you want to associate with the test or component. Alternatively, click the browse button to navigate to the recovery file you want to select. The Scenarios box displays the names of the scenarios saved in the selected file.
4 In the Scenarios box, select the scenario(s) that you want to associate with the test or component and click Add Scenario. The Add Recovery Scenario dialog box closes and the selected scenarios are added to the Scenarios list in the Recovery tab.
Tip: You can edit a recovery scenario file path by clicking the path once to highlight it, and then clicking it again to enter edit mode. For example, you may want to modify an absolute file path to be a relative file path. If you modify a recovery scenario file path, you must ensure that the recovery scenario is defined in the new path location before running your test or component.
Viewing Recovery Scenario Properties
You can view properties for any recovery scenario associated with your test or component.
Note: You modify recovery scenario settings from the Recovery Scenario Manager dialog box.
To view recovery scenario properties:
1 In the Scenarios box, select the recovery scenario whose properties you want to view.
2 Click the Properties button. Alternatively, you can double-click a scenario in the Scenarios box. The Recovery Scenario Properties dialog box opens, displaying read-only information regarding the settings for the selected scenario.
Setting Recovery Scenario Priorities
You can specify the order in which QuickTest performs associated scenarios during a run session. When a trigger event occurs, QuickTest checks for applicable recovery scenarios in the order in which they are displayed in the Recovery tab of the Test Settings dialog box or Business Component Settings dialog box.
To set recovery scenario priorities:
1 In the Scenarios box, select the scenario whose priority you want to change.
2 Click the Up or Down button. The selected scenario's priority changes according to your selection.
3 Repeat steps 1-2 for each scenario whose priority you want to change.
Removing Recovery Scenarios from Your Test or Component
You can remove the association between a specific scenario and a test or component using the Recovery tab of the Test Settings dialog box or Business Component Settings dialog box. After you remove a scenario from a test or component, the scenario itself still exists, but QuickTest will no longer perform the scenario during a run session.
To remove a recovery scenario from your test or component:
1 In the Scenarios box, select the scenario you want to remove.
2 Click the Remove button. The selected scenario is no longer associated with the test or component.
Enabling and Disabling Recovery Scenarios
You can enable or disable specific scenarios and determine when QuickTest activates the recovery scenario mechanism in the Recovery tab of the Test Settings dialog box or Business Component Settings dialog box. When you disable a specific scenario, it remains associated with the test or component, but is not performed by QuickTest during the run session. You can enable the scenario at a later time.
To enable/disable specific recovery scenarios:
- Select the check box to the left of one or more individual scenarios to enable them.
- Clear the check box to the left of one or more individual scenarios to disable them.
To define when the recovery mechanism is activated:
- Select one of the following options in the Activate recovery scenarios box:
- On every step—The recovery mechanism is activated after every step.
- On error—The recovery mechanism is activated only after steps that return an error return value. Note that the step that returns an error is often not the same as the step that causes the exception event to occur.
For example, a step that selects a check box may cause a pop-up dialog box to open. Although the pop-up dialog box is defined as a trigger event, QuickTest moves to the next step because it successfully performed the check box selection step. The next several steps could potentially perform checkpoints, functions or other conditional or looping statements that do not require performing operations on your application. It may only be ten statements later that a step instructs
QuickTest to perform an operation on the application that it cannot perform due to the pop-up dialog box. In this case, it is this tenth step that returns an error and triggers the recovery mechanism to close the dialog box. After the recovery operation is completed, the current step is
this tenth step, and not the step that caused the trigger event.
- Never—The recovery mechanism is disabled.
Note: Choosing On every step may result in slower performance during the run session.
Tip: You can also enable or disable specific scenarios or all scenarios associated with a test or component programmatically during the run session.
Setting Default Recovery Scenario Settings for All New Tests
You can click the Set as Default button in the Recovery tab of the Test Settings dialog box to set the current list of recovery scenarios to be the default scenarios for all new tests. Any future changes you make to the current recovery scenario list only affect the current test, and do not change the default list that you defined. You define the default recovery scenarios for all new components in the component template.
Programmatically Controlling the Recovery Mechanism
You can use the Recovery object to control the recovery mechanism programmatically during the run session. For example, you can enable or disable the entire recovery mechanism or specific recovery scenarios for certain parts of a run session, retrieve status information about specific
recovery scenarios, and explicitly activate the recovery mechanism at a certain point in the run session.
By default, QuickTest checks for recovery triggers when an error is returned during the run session. You can use the Recovery object's Activate method to force QuickTest to check for triggers after a specific step in the run session. For example, suppose you know that an object property checkpoint will fail if certain processes are open when the checkpoint is performed. You
want to be sure that the pass or fail of the checkpoint is not affected by these open processes, which may indicate a different problem with your application.
However, a failed checkpoint does not result in a run error. So by default, the recovery mechanism would not be activated by the object state. You can define a recovery scenario that looks for and closes specified open processes when an object's properties have a certain state. This state shows the object's property values as they would be if the problematic processes were open. You can instruct QuickTest to activate the recovery mechanism if the checkpoint fails so that QuickTest will check for and close any problematic open processes and then try to perform the checkpoint again. This ensures that when the checkpoint is performed the second time it is not affected by the open processes.
Scripting in Real Time Environments
QuickTest Pro Coding Standards & Best Practices
Introduction:
These standards are for testers who are using QuickTest Pro to develop their automated test scripts. The purpose of this document is to provide testers with general guidelines and rules for building repeatable, accurate, maintainable, and portable test scripts. This standard document covers areas such as Variable Naming, Commenting Code, Formatting of Code etc.
Naming Conventions
Local scope variables
Variables represent values that can be changed within a procedure or function. Local scope variables are placeholders that reside within a function- or a script-body.
Prefixes for Variable Data Types
Data Type | Prefix | Example |
Boolean | bln | BlnLoggedIn |
Date | d | dTomorrow |
Variant | v | vTblValue |
Integer | int | IntAge |
Object | o | oUserTable |
String | str | strName |
Arrays | a | Used in another prefix, as in astrEmployee |
Global scope variables
The values of global variables can be used and changed all over the project within all scripts and libraries.
Syntax
"g" + [Prefix]+[ShortDescription]
Letter "g" indicates that the scope of the variable is global. [Prefix] is a lowercase letter that represents the type of the global variable. The rules for [Prefix] are the same as for "Local scope variables".
Examples
gintNumOfPersons
gstrPersonLastname
Constants
Constants are "variables" that cannot be changed within a function- or script-body. The value will always be the same during script-execution. Constant names should be descriptive and not ambiguous. Constant names should be in upper case, with proper words separated by the underscore character.
Examples
ID_OS_VERSION
MY_TEMP_URL
Functions/Actions
The Function/Action name should be descriptive of its primary purpose. The Function/Action name must always correspond to what the Function/Action is actually doing. If name of the function is "OpenLogFile("log file name") then it is expected that the function only opens log file.
Examples
CountItemInString()
Reusable Actions
Quick Test Pro reusable actions names should start with an "r" to reflect that the action is reusable.
Scripts
must capitalize the first letter of each word in the test script name . The exception being the product name, which should always be capitalized.
Examples
IB_Auditlog_Save
Function Libraries
Functional library names should reflect the product name, underscore, functionality that is being tested, underscore and the words "lib" at the end.
Example:
IB_Log_Lib
IB = Intranet Browser product
Log = log functionality in the application
Lib = Functional Library
Object Repository Files
Object GUI files names should reflect the product name being tested.
Example:
IB_GUI.tsr
IB = Intranet Browser product
Coding Rules
Commenting Code
Headers - Every test script, functional library, or actions should contain a header comment that displays the name, creator, date, description, assumptions, preconditions, and post conditions.
Test Script Header Comment.
'****************************************************************************************************************************
' SCRIPT NAME : CL11_FeatureAuditAnnotateSDOC
' CREATED BY : Applabs
' DATE CREATED : 16/Mar/2001
' DESCRIPTION : This Script Checks That Feature Audit for Annotate is not
' transferred to the auditlog file when a sealed Word document
' is annotated by inserting comment
' Modification Log :
' ID Date Name Purpose
' ---- ------- ---------- --------------
'****************************************************************************************************************************
Function Header Comment.
'****************************************************************************************************************************
' FUNCTION NAME : CheckClientFeatureAudited
' CREATED BY : Applabs
' DATE CREATED : 09/March/2001
' DESCRIPTION : This Function checks that required client feature audit is transferred to auditlog file.
' Parameters : strFilePath - Path of decrypted auditlog file.
' strFeature - Expected feature to be audited.
' strPublisherID - Publisher ID of sealed content.
' Return Values : Returns the number of times the client feature is audited in the auditlog file.
' Preconditions : Audit log files exist
' Postcondition: : Feature audit transfer to audit log file
' Modification Log :
' ID Date Name Purpose
' ---- ------- ---------- --------------
'*****************************************************************************************************************************
Commenting single lines / paragraphs – The need to comment an individual line of code is rare. Two possible reasons for commenting a single line of code are:
The line is complicated enough to need an explanation.
The single line once had an error and you want to record the change. When modifying a single line of code, the original line should be commented out using the author's initials and date in brackets, separated by a single dash.
For example (in VBScript), the following shows a code change by SMB (initials):
'[SMB-03/09/01]Browser("e.POWER").Page("Worklist").WebRadioGroup("item_select").Select "122023"
Browser("e.POWER").Page("Worklist").WebRadioGroup("item_select").Select strItemID '[SMB-03/09/01]
Use end of line comments to annotate data declarations.
Example:
Dim intEmpAge 'Stores Employee Age.
Dim strEmpName 'Stores Employee Name.
Such data annotations include: units of numeric data, range of allowable values, limitations on input data, and the meaning of enumerated or constant codes.
Focus paragraph comments on the why rather than the how. Simply put, a reader should be able to discern from quality code how an operation is performed. Why that operation is performed will be less apparent.
When commenting individual lines or paragraphs, indent the comment and align it with its corresponding code. Also, precede the comment line by a single blank line.
Commenting Control Structures
Place a comment before each block of statements, if, case, or loop. Use the comment to clarify the purpose of the control structure.
Example:
'Loop through the each row in the data table.
For intCount=1 to datatable.GetRowCount
'Check whether content in both columns are equal.
If datatable("Name1", dtGlobalSheet)= datatable("Name2", dtGlobalSheet) then
reporter.ReportEvent micPass,"content of both column are equal in row" & intCount
End If
Next
For long code blocks, comment the end of each control structure. This makes script code which spans many lines easier to follow.
Example:
For intCount=1 to datatable.GetRowCount
'Check whether content in both columns are equal.
If datatable("Name1", dtGlobalSheet)= datatable("Name2", dtGlobalSheet) then
reporter.ReportEvent micPass,"content of both column are equal in row" & intCount
End If
Next 'Loop through the each row in the data table.
Formatting Code
The following are the directives that must be complied with while formatting the code
- Do not place multiple statements on a single line.
Placing multiple statements in a single line increase complexity. Do not do it.
- Do not exceed 90 Characters on a line
- Make sure that not more than 90 characters are placed on a single line.
- Use Indentation to show organizational structure
- Do proper indentation through out your coding. Flow control statements should be indented one tab length for easier readability.
Example:
For intCount = 0 to 10
MyVar = MyVar + 1
If MyVar = 20
MyVar =0
End If
Next
Using Shared Object Repository
Use shared Object Repository instead of Object Repository per Action. This will an easy way for handling changes in the object repository.
Using Relative paths
Use relative paths while calling Shared object repository files, VbScript function library files and Reusable actions.
Using Global Variables
Declare and Assign, all the variables that can be used in many scripts (For example: Username, Password, PrinterName etc) in a Reusable Action or VBScript file and use these variables in Other Actions. Using this method we can modify the value of variable in single global file instead of making modification in many script files.
Labels: QTP
0 Comments:
Post a Comment
<< Home