QuickTest Professional 9.

2

Table of Contents
1 Introduction.............................................................................................................................................3 2 Test Process Of QTP..............................................................................................................................4 1.1 First step is Planning....................................................................................................................... 4 1.2 Second step is Creating Tests or Components................................................................................ 4 1.3 Third step is Inserting checkpoints into your test or component.................................................... 4 1.4 Fourth step is Parameterize the Test................................................................................................4 1.5 Fifth step is Running the test...........................................................................................................5 1.6 Sixth step is analyzing the results....................................................................................................5 2 Test object Model, test object and run-time object ................................................................................ 6 3 Recording Test........................................................................................................................................ 7 4 Running Test........................................................................................................................................... 9 5 Checkpoints...........................................................................................................................................12 5.1 Standard Checkpoints....................................................................................................................14 5.2 Text checkpoints............................................................................................................................16 5.3 Image Checkpoint..........................................................................................................................17 5.4 Bitmap Checkpoint........................................................................................................................18 5.5 Table Checkpoint.......................................................................................................................... 20 5.6 Page Checkpoint............................................................................................................................21 5.7 Database Checkpoint.....................................................................................................................23 5.8 Accessibility Checkpoint...............................................................................................................25 6 Output Values....................................................................................................................................... 26 7 PARAMETERS.................................................................................................................................... 29 7.1 Data Table parameters ..................................................................................................................30 7.2 Environment variable Parameters................................................................................................. 35 7.3 Random number Parameters......................................................................................................... 36 8 PARAMETERIZATION...................................................................................................................... 37 8.1 Test parameters .............................................................................................................................37 8.2 Action Parameter ..........................................................................................................................38 8.3 Parameterize a Checkpoint ...........................................................................................................39 9 Actions.................................................................................................................................................. 40 9.1 9.2 9.3 9.4 9.5 Creating a new action................................................................................................................... 41 Inserting an existing action...........................................................................................................41 Nesting Actions............................................................................................................................ 42 Splitting Actions...........................................................................................................................42 Exiting an Action..........................................................................................................................43 1

QuickTest Professional 9.2 9.6 Reusable Actions .........................................................................................................................44 10 Object Management............................................................................................................................ 45 10.1 Object Identification....................................................................................................................45 10.2 Object Spy.................................................................................................................................. 46 10.3 Object Repository.......................................................................................................................47 11 Descriptive Programming................................................................................................................... 53 11.1 11.2 11.3 11.4 11.5 Static Descriptive Programming................................................................................................ 54 Dynamic Descriptive Programming...........................................................................................56 Retrieving child objects in Descriptive Programming............................................................... 57 Creating checkpoints.................................................................................................................. 58 Using Index Property..................................................................................................................59

12 Best Practices...................................................................................................................................... 60 13 Function Libraries............................................................................................................................... 63

2

QuickTest Professional 9.2

1 Introduction
QTP (QuickTest Professional) is Mercury's advanced keyword-driven testing solution. QTP provides for functional test and regression test automation. With QTP (QuickTest Professional) you will be able to test 1. Standard Windows applications 2. Web objects, 3. ActiveX controls, and 4. .Net 5. Java 6. SAP (Systeme, Anwendungen und Produkte in der Datenverarbeitung, Systems, Applications and Products in Data Processing) 7. Visual Basic applications. 8. Siebel 9. Oracle 10. PeopleSoft and 11. Terminal emulators ( http://www.emtec.com/zoc/terminal-emulator.html) We need additional QuickTest add-ins for special environments e.g. .Net, Terminal emulators. The current version of QTP (version 9.x) supports running tests on the following browsers:
● ● ●

Microsoft Internet Explorer 6.0 Service Pack 1 or 7.0 Beta 2 and lower, Netscape Browser 8.0 Mozilla FireFox 1.5.

QuickTest Professional 9.2 is compatible with: SAP 8.2, .NET 9.2, Web Services 9.2, Java 9.1, Oracle 8.2, PeopleSoft 8.2, Siebel 8.0, Stingray 8.2, Terminal Emulator 8.0, and VisualAge Smalltalk 8.2. QTP (QuickTest Professional) is Unicode compliant according to the requirements of the Unicode standard, enabling you to test applications in many international languages. As and when an application under test changes, such as when a "Log in" button is renamed "Sign Into," we can make one update to an XML-based Shared Object Repository (within the new Object Repository Manager), and the update will circulate (propagate) to all tests that reference this object. QuickTest Professional keeps object-level changes synchronized among users throughout test creation efforts. Moreover, now users can invoke and run Mercury WinRunner™ scripts and functions from Mercury QuickTest Professional, and then automatically report WinRunner results back into the original scripts.

3

2 2 Test Process Of QTP QTP (QuickTest Professional) lets you create tests and business components by recording operations as you perform them in your application. We can then modify your test or component with special testing options and/or with programming statements. short tests that check specific functions of the application or complete site. Decide how you want to organize your object repositories. determine the functionality you want to test. We can also use output values to extract data from our test or component.A compilation of steps organized into one or more actions. QuickTest graphically displays each step we perform as a row in the Keyword View. Reusable action and External action). or submitting a data form. As we navigate through the application or site. A test is composed of actions (3 kinds of actions are there in QTP Non-reusable action. 1. QuickTest substitutes the fixed values in your test or component with parameters Each run session that uses a different set of parameterized data is called an iteration. A step is something that causes or makes a change in your site or application. 1. such as clicking a link or image. An output value is a 4 . 1. The Documentation column of the Keyword View also displays a description of each step in easy-to-understand sentences. Either recording a session on your application or Web site.4 Fourth step is Parameterize the Test Broaden the scope of your test or component by replacing fixed values with parameters.3 Third step is Inserting checkpoints into your test or component. To check how your application performs the same operations with different data you can parameterize your test or component.QuickTest Professional 9.1 First step is Planning Before starting to build a test. 1. A checkpoint is a verification point that compares a recent value for a specified property with the expected value for that property. Build an object repository and use these objects to add steps manually in the Keyword View or Expert View. Test . which we can use to verify that our application performs as expected. This enables you to identify whether the Web site or application is functioning correctly. For example. 2.2 Second step is Creating Tests or Components We can create a test or component by 1. When you parameterize your test or component. you should plan it and prepare the required infrastructure.

Step Over. 1. 5 . After running the test or component. ● Report defects identified during a run session. checking any text strings. Run test or component to check the site or application. 1. or we can report them manually from the Test Results window.5 Fifth step is Running the test After creating test or component. We can use the ● ● ● Step Into. We can also set breakpoints to pause the test or component at pre-determined points. When we run the test or component. We can control the run session to identify and eliminate defects in the test or component. If Quality Center is installed. We can use many functional testing features of QuickTest to improve your test or component and/or add programming statements to achieve more complex testing goals. We can view a summary of the results as well as a detailed report. QuickTest connects to your Web site or application and performs each operation in a test or component. we can view the results of the run in the Test Results window. Run the test or component to debug it. Step Out commands to run a test or component step by step. ● View the results in the Results window. we run it.6 Sixth step is analyzing the results After we run test or component. we can report the defects fond out to a database. We can instruct QuickTest to automatically report each failed step in the test or component. QuickTest repeats the test (or specific actions in your test) for each set of data values we defined. we can view the results. objects.QuickTest Professional 9.2 value retrieved during the run session and entered into the Data Table or saved as a variable or a parameter. If we parameterized the test with Data Table parameters. We can view the value of variables in the test or component each time it stops at a breakpoint in the Debug Viewer. or tables you specified. We can subsequently use this output value as input data in your test or component.

we can access the internal methods and properties of any runtime object using the Object property. and that QuickTest executes when the test or component runs.To make the test object property values match the property values of the run-time object. ● We can view the syntax of the test object methods as well as the run-time methods of any object on our desktop using the Methods tab of the Object Spy.QuickTest Professional 9. Similarly. Netscape for Netscape objects). A test object is an object that QuickTest creates in the test to correspond to (represent) the actual object in the application. QuickTest executes (performs) the recorded test object method on the run-time object. We can also use regular expressions to identify property values. We can retrieve property values of the RUNTIME OBJECT during the run session by adding GetROProperty statements. QuickTest uses the stored information about the object during the run session to identify and check the object.2 3 Test object Model. ● Property values of objects in the application may change . test object and run-time object Test object Model is a set of object types or Classes that QuickTest uses to represents the objects in our application. ● We can view or modify the test object property values that are stored with the test or component in the Object Properties or Object Repository dialog box. Properties and methods of objects: The property set for each test object is created and maintained by QuickTest. ● 6 . QuickTest uses the values of these properties to identify runtime objects in the application during a run session. A test object class comprises of a list of properties that can individually (uniquely) identify objects of that class and a set of appropriate methods that QuickTest can record for it. We can access and execute run-time object methods using the Object property. A run-time object is the real (actual) object in the application or Web site on which methods are performed during the run session. methods of test objects are methods that QuickTest recognizes and records when they are executed (performed) on an object while we are recording. When we run the test. Methods of Run-time object are the methods of the object in the application as defined by the object architect (creator). If the available test object methods or properties for an object are not sufficient or they do not provide the functionality we need. Some important points to remember about methods and properties : Each test object method we execute (perform) while recording is recorded as a separate step in the test. The property set for each run-time object is created and maintained by the object architect (creator) (Microsoft for Internet Explorer objects. ● Properties of test object are captured from object while recording. ● We can retrieve or modify property values of the TEST OBJECT during the run session by adding GetTOProperty and SetTOProperty statements in the Keyword View or Expert View. we can modify test object properties manually while designing the test or component or using SetTOProperty statements during a run session.

If the page is already open select the ‘Record and run on any open web browser’ option. ● ● RECORDING MODES There are 3 recording modes in QTP: 1. Analog Recording 3. Multiple actions can be included when needed. It records at object level and records all run-time objects as Window or WinObject test objects. Choose how to open the application. ● ● Click the Record button or choose Test > Record.QuickTest Professional 9. if an environment or on an object not recognized by QuickTest. recording a signature produced by dragging the mouse. Normal Recording 2. Analog Recording steps are not editable from within QuickTest. and generates scripts in the expert view. If you want to open the page automatically select the ‘Open the following browser when record and run session begins’ option and set the Url of the page you want to record. use Low Level Recording. Low Level Recording : At any time. Navigate through the application or Web site. In this QTP also records and tracks every movement of the mouse for example. as it recognizes the objects in the application regardless of their location on the screen. Each step recorded in Low Level Recording mode is shown in the Keyword View and Expert View.g.2 2 Recording Test QuickTest records the operations we perform. QuickTest records each step performed and displays it in the Keyword View and Expert View. displays them as steps in the Keyword View. we can switch to either Analog Recording or Low Level Recording in the middle of a recording session for specific steps and then return to normal recording mode. 7 . All the three modes of recording can be used in a single test e. ● Before recording a test see to that all other browsers are closed. Low level Recording Normal mode : This is the default and takes full advantage of the Quick Test test object model. When you complete your recording. This can be done as follows: Go to Test->Record & Run Settings->web. Click the Save button to save the test. Each test in Quick test includes a single action. click the Stop button or choose Test --> Stop. QuickTest records all parent level objects as Window test objects and all other objects as WinObject test objects. Analog Recording : Exact mouse and keyboard operations are recorded in relation to either the screen or the application window.

QuickTest adds to your test a RunAnalog statement that calls the recorded analog file. Recording in Analog mode can be relative to the screen or relative to a specific window (see user guide for detail) In Analog Recording a separate file is saved and stored with the action.QuickTest Professional 9.2 Analog Recording and Low Level Recording require more disk space than normal recording mode. switch to Low Level Recording ● 8 . in normal mode QuickTest performs the step on an object even if it has moved to a new location on the screen. Use Low Level Recording when : ● ● Environments or objects not supported by QuickTest. Use Analog Recording when : ● ● The actual movement of the mouse is what you want to record. Exact location of the operation on your application screen is necessary. In Analog Recording mode. If the location of the object is important to your test.

make ● ● ● ● ● ● 9 . click the Run button. A breakpoint is indicated by a red-colored hand in the left margin of the test window. if running from the Keyword View. and steps that contain checkpoints are marked Passed or Failed in the bottom right part of the Test Results window and are identified by the icon or in the tree pane. and then continue running the test from the breakpoint. tive screens. Iterations. The Pause option in the Debug menu is used to temporarily suspend the run. ● ● The Run option can be used to run the test from start to end. The StepInto(F11) option in the Debug menu is used to run the current line of the test. While recording. if running from the Expert View. actions.QuickTest Professional 9. Thus it enables us to check a specific part of the application or to confirm that a certain part of the test runs correctly.If the window is not already open choose Test->Results. set. the results are displayed in the Test Results window. To resume running a paused test. or modify the current value of objects or variables in the test. The test run is paused when it reaches the breakpoint.when a test stops at a breakpoint. After a test run. or to the end of the test .2 3 Running Test When you run a test. Checkpoints and the test object descriptions.The Test result tree can be collapsed and expanded. The Insert\Remove Breakpoint(F9) option in the Debug menu is used to stop a test run at a predetermined place in a test. Quick Test saves the snapshots of the application as Active screens which can be used later to set Checkpoints and output values. You can examine the effects of the test run up to the breakpoint. The Update Run option in the Test menu is used to update the Acany necessary changes. before executing the step. The Run from Step option in the Test menu is used to run the test from a selected step to the end of the current action. QuickTest performs the steps you recorded on the application. The DebugViewer option in the View menu is used to view.

ReportEvent 0.QuickTest Professional 9.2 To add details in the Test results window Reporter event is used.0 and 1 represent pass and fail respectively. 10 . “Search Successful" The first argument (0 or 1) represents the Event status. The second argument indicates the step name and the third gives details about the executed test. Search. Reporter. The following line of code can be used.

let it be the default option -. You can click on the expert view tab to see the script which QTP has recorded for you automatically. 4. In Fly From enter Denver 7. First of all click on Record toolbar button ( or Automation menu --> Record or press F3).2 EXAMPLE We will test with the mercury sample application. Click ok 10. and below "write run results to". In the Flight Schedule area. 2. Click on File --> exit. In Fly To enter London 8. 15. It will fill rest of the required information by itself. Click on Flights button which is on the right hand side of "Fly To". 11. 11 . This will run you earlier recorded test and show you the results. Go to "Windows Applications" tab and choose first option "Record and run test on any open windows based application. Type Agent name as "Kumar" (You can enter any. But we have to go a long way. This is just the beginning. Open Flight application (Start --> All programs --> QuickTest Professional --> Sample Applications --> Flight) 3. 1. In QTP 9 we can place 120 actions in a script. Click on insert order and after the order is inserted 12. when we click on Record. Let the default option be selected in the Flights Table. in Date of Flight enter tomorrow's date in mm/dd/yyyy format. functions etc. 13.C:\Program Files\Mercury Interactive\QuickTest Professional\Tests\Test1\Res1(you can also change it) 16. Go to the "Results Location" tab. Click on run from Automation Menu (or press F5) to open up run dialog box. in "new run results folder" radio button. "Record and Run Settings" window opens up." and click on ok.QuickTest Professional 9.( I used tabs to move to next fields) 6. QTP script consists of things like actions. Now you have recorded your first script. but must be 4 characters or more) and enter password as "mercury". 9. In the flight reservation window that opens up 5. this is a limit. We will begin with a simple test like the "hello world" program with which we start learning any programming language. click on ok. In the name field enter your name. 14.

● During Editing: Right click the object in the Active screen and select the type of checkpoint to be added. the checkpoint name receives the name of the test object on which the checkpoint is being performed. choose Insert ->Checkpoint option to select a type of checkpoint and select the object for which the checkpoint is to be added. Checkpoints can be added during recording and/or during editing a test: ● During Recording: In the Keyword View or Expert View. After we add a checkpoint. QuickTest adds a checkpoint to the current row in the Keyword View and adds a Check CheckPoint statement in the Expert View. We can change the name of the checkpoint if needed. By default.QuickTest Professional 9.2 4 Checkpoints A checkpoint enables you to identify whether the Web site or application under test is functioning correctly or not by comparing a current value for a particular property with the expected value for that property. 12 .

if you created checkpoint in action 2 then it will be action 2 folder and so on) . Bitmap checkpoints 5. for a standard checkpoint on a radio button for the property ‘selected’ checks whether the radio button is selected or not.mtr file which is in the action folder (if you created checkpoint in action1 then it will be action 1 folder under the folder in which you are saving the test/script. 13 . Accessibility Checkpoint 9. Image Checkpoint 4. Right click the object in the keyword view and insert the required checkpoint. add the property that is to be checked. Checkpoint information is stored in the Local Object Repository.QuickTest Professional 9. Text checkpoints 3. It is in the Resource. Table Checkpoint 6.2 Types of Checkpoints: 1. Results of the checkpoint can be viewed in the Test Results Window. Database Checkpoint 8. they are inserted using QTP's interface. Standard checkpoint 2. For example. Checkpoints cannot be added manually. Checkpoints can also be placed in the Keyword view. Page Checkpoint 7. XML checkpoints After selecting the object.

Make sure that Flight application is open. Click ok. Standard checkpoints can be used to perform checks on variety of objects such as buttons. 'enabled' with a value of False. (only one property will be checked in it i. 4. For example we can check that a radio button is activated after it is selected." and click ok. combo boxes etc. Standard checkpoints are supported for all add-in environments EXAMPLE: 1. Click on the "Flights. 6.QuickTest Professional 9. Standard checkpoints evaluate (compare) the expected values of object properties captured during recording to the object's current values during a run session.. It will Run the test and show you the result as pass.2 4. This is a small test in which we have used standard checkpoint and captured the disabled button on the Flight application. "Record and Run Settings" window opens up.1 Standard Checkpoints Standard checkpoints allow checking the object property values in the Web site or application under test. Now we can run the test in two ways to see how it fails and passes the results of the checkpoint. 3. When we click on Record. It will open checkpoint properties window.) 8.. 5. (Now only QTP with blank test and Flight application should be open)." button which is on the Right Hand Side of the "Fly To" combo box in the Flight application.Checkpoint Properties" window (with WinButton:FLIGHT highlighted). radio buttons. Click on Record. Make sure that this test and Flight application is open. 10. To see a pass test result: 1. Save the test. Standard checkpoints are supported for all add-in environments. Open a blank test. 7.e. Click on run. Go to "Windows Applications" tab and choose first option "Record and run test on any open Windows based application. Go to Insert (menu)->Checkpoint->Standard Checkpoint (or press F12). It will open "Object Selection . 2. 11. Click ok. Click on Stop in order to stop the Recording. 14 . 9.The mouse pointer will become hand and QTP will be minimized.

(The reason for doing this is that it will enable the 'Flight.. Fly From and Fly To fields and nothing else.2 To see a Fail test result: 1. 15 . This is because QTP was looking for a disabled 'Flight. so it failed. It will Run the test and show you the result as Fail.. but now since the button was enabled at run time.. Make sure that this test and Flight application is open. In the Flight application enter the Date of Flight.' button) 3. 2. Click on run in order to run the test..' button for which it recorded the information at the record time.QuickTest Professional 9.

) of that web page.2 4. At the bottom of the "Text Checkpoint Properties" window change 'Checkpoint timeout' to 0 seconds. Click on Record.The mouse pointer will become hand and QTP will be minimized. "Text Checkpoint Properties" window opens up. On the right hand side it will show you the details. 3. Go to Insert (menu)->Checkpoint->Text Checkpoint. Go to "Web" tab and choose first option "Record and run test on any open browser. Again Click ok to come out of "Text Checkpoint Properties" window. Run the test and when it is passed just go to the results window and on the left hand side expand every option and click on last option Checkpoint "Cannot find server".QuickTest Professional 9.Click on the first paragraph (which starts with-The page you are looking. Open a blank test and a web page in offline mode like this below: 2. "Record and Run Settings" window opens up. It will show the text to be checked in "Checkpoint Summary" area in red color and also show in blue color the text which is displayed before and after the selected text. Click on Configure -here you can change your selected text. but for now just click ok. 6." and click on ok. 5. change before and after text and so on. 4.. Click on stop in order to stop recording.2 Text checkpoints This check point is used to checks whether the text string is displayed in the appropriate place in your application or on a Web page. 16 . Lets understand it with an example: 1. When we click on Record.

Sample Pictures( containing 4 pictures . Click stop to stop recording the test. "Record and Run Settings" window opens up.The mouse pointer will become hand and QTP will be minimized. It will Open 'Image Checkpoint Properties' Window. 3. there will be a folder named My Pictures.Image("Sunset"). under this you will will find a folder. 5. Image checkpoints are supported for the Web add-in environment. Water lilies) 2. EXAMPLE: 1. Go to "Web" tab and choose first option "Record and run test on any open browser.Check CheckPoint("Sunset") If you run it with that image open in Internet explorer it will pass. When we click on Record. 17 ." and click on Ok.2 4. Now only a new blank test and internet explorer with this image should be open. Sunset. This test is not intelligent enough. Go to My Documents->My Pictures-> Sample Pictures and right click on image named 'Sunset' and open it with internet explorer. We will run this test with one of the image there. For example. Go to Insert (menu)->Checkpoint->Standard Checkpoint(or press F12). 7. 8.Blue Hills. In this window just uncheck all the property values like href.3 Image Checkpoint Image checkpoints allow you to check the properties of an image in the application or Web page.QuickTest Professional 9.Page("C:/Documents and S"). In the expert view it will just add one line Browser("C:/Documents and S"). In this way you can test for some or all the properties of the image which it showed in the 'Image Checkpoint Properties' Window. It will open 'Object Selection Checkpoint Properties' window with Image: Sunset highlighted. An image checkpoint can also be created by inserting a standard checkpoint on an image object. html tag etc and only check last property which is src. Rest every thing will be default. Click Ok. you can check that a selected image's source file is correct or not. Winter. If you change the name of some other picture in that folder to Sunset and run the test with that it will also pass. 4. Open a blank test. Click on Record. Click on the image which is opened in the explorer. Click OK. It is just checking that the image in the explorer is in the same location in which it was when the test was recorded and its name is Sunset.Sunset. 6. On your system under My Documents.

It will open "Bitmap Checkpoint Properties" window. An entire object or any area within an object can be checked. STYLE A 1. Go to "Windows Applications" tab and choose first option "Record and run test on any open windows based application. 18 .Bitmap Checkpoint Properties" window opens up. Click ok.2 4. Go to Insert (menu)->Checkpoint->Bitmap Checkpoint 4. Click stop to stop recording the test. "Record and Run Settings" window opens up. Click ok 6. 2. "Object Selection. Click on Record. so that we will have no wait time while running the test. Change the "Checkpoint timeout" at the bottom of the window to 0 seconds. 9. 8." and click Ok. Make sure that QTP and the Flight application are open. 5. Open a blank test. Click on the "Fly To" combo box. Bitmap checkpoints are supported for all add-in environment.4 Bitmap Checkpoint With Bitmap Checkpoint we can check an area of a Web page or application as a bitmap. 7. we have to specify the area to check by selecting an object. While creating a test. When we click on Record. It will have "WinComboBox:Fly To" highlighted. The bitmap checkpoint is different from the image checkpoint. 3.QuickTest Professional 9.

(note: it will show that only in case of Failed result). instead of clicking on the "Fly To" combo box. 5. it will show you the expected bitmap and actual bitmap on the right hand side..2 STYLE B 1. Click stop to stop recording the test. It will have "WinObject:Flight Schedule" highlighted.QuickTest Professional 9. after 3rd point. just fail the test. Click ok. Change the "Checkpoint timeout" at the bottom of the window to 0 seconds. In the result window on the left hand side when you click on Checkpoint "Fly To:". so that we will have no wait time while running the test. click somewhere in the empty space above the "Fly From" Combo box but below the line. This time it will have "Flight schedule" area instead of just the "Fly To" combo box. 3.Bitmap Checkpoint Properties" window opens up.. 2.e. 4. Run the test. in the "Flight Schedule" area. "Object Selection. 19 . Above. i. 6. If you have recorded in the style A then just select any value in the "Fly To" combo box and then run the test. Click ok It will open "Bitmap Checkpoint Properties" winodow. To see how it stores the results. 7. Now click on the "Select Area. Just select "Fly From" combo box by dragging." button. Mouse pointer will change so that you can select any area by dragging.

Click stop in order to stop recording.QuickTest Professional 9. For example. 8. This time we will not do any extra setting. 9.2 4. "Object Selection .Checkpoint properties" window opens. 20 . Click ok. mainly the checkpoint results to see how QTP verifies the result. This website has a table at the bottom of the page.co. we can check the content of tables displayed in the application. "Record and Run Settings" window opens up. It will show all the rows and columns of the selected table. Run the test and analyze the results in the result window. Certain environments also support checking the properties of the table object. Click somewhere inside the table. Open a blank test and also open a website "http://www.php" in offline mode. 2. a check that a table has the expected number of rows and columns. 'Table Checkpoint properties' window opens. Go to "Web" tab and choose first option "Record and run test on any open browser.5 Table Checkpoint By adding table checkpoints to the test. 11. For example. 7. EXAMPLE: 1. The mouse pointer will become hand and QTP will be minimized. where "Software Testing Life Cycle" is the name of the table.in/software/softwaretesting-life-cycle. When we click on Record. Select "WebTable: Software Testing Life Cycle" which has a table icon on its left. Just change the Checkpoint timeout at the bottom of this window to 0 seconds and click ok. A table checkpoint can also be created by inserting a standard checkpoint on a table object. 6." and click on ok. Go to Insert (menu)->Checkpoint->Standard Checkpoint (or press F12). 10. we can check that a specified value is displayed in a certain cell. Click on Record. 5. 4. 3.editorial.

) 3.in/ is open. Let all the options be default. 6. 21 . Click on Stop in order to stop the Recording. Go to Insert (menu)->Checkpoint->Standard Checkpoint (or press F12). It recorded the following properties: Property Name load time number of images number of links Property Value "0" "2" "20" Here it shows the load time as 0 because I did not open Google at the time of running the test.in page.(Now only QTP with blank test and www.QuickTest Professional 9. 8.Check CheckPoint("Google") We will explore this line later on.co.google. Page checkpoints are supported for the Web add-in environment EXAMPLE: 1. In the Expert view it will add just one line: Browser("Google"). I ran this test by opening www. A page checkpoint can also be created by inserting a standard checkpoint on page object.2 4. 10.Checkpoint Properties" window. 5. Click ok. "Record and Run Settings" window opens up.co. It will Open "Object Selection . Click ok.google. Click on Record. A 'Page Checkpoint Properties' window opens up. The mouse pointer will become hand and QTP will be minimized.google. 7. Make sure thathttp://www.6 Page Checkpoint Page checkpoint is for web applications only. broken links etc.co. Click anywhere on the white space on the Google. 9. 2.in in offline mode (not on internet).in should be open. Go to "Web" tab and choose first option "Record and run test on any open browser." and click ok. Common things to check with this are load time.Page("Google"). 4. When we click on Record.co. it was already open. Open a blank test. Click on 'Page : Google' option which has a page icon on left of it with right corner of the page slightly folded.

22 .com it may fail. in the results window.QuickTest Professional 9.google. on left hand side.2 When you run it. it will show (when every option is expanded): Test Checkpoint-page Summary (where Checkpoint-page is the name with which test is saved) Run-Time Data Table Checkpoint-page Iteration 1 (Row 1) Action1 Summary Google (This will be the browser) Google (This will be the Page) Checkpoint "Google" If you run this test on www.

10. 11. Open a blank test. Click Next. Select Oracle (on my machine it was 'Oracle in OraHome9'). 14. Click Next. 6. Enter your password for Oracle. Select ' Specify SQL statement manually' from the Query definition area. 1. 8.2 4. Click 'Test Connection' Button. 15. Go to Insert (menu)->Checkpoint->Database Checkpoint 23 . Click Finish. Click on 'Machine Data Source' Tab 5. Enter 'Data Source name' ( I entered "oracle") 12.(before doing any recording) 2. Enter userid (I used SCOTT).It will ask for a Password. A Database Query Wizard opens. 3. If successful it will show 'Testing Connection' window with 'Connection Successful' written on it. Select 'TNS Service Name' ( I selected 'DB02'." and click on ok. Now we will record a test. Click on New Button. Go to "Windows Applications" tab and choose first option "Record and run test on any open Windows based application. This completes our task of Connecting QTP with Oracle. First of all you have to connect oracle 9i to QTP 9. It will open 'Oracle ODBC Driver Configuration' window. 3.QuickTest Professional 9. Click on Record. Select 'User Data Source' from Select a type of data source. 2. Click Next. 4. Database checkpoints are supported for all add-in environments Now we will try out Database checkpoint: using Oracle 9i EXAMPLE: 1. It will show all the data source drives it could find. 7. When we click on Record. Here click on 'Create' button which is on the right of "Connection String:" It will open 'Select Data Source' window. Enter 'description' (I entered "SQL") 13. my oracle database name) from combo box. For this go to Insert -> Checkpoint -> Database Checkpoint.7 Database Checkpoint The contents of a database accessed by your application can be checked by Database Checkpoint. 9. "Record and Run Settings" window opens up. 'Create New Data Source' window opens.

5. in details it will show checked 112 cells (in your case number of cells may differ). Click Finish. with the count of cells.PFC=10. Click Create. It will open 'Oracle ODBC Driver Connect' 8. Lets run it.CSR=F.APA=T." In the SQL Statement area type "select * from emp.FRC=10. 10. Click ok 9.MTS=F. Click Stop in order to stop the Recording.QuickTest Professional 9. Select Oracle from data source name. 6. It means if you go to the oracle and add or delete any row and run this test again it will fail.".FEN=T.RST=T. 24 .DBQ=DB02. 13. Select ' Specify SQL statement manually' from the Query definition area. 11.GDE=F. it just adds one line "DbTable("DbTable"). 12.Check CheckPoint "DbTable")" This is the simplest database checkpoint example.2 4.EXC=F.TLO=0.PWD=TIGER. MDI=F.FRL=F. Click Ok. A 'Database Query Wizard' opens.FWC=F. Enter password. Click on Run. Click Ok. Click Next.BAM=IfAllSuccessful. In the Expert View. It will open 'Database Checkpoint Properties' window with the result of the query.) When it is passed it will show following in the Result window: Test Checkpoint-database Summary (Checkpoint-database is the name with which a test is saved) Run-Time Data Table Checkpoint-database Iteration 1 (Row 1) Action1 Summary DbTable Checkpoint "DbTable" (when you click on this.DBA =W.) Just try to think how QTP is comparing the expected results with the actual one. ( we don't need to open any other window or application to run this as our Oracle is running at the back end as a service .default way in which it was installednothing special.FDL=10. It will come to Database Query Wizard window with 'Connection String' field filled with: "DSN=oracle. LOB=T. Go to 'Machine Data Source' Tab 7.QTO=T.UID=SCOTT.

8 Accessibility Checkpoint Accessibility Checkpoint recognizes areas of your Web site that may not conform to the World Wide Web Consortium (W3C) Web Content Accessibility Guidelines. 25 .QuickTest Professional 9. Accessibility checkpoints are supported for the Web add-in environment.2 4. check if the images on a Web page include ALT properties. For example. required by the W3C Web Content Accessibility Guidelines.

you can check the contents of individual XML data files or documents that are part of your Web application.2 4.QuickTest Professional 9.9 XML Checkpoint By adding XML checkpoints to your test. 26 . The XML Checkpoint option is supported for all add-in environments.

WinButton("FLIGHT").Check CheckPoint("FLIGHT") Now we will make some changes in this one line so that it can return some value.WinButton("FLIGHT").1 Open that test that contains the standard Checkpoint. it depends on us whether we capture it or not. In the expert view of the test you will see only one line i. Declare a variable and catch the return value in that variable: Dim return return = Window("Flight Reservation").e. One thing more we need to do here is that we have to enclose Checkpoint ("FLIGHT") in brackets.WinButton("FLIGHT").2 4.10 Checkpoint Return Value We will use the Standard Checkpoint which we did in section 6. So the final version looks like this: Dim return return = Window("Flight Reservation"). NOTE: Checkpoint always returns a value. Window("Flight Reservation"). Lets now capture it.QuickTest Professional 9.Check CheckPoint("FLIGHT") msgbox (return) 2. 1. 27 .Check (CheckPoint("FLIGHT")) msgbox (return) Now run the test and see the msgbox appearing with the return value.

we can output a part of the object's text. then the Object Selection .etc.list box. We can also output a part of the object’s test. Text Area Output Values: to output text strings displayed within a defined area of the application. ● During Editing: Right click the object in the Active screen and select the type of output value to be added. ● Text Output Values: to output text strings displayed in the application. The text before and after the output text can also specified. Database Output Values: to output the contents of database cells. When creating a text output value. Types of Output values We can create the following categories of output values: ● Standard Output Values: to output the property values of most objects like editbox.2 5 Output Values Output Value is used to retrieve the current value of any object in the application and stores it in a specified location.radio button.QuickTest Professional 9. From here select the required object.button.If the location clicked is associated with more than one object. Output values can be added in the following ways ● During Recording: In the Keyword View or Expert View. choose Insert -> Output Value and select the type of output value and the object for which the value is to be outputted. based on the results of a 28 ● ● .Output Value Properties dialog box opens.

EXAMPLE 1 1. QTP will be minimized and mouse pointer will take the shape of a hand. Open a new test and also open a sample Flight application (Flight Reservation window) 2. Make sure that both (new test and Flight Reservation window) are open and visible. 5. 8. It will bring you back to "Output Value Properties" window. Click on 'Insert Order' button in 'Flight Reservation window. Click Ok. Go to Insert (Menu)->Output Value->Standard Output Value.2 query on the database. We can create output values from the entire contents of the result set. Now it means whatever the value of Insert Order button's Enable Property will be. "Output Value Properties" window opens with 'Insert Order' in the Name text field. It will show a true value in there at run time. 29 . 4. 14. It will also show that captured value in the Results window. or from a part of it. 10.Output Value Properties" window opens with WinButton : Insert Order highlighted. Now earlier where under Value it was showing False (see step 8) now it will show Insert_Order_enabled_Out. 13. In the 'Configure Value' area click on Modify button. 7. QTP will show that value in Data Table (under Insert_Order_enabled_Out column) at Run time. Again Click Ok to come out of this "Output Value Properties" window. 3. Click on first checkbox (which is Property enabled and Value False). Just make that Insert Order button enable by putting some values in Flight Reservation window and then see that column (Insert_Order_enabled_Out ) in Data table. (It creates Insert_Order_enabled_Out column in Global datasheet in Data Table with a Value False in the first row) 11. Click on Record in order to record a test.' 6. "Object Selection . ● XML Output Values: to output the values of XML elements and attributes in XML documents. 12. 'Output Options' window opens.QuickTest Professional 9. Click Stop in order to stop the test. 9. In this window just click Ok.

and click Ok. Make sure that both (new test and Flight Reservation window) are open and visible. 30 . Click Ok. Just make that Insert Order button enable by putting some values in Flight Reservation window and then see that environment variable value (Insert_Order_enabled_Out ). Click Ok to come out of this "Output Value Properties" window. 13. 1.2 EXAMPLE 2 These above steps show you how to use output values with Data Table. 11. Below tutorial shows how to use output values with Environment variables. Click on first checkbox (which is Property enabled and Value False). In 'Output Options' window. 4. 12. Open a new test and also open a sample Flight application (Flight Reservation window) 2. Click on Record in order to record a test. In the Configure Value area click on Modify button. Click on 'Insert Order' button in Flight Reservation window. 3. Output Options window opens. 9. QTP will be minimized and mouse pointer will take the shape of a hand. "Output Value Properties" window opens with 'Insert Order' in the Name text field. 7.QuickTest Professional 9. (You can check that environment variable by going to File->Settings. 8. Now Insert_Order_enabled_out will be User-Defined internal environment variable. 6. 10. from 'Output Types' dropdown. Just add the below line in the Expert View at the end to see the value of the environment variable.Output Value Properties" window opens with WinButton : Insert Order highlighted. Now you can Run the test. Environment Tab and choosing User-Defined from variable type) 14. "Object Selection . It will also show that captured value in the Results window. It will show a true value in there at run time. select Environment. Go to Insert (Menu)->Output Value->Standard Output Value. msgbox(environment("Insert_Order_enabled_out")) 15. 5.

Parameters let us check how the application performs the same operations with multiple sets of data. It is known as parameterization. greatly increases the power and flexibility of a test.2 6 PARAMETERS By replacing fixed values with parameters QuickTest enables you to enlarge the scope of a basic test. Select the property to be parameterised and check the Parameter option from the configure value frame. A parameter is a variable that is assigned a value from an external data source or generator. 31 . Values in steps and checkpoints and also the values of action parameters can be parameterize. ● ● ● Datatable Environment variables Random numbers A property of an object can be parameterised from the object repository. Parameterization can be done in three ways using Quick Test.QuickTest Professional 9.

Click Ok (make sure we click ok with mouse and not hit the return (enter) Key. go to File->Exit. We can provide parameters using Global and/or Action Data Tables.1 Data Table parameters Date table parameters allow us to create a data-driven test (or action) that runs several times using the data that we supply. Enter the Agent Name as 'mary' and Password as 'mercury'. click on this button to open 'Value Configuration Options' 32 . Each iteration takes a different value from the datatable. in global data sheet. To run selected rows in the datatable choose the Run tab from Test->Settings and specify an option in the Datatable iterations frame. In the Keyword View under 'Value' column. for each row. In each repetition. 4. Open a new Test. 6. make a single click on 'mary' (Agent Name). Example 1 How. QTP iterates all rows of any action data sheet.) 5. 7. 1. Click on Record. a button like <#> will appear. When the Flight Reservation window is open.QuickTest Professional 9. or iteration. 2. Go to Start->All Programs->QuickTest Professional->Sample Applications->Flight. Click Stop in order to stop recording the test. The test runs once for each line of data in the DataTable.2 6. 3. QuickTest uses a different value from the Data Table.

WinMenu("Menu"). when you click on 'Parameter' radio button and select Data Table from the dropdown. 15.Set DataTable("p_Text". It will add a new column in action2 Data Sheet with 'bill ' (because I used bill as an Agent Name ) as its first row. Right click on action1 and select action call properties. Click Ok to close that window."C:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\". 13. Now Run the test. Click on Parameter radio button and select Data Table from the dropdown and let rest everything be default. For this action2. 9. 11. 18.Type micTab Dialog("Login"). 10. both of them do the same job but their data is in different sheets.WinEdit("Agent Name:"). Go to Insert (menu) -> Call to New Action to insert action2. Do the same for action2. Go to Expert View of action one and type : msgbox("acton1"). 16. make sure you select Current action sheet (local) in the Location in Data Table area. as we did for action1.Select "File. After repeating step 7. click ok to come out of that window. dtGlobalSheet) Dialog("Login"). Now you have two actions (action1 and action2).2 window."open" Dialog("Login"). Do the same for action2 and type msgbox("acton2") in its Expert view. In the Global Data sheet it will add a new columns with 'mary' as its first value. Now my action1 looks like this: SystemUtil. msgbox step has been added in both the action just to make you understand how the QTP is picking up the rows from Data Sheets. I added 'amar' and 'Sumit'.WinEdit("Agent Name:").WinButton("OK")."". 20. In the Local Data Sheet (action2) add two more rows to make them a total of 3.Exit" 19. 14. 33 .Run "C:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\flight4a. repeat steps from 2 to 7. go to Run Tab and select "Run on all rows" radio button.QuickTest Professional 9. I added 'rama'.exe". 17.SetSecure "4725bcebeea3b6682d186bf7b15ae92cc4e6c0ba" msgbox("acton1") Dialog("Login"). (This time I have used the Agent Name as 'bill') 12. 8. Go to Global Data Sheet and Add one more row in it below 'mary'.WinEdit("Password:").Click Window("Flight Reservation").

in cell(A.2 Example 2 This examples shows that each action can access data not only from Global Data Sheet or its own Local Data Sheet but also from other action's Data Sheet in the same test.Value("A". In the Action1 Data table. In the Global Data table. In Expert View of action1 type: msgbox("I am in action 1") rc = DataTable. dtGlobalSheet) 'accessing data from Global data sheet from action1 msgbox rc rc = DataTable.Value("A". In the Action2 Data table. in cell(A.Value("A".1) type 'Action2 Data'. 2) 'accessing data from action1 data sheet from action1 msgbox rc 4. in cell(A.1) type 'Global Data'. 3. In expert view of action2 type: msgbox("I am in action 2") rc = DataTable.Value("A". dtGlobalSheet) 'accessing data from Global data sheet from action1 msgbox rc rc = DataTable. 1.1) type 'Action1 Data'. Insert two actions. 2. 2) 'accessing data from action1 data sheet from action2 msgbox rc 34 .QuickTest Professional 9. Open a new test.

6. Right-click somewhere inside the data table. Select Oracle from there and click ok... Click Finish and all the data is there in the data table.QuickTest Professional 9. "Select Data Source" window opens 7. Click "Machine Data Source" Tab 8. "Database Query Wizard" opens. 5. Click Create button. Click on the radio button "Specify SQL statement manually". 9. it open "Database Query Wizard" window with 'Connection string' automatically filled with info like DSN. Go to Sheet->Import->From Database.2 We can also import Data Table from Database. After entering password when you click on ok. (make sure that "Maximum number of rows" checkbox is NOT checked) 4. Click Next. 2." in SQL statement Box. Enter password for oracle in the "Oracle ODBC Driver Connect window" 10. 1. 3. 11. Enter SQL statement "select * from emp. 12. It is very simple to import data from database into Data Table. 35 . UID etc.

Open a new Test. Built-in variables as the name suggests are predefined by QTP. 2. 6. 2. Go to File (Menu)->Settings. OSVersion. Now close this Test Settings window and go to test. User Defined Internal variables are the variables defined by you (the user) within the test and which are saved within the test and also accessible from within the test. You can click on any of those variables to see their current value. a Test Settings window opens. Click on the '+' which is on the right of Variable type dropdown. 5. 7. Go to Environment Tab. Go to Environment Tab. Go to File (Menu)->Settings. I have added quotes just for clarity) and click on OK. I just did the above four steps in order to show you from where you can access Built-in variables. 'Add New Environment Parameter' window opens up. respectively. ActionName which are for Operating System. Open a new Test. in Name type 'a' and in Value type 'hello' (without quotes. Built-in are the types of environment variables available in QTP.2Environment variable Parameters User-Defined Internal. 6. By default Built-in variable type is selected and you will be able to see Name and Description of Built-in variables below Variable type dropdown box. 4.2 6. Click Apply and OK to come out of Test Settings window. 5. Operating System Version and name of the action which is currently running. type the name and value of the variable e. Go to expert view and type: msgbox(environment("a")) 36 .g. Run the test. Examples of such variables are OS. 3.QuickTest Professional 9. User-Defined External. 4. 3. a Test Settings window opens. From Variable type dropdown select User-defined. It is just a simple way to show how a Built-in environment variable works. Lets look at an example of this: 1. It will add the variable with its type as 'internal'. Lets look at an example of this: 1. 7. In the Expert View type: a = environment("ActionName") & " is running on " & environment("OS") msgbox (a) 8.

Click on Apply and Ok to come out of it. Open a new Test.3 Random number Parameters When you define parameters for an action you can set the parameter's value as Random numbers. 3. These act as read only for the test. ( I saved it in 'tests' folder in the 'QuickTest Professional' folder under C:\Program files. There are many different ways in which you can use Random numbers in QTP. 100) msgbox(var1) Next 37 . Go to File (Menu)->Settings. User-Defined external variables are the variables which are defined in the file outside of test. From Variable type dropdown select User-defined. Open a new text file and type the following lines in it and save it with .xml extension. 6. It will show you the value of variable 'Address' in the message box.2 8. Go to expert view and type: msgbox(environment("Address")) 8. Value and Type heading (in our case it will show Address under Name.QuickTest Professional 9. 7. 4. Now Run the test. a Test Settings window opens. 5. Now run the test. 6. Go to Environment Tab. Click on "Load variables and values from external file" check box and import that external xml file that we created above. It will show you the value of variable 'a' in the message box. You can create as many files for environment variables as you want and choose them for your test. Now lets look at an example of this: 1. EXAMPLE: For i=1 to 5 var1=RandomNumber (0.) 2. 25 yellow Road under Value and External under Type). As soon as it is imported the complete path of that file will be shown in the File text box and the variable in it will show under Name.

Above we have created a Test Parameter. Click on 'Parameter' radio button and select 'Test/action Parameter' from that dropdown. Go to Expert View and type: msgbox(parameter("varaction")) 14. Go to File->Settings. Go to 'Parameter Values' Tab. Just click on this button to open 'Value Configuration Options' window. a 'Test Settings' window will open. go to 'Parameters' Tab. Now run the test. 11. Open a New Test. Now in the Keyword View right click on Action1 and select 'Action Properties'. in the 'Action Call Properties' window.1 Test parameters You use the Parameters tab of the Test Settings dialog box (File > Settings) to define input parameters that pass values into your test and output parameters that pass values from your test to external sources. 'Action Call Properties' window opens. The Type of this parameter is string. 10.2 7 PARAMETERIZATION 7. 2. Click Ok. Click Ok to come out of that window. Click on '+' sign which is on the top right. under 'Value' it will show <vartest>. 5. 8. it will show a button like this <#>. EXAMPLE 1. This example show how to declare test parameters and how to access those. 'Action Properties' window opens.[ remember this vartest is a test parameter we created at the beginning] 12. You can also use the Parameters tab to modify or delete existing test parameters. 'Test Parameters' radio button will be selected by default and under 'Test Parameters' radio button select 'vartest' from Parameter dropdown. While running it will show 'hello' in the msgbox. Remember (from QTP guide): 38 . Make a single click under 'Value' heading. 4. 9. Click on '+' sign which is on the top right. Click Apply and then Ok. 7. When you click on ok to come out of 'Value Configuration Options' window. 3. Enter the Name of the parameter as 'vartest' and its Default Value as 'hello'. 6. Enter the Name of the parameter as 'varaction' and its Type as string and no default value. Again in the Keyword View right click on Action1 and select 'Action Call Properties'.QuickTest Professional 9. There you will see the 'varaction' action parameter we created earlier. 13. Go to 'Parameters' Tab.

Alternatively.2 Action Parameter You can specify input parameters for an action so that steps in the action can use values supplied from elsewhere in the test.2 10. Enter the Name of the parameter as 'a' and its Type as Number. Make action2 reusable as we did for action1. see Setting Action Parameters. or from the output of a previous action call (for a sibling action). In the Expert View of action2 type: RunAction "Action1". For more information. you can enter the parameter name in the Expert View using the Parameter utility object. you must pass the test parameter to the action containing the step. click on 'Reusable Action' checkbox at the bottom to make the action reusable.2 You can directly access test parameters only when parameterizing the value of a top-level action input parameter or when specifying the storage location for a top-level output parameter. In the keyword View right click on action2 and select 'Run from Step'. Click on '+' sign which is on the top right. To use values supplied for test parameters in steps within an action. Just click ok to insert a new action. it will show you the sum 4 in msgbox. 2. EXAMPLE 1. In the Keyword View right click on Action1 and select 'Action Properties'. 3. Go to 'Parameters' Tab. Input values for an action parameter can be retrieved from the test (for a top-level action) or from the parameters of the parent action that calls it (for a nested action). In the general tab. In the Keyword View right click on Action1 and select 'Action Properties'. 'Action Properties' window opens. In the same way create another Number parameter 'b'. Go to Insert (menu)-> Call to New Action. 9. In the Expert View of Action1 type: s1=parameter("a") s2=parameter("b") msgbox(s1+s2) 7. 4. 2. 6. 'Insert Call to New Action' window opens. oneIteration. 7. 5. 8. 39 . in the format: Parameter "ParameterName"). Click Ok.QuickTest Professional 9. 'Action Properties' window opens.

QuickTest Professional 9. [On the right hand side of Parameter Radio button you will see Parameter Options button (which has paper and pen image on it). Go to Start-> All Programs->QuickTest Professional->Sample Applications->Flight. Click on Stop in order to stop the recording. Enter the Agent Name as "Sachin" and Password as "mercury". in order to highlight it and make "Configure Value" area enabled. I added "aaaa" in the 2nd and "bbbb" in the 3rd.2 7. Click on Record. EXAMPLE: 1. 2. Make sure only the Text property is checked which has a value of "Sachin" and rest all of the properties must be unchecked. 10. For this tutorial I will take into account Text Checkpoint created through Standard Checkpoint while editing. 7. 3. "aaaa" during second time and so on. Any value entered there first time will be compared by first row of the Global Data Sheet which has "Sachin" and any value entered there Second time will be compared by second row of the Global Data Sheet which has "aaaa" and so on.] 11. Make sure you enter "Sachin" during first time." 8. 12. that's it. In the Keyword view go to the row which has "Sachin" under Value column. Just try to enter some other value during second time like "xxxx" it will run the test but show you "Failed" in the Results window in the second iteration. 4.3 Parameterize a Checkpoint You can create a Checkpoint while recording or editing a test. 40 . Right-click anywhere on that row and choose "Insert Standard Checkpoint. which you checked above. "Checkpoint Properties" window opens. 9. In this area click on Parameter Radio button. Remember this is a Text Checkpoint on the "Agent Name" Text field. no Tab key or Return key). Just make a single click on Text Property. Now when we run the test and it opens the window where we need to enter the Agent Name and Password. 6. This is all we need to do. Add two more values in the subsequent rows. When the Flight Reservation window is open Go to File (menu)->Exit. In the "Checkpoint Properties" window just click on Ok to come out of it. We don't need to enter the Password. you can click on it to see the default values QTP has set for us. you have to enter Agent Name all of the 3 times (Just enter the Agent Name. Open a new test. It will add a column in the Global Data Sheet with "Sachin" as its first value. Make sure you use Tab key to move from one text box to another and hit Return (Enter) key after entering the Password. 5. 13.

If a call to an external action is used the action is read only in the calling test. multiple times. as shown below. The Action Tool Bar will be visible. each test begins with a single action. the Test Results are divided by actions so that we can view the detailed results for each action individually. Dividing a test into actions helps us to streamline the testing process. When we run a test with multiple actions. If it is invisible. But. i. use View -> Tool Bars -> Action to display it. enabling us to view the details of an individual action or the entire test flow. any existing action can be inserted as a copy of the original action. only once. only when. Each action has its own sheet in the Data Table so that we can insert data that applies only to that action. Actions can be of three types: ● Non-re-usable: Action can be used in the local test. BACK and SHOW. The test flow displays the overall flow of the test with all the actions in the test. we can modify this copy of the external action in the calling test.e. This can be of two types.2 8 Actions A test is composed of actions or logical sections. ● External: These are reusable actions created in another test. 41 . Actions on Quick Test Window (Keyword View) Actions Tool Bar contains buttons and a list of actions. ● Reusable: Action can be used in the local test. Actions Tool Bar There are two buttons on the Actions Tool Bar. In this case. By default.QuickTest Professional 9. The steps we add to the test are added within the test’s actions. we have one or more external/reusable actions in our test.

and choose: Insert -> Call to Copy of an action / Call to Existing Action as required Use the Browse button to choose the action Select the location Click OK. 7. because when an object or procedure in the application changes. Choose Insert > New Action or click the New Action 3. we can add to. and changes to the original action do not affect the inserted action. button. non-reusable action (even if the original action was reusable).QuickTest Professional 9. ● When we insert a copy of an action into a test. The action is inserted into the test as an independent. and the corresponding action tab in the Data Table. ● Inserting calls to an action makes it easier to maintain tests. We can insert copies of both reusable and non-reusable actions. Select an existing action. To insert the new action within the action of the currently selected step. or modify the action. 6. Click the step after which you want to insert the new action.1 Creating a new action 1. it needs to be updated only once. including checkpoints. To insert a new action at the end of the test. Click OK. parameterization. This can be modified at a later time in the Action properties dialog box. 42 . Add a description of the action. delete from. 5. 8. in the original action.2 Inserting an existing action We can insert an existing action by inserting a copy of the action. 4. check the At the end of the test checkbox. or by inserting a call to the original action.2 8. 2. Once the action is copied into the test. Any changes we make to this action after inserting it affect only this action. the action is copied in its entirety. The Insert New Action dialog box opens. Type a new action name or accept the default name. Select Reusable Action to make it reusable. 8. select After the current step.

with first one calling the second. ● If we select ‘Nested’ option: It creates two actions. ● Helps maintaining the modularity of the test ● Help running one action or another based on the results of a conditional statement ● To insert a nested action. with second action beginning with the selected step.QuickTest Professional 9. We can also change the Names and Descriptions of these actions.4 Splitting Actions To split an existing action: 1. follow the same procedure for inserting a new Action. 43 . Choose Step -> Split Action. The following window appears: ● If we select ‘Independent of each other’ option: it creates 2 independent actions. Select the step with which the new action should begin. 8. (A Parent-Child relationship). The following are the uses of nesting actions. 3. 2.3 Nesting Actions Running an Action within an action is nesting. select after the current step as 6th step.2 8. with.

QuickTest Professional 9. ● ExitRun . ● ExitActionIteration .5 Exiting an Action There are three types of Exit Action statements: ● ExitAction .Exits the test. ● ExitGlobalIteration . 44 .Exits the current action. regardless of its iteration attributes.Exits the current iteration of the action.2 8.Exits the current global iteration. regardless of its iteration attributes.

'my action 2'. Similarly insert a third Action. Make sure that Action1 is selected/highlighted and click on the Expert View tab.2 8. In the Expert View type: msgbox ("my action 1") 3. 6. 11. 12. 'Insert Call to New Action' Dialog box opens with Action2 as a default name of a new action. 5. Open a blank test. and again 'my action 1'. 10. 15. select Action1(keyword view). 7. In this dialog box in the 'action' dropdown box it will have Action1 by default since we made only that action as reusable. Run the test. 13. 9. make sure against Action3 it shows "Call to Action1 action" under Documentation. Click ok. In the Action properties window that opens. Click ok. Just click ok. By default it will have Action1 in it (make sure you are in the keyboard view). Make sure that Action2 is selected and click on the Expert View tab. It will add Action2 to your test. Now again highlight Action3 right click on it and choose 'Insert Call to Existing action'. right click on it and choose 'Action Properties'. Three message boxes appear in succession showing 'my action 1'. In the Expert View type: msgbox ("my action 2") 8.6 Reusable Actions In this section we will see how to use more than one action in a test and how to call one action from another with in the same test. 2. 45 . Again when you go to keyword View and expand Action1 it will show you function call under it. 1.QuickTest Professional 9. 14. In that keyword View itself go to Insert (Menu) ->Call to New Action. After third action is added. 4. By default it will be added at the end of the test as this radio button is selected in the location area. check the 'Reusable action' checkbox at the bottom. 'Select action' dialog box appears. In the keyword View where you can see all the three actions.

from the figure below.QuickTest Professional 9. Test Objects: Objects in the test that represent objects in the application or website that are created and maintained by QTP. We can modify these properties using the Add\Remove button. In case these properties are not enough for identifying the object Quick Test uses the assistive properties to do the same.1 Object Identification It is used to set the properties used to identify an object. the mandatory properties used to identify an ActiveX button object are caption and progid.2 9 Object Management Quick Test identifies objects of two types 1. For example. Thus an ActiveX button is always identified using these two properties. Smart Identification is used to identify the object if the learned properties are not sufficient. 46 . 9. 2. Each object has mandatory and assistive properties which are used to identify them. Three object management tools are available to maintain both the test and runtime objects in the test. Run Time Objects: Objects in the application that are created and maintained by the Browser.

2 9. The object’s properties (Test object properties and Run-Time object properties) and methods can be identified.2 Object Spy It can be used to view the properties and values of an object in any open application.QuickTest Professional 9. To perform other events such as mouse clicks or window focus hold the CTRL key. 47 . Click the pointing hand to select the object in the application. The object’s hierarchy tree is also displayed.

Object Repositories are of two types ● ● Local Shared If objects are stored in a Local Object Repository then these are available to specific actions but not to all the actions. But if these objects are stored in one or more Shared Object Repositories then multiple actions or tests can use them. But the application must be open and the object should be visible in the page. The object spy can also be accessed from the Repository. By default QTP makes and uses Local Object Repository. a button or a list or an edit box and the special characteristics of an object within the QuickTest are called object properties. QTP stores the recorded object properties in Object Repository. QTP automatically creates a Local Object Repository for that test or action and stores the information about any object it finds in that corresponding Object Repository. A temporary frame appears around the object causing it to flash. The Object Repository displays all objects in the current action or the entire test. An object in the application can be highlighted using the Highlight option. 48 . The Object Repository can be used to view or modify the properties of any object in the repository or to add new objects to the repository. If we create a new blank test and do a recording on it.3 Object Repository An object as we know is a graphic user element in an application e.QuickTest Professional 9.2 9.g.

While learning or recording we can specify Shared Object Repository for the selected action. and the local object repository is empty. but it is not accessible as a separate file as in case of the Shared Object Repository. There are different ways in which we can move objects from Local Object Repository to Shared Object Repository: 1. rename test objects in Local Object Repository. we can associate multiple Shared Object Repositories with an action. For example we can add.] When we open a test that was created using a version of QTP earlier that version 9 we are asked whether we want to convert it or view it in read only format. In any case if the test previously used per-action Object Repository. QTP does not add objects directly to the associated Shared Object Repository as we record. This is the default that every time we create a new action QTP creates a new corresponding Local Object Repository. If the test previously used a shared object repository. We can update the Shared Object Repository with the Local Object Repository: 49 . We can also manipulate some aspects of Local Object Repository using Quick test Object Repository Automation Object Model.QuickTest Professional 9. We can also create new Shared Object Repository and associate it with our action.mtr.2 In QTP. 2. Local Object Repository is automatically saved with the test when we save it. In case of Shared Object Repository. Select the location in which you want to save the file. the same shared object repository is associated with each of the actions in the test. instead it adds new objects in Local Object Repository (if that object does not already exist in associated Shared Object Repository). The extension of the Local Object Repository is . QTP uses existing information and does not add objects to the Object Repository if we record operations on an object that already exists either in Shared or Local Object Repository. Exporting the objects to the Shared Object Repository from the Local Object Repository: In Object Repository window choose the action whose local objects you want to move. If multiple Shared Object Repositories are associated with an action then also while recording QTP stores objects in corresponding Local Object Repository on the condition that those objects are not already stored in any corresponding associated Shared Object Repositories. Click on save. We can surely export Local objects to Shared Object Repository. the objects in each per action repository are moved to the Local Object Repository of each action in the test. [QuickTest Object Repository Automation documents the Object Repository automation object model that enables you to manipulate QuickTest object repositories and their contents from outside of QuickTest. We can specify and associate one or more Shared Object Repositories with each action. It is also true that Object Repositories are associated with actions and no matter how many times we learn or record on the same object in our application in different actions the object will be stored as separate test object in each of the Local Object Repository. Choose File-> Export Local Objects. remove.

when we open the test on the same machine on which we modified the Object Repository the test is automatically updated with all the saved changes. in this case. Whenever we make any changes to an Object Repository those changes are automatically updated in all the associated tests open on the same computer as soon as we make the change even if the Object Repository is not yet saved and if we close the same Object Repository without saving the changes the changes are rolled back in any open tests. Click update all. you must open the test or object repository file or lock it for editing on your computer to load the changes.QuickTest Professional 9. For the test that was not open when we changed Object Repository. We can compare two Object Repositories using the Object Repository Comparison Tool.2 If we create a new test it will be created with Local Object Repository. ● In Object Repository Manager open the Shared Object Repository (clear open in read only check box). we can associate any new or old Shared Object Repository with it. paste and move objects within Shared Object Repository and between Shared Object Repositories. This means that we can create Shared Object Repository with any extension other than . The tool enables you to identify similarities. We can copy. it should work fine (I have tried that and it works fine).tsr. 50 . It also enables you to merge objects from Local Object Repository of one or more action(s) into a Shared Object Repository. As said earlier we can also copy objects from shared Object Repository to Local Object Repository to modify them locally. It is recommended to use as a primary Object Repository the file in which you have invested alot of your effort. ● ● ● ● 3. In Object Repository Manager go to Tools –> Update From Local Repository. Merge Object Repositories We can also merge objects from two Object Repositories (called as primary and secondary) into a new single Object Repository (target Object Repository). variations or changes between two Object Repositories. paste and move objects in Local Object Repository and copy. To see saved changes in a test or repository open on a different computer. I think it may create problems while merging two Object Repositories (I haven't tried that yet). We can also copy objects to Local Object Repository from the Shared Object Repository. should not be open. The test. We cannot remove an association between the action and its Local Object Repository. like which has more number of objects If we do not specify a file extension for Shared Object Repository when creating a new Shared Object Repository QTP automatically appends a default extension name for Shared Object Repository as . Select the test who's Local Object Repository you want to use.tsr. It will move all the objects to the Shared Object Repository. The original source files are not changed. and so we can update that Shared Object Repository with Local Object Repository.

according to the order in which the Shared Object Repositories are associated with the action.e. we can also use a combination of objects from the Local and Shared Object Repositories. the action uses the local object definition i. If there is a same name object in both the Local Object Repository and in a Shared Object Repository associated with the same action. 2. the local object is given preference over the shared object. If an object with the same name is stored in more than one Shared Object Repository associated with the same action. and the update will circulate (propagate) to all tests that reference this object. 51 . it always uses the object repositories that are specified in the Associated Repositories tab of the Action Properties dialog box or in the Associate Repositories dialog box. shared location instead of multiple locations. When we access Shared Object Repositories from tests they are readonly. QuickTest Professional keeps object-level changes synchronized among users throughout test creation efforts. 3. we can edit them only using the Object Repository Manager. When we open an existing test. the object definition is used from the first occurrence of the object. Local objects can also be transferred to a shared object repository." we can make one update to an XML-based Shared Object Repository (within the new Object Repository Manager). such as when a "Log in" button is renamed "Sign Into. if necessary. This will cut maintenance and increase the re-usability of the tests because it will enable us to maintain the objects in a single. As and when an application under test changes. 1. For each action. either you want to store them in Local Object Repository or Shared Object Repository.QuickTest Professional 9.2 Important points about Object Repositories These are the points to consider while planning and creating test that how you want to store objects. 4. according to our needs.

52 . Object Repository in QTP is XML based means that if we change something related to the object in Shared Object Repository. On the left hand side in a tree local objects are editable while the shared ones are grayed out (noneditable).2 Object Repository dialog box Object Repository dialog box window shows a tree of all the objects (either Local or Shared) on its left hand side in the selected action. To view the test object properties. We can also delete objects from Object Repository window. the change will be propagated to all the tests that reference this object. this is needed as when an object is removed form the test it is not automatically removed from the Local Object Repository. in real time.QuickTest Professional 9. On selecting any object in the tree Object Repository window shows the information about the object like the name. repository in which it is stored etc. to modify test object properties and to add objects to Local Object Repository we can use Object Repository window.

such as all button objects. or to add all objects of a specific class. We can add the object directly to a Shared Object Repository using the Object Repository Manager. such as all WebButton objects.QuickTest Professional 9. We can also add an object to the Local Object Repository by choosing it from the application in the Select Object for Step dialog box (from a new step in the Keyword View or from the Step Generator).2 Adding Objects to Repositories We can add objects to Shared Object Repository or Local Object Repository in a number of different waysWe can decide whether to add only a selected object. We can add objects to the object repository using the Add Objects to Local or Add Objects option. It is possible to add objects to the object repository before they exist in an application. we can merge test objects from the Local Object Repository into a Shared Object Repository. 53 . If needed. We can also add objects to the Local Object Repository while editing our test. We can add objects to the Local Object Repository of the current action by selecting the required object in the Active Screen. or to add all objects of a certain type. We can also add objects to a Shared Object Repository while navigating through the application ("Adding Objects Using the Navigate and Learn Option"). We can modify objects stored in a Local Object Repository using the Object Repository Window and objects in a Shared Object Repository using the Object Repository Manager. so that it is available in all actions that use this Shared Object Repository.

While running a test. Descriptive Programming is also useful to perform the same operation on several objects with certain matching properties e.g. QTP adds the test object to the Object Repository. This is possible with the help of Programmatic descriptions or descriptive programming.QuickTest Professional 9. Suppose in a web site you have to generate a list of all the customer's email addresses. efficiency. Static is easier but Dynamic provides more power. This implies that descriptive programming is very helpful if you want to perform an operation on an object that is not stored in Object Repository. We will see examples of both static and dynamic type of descriptive programming in QTP. We can also instruct QTP to perform methods on objects without referring to the Object Repository. based on the geographical information you provided and then after the email addresses are provided as checkboxes you have to send a rebate letter to them. directly. If you are dynamically creating test objects during the run session then also Descriptive Programming goes a long way to help you. So it’s not a good idea to put these in an Object Repository. So in this case. Only after the object is found in the Object Repository. suppose there are 8 check boxes on a web page with names as chk_1. You don't know how many check boxes will be there based on the geographical information you provided. Descriptive programming can be done in two ways: ● ● Static: We provide the set of properties and values. 54 . QTP can perform methods on those objects. who brought iPhone from you. that describe the object.2 10 Descriptive Programming Whenever you record on any object using QTP. QTP finds the object in the Object Repository and uses the stored test object’s description to identify the object in your application/website. Dynamic: We have to add a collection of properties and values to a description object and then provide the statement with the description object's name. With the help of Descriptive Programming you can Set these check boxes ON or OFF according to your application needs. and flexibility. you can use a Descriptive programming to instruct QTP to perform a Set "ON" method for all objects that fit the description: HTML TAG = input. TYPE = check box. chk_2 and so on.

just for your comparison of the two so that you can better understand both] Example 1a: uses Descriptive Programming We can describe the object directly by specifying property: =value pairs. For this time just read the script and move on. QTP cannot identify the object. So one of the other advantages is you can copy this script and Run this from any other machine (other than on which it was created) and it is supposed to work fine.exe".Run "C:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\flight4a.SetSecure "476a9c021bc5a7422cf5a84ad08503823abcbaae" Dialog("Login"). If you specify a test object by its object repository name after other objects in the hierarchy have been specified using programmatic descriptions.Click window("Title:=Flight Reservation").Type micTab Dialog("Login").QuickTest Professional 9.WinMenu("Menu")."open" Dialog("Login").Exit" Note: When using descriptive programming from a specific point within a test object hierarchy.Click Window("Flight Reservation").close Examle 1b: uses Object Repository SystemUtil.exe" window("Title:=Login").WinEdit("Password:").WinEdit("Agent Name:").WinEdit("Agent Name:").1 Static Descriptive Programming This below example uses Descriptive Programming to open Flight Application and does not use object repository at all. [Example 1b is recorded version (which uses Object Repository)of Example 1a . you must continue to use programmatic descriptions from that point onwards within the same statement."".winbutton("Text:=OK").WinEdit("AttachedText:=Password:").Run "C:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\flight4b. 55 .WinEdit("AttachedText:=Agent Name:")."C:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\". you will better understand it as you read more.Set "sachin" window("Title:=Login").Set "sachin" Dialog("Login").Set "mercury" window("Title:=Login").2 10. SystemUtil.Select "File.WinButton("OK").

exe" var. window("Title:=Login") is being used several times.Set "mercury" .Page("Title:=Mercury Tours"). we do this: Set var = window("Title:=Login") SystemUtil.winbutton("Text:=OK"). since it uses programmatic descriptions for the Browser and Page objects but then attempts to use an object repository name for the WebEdit test object: Browser("Title:=Mercury Tours").close 56 .Set "sachin" . but cannot locate it in the repository because the parent objects were specified using programmatic descriptions.WinEdit("AttachedText:=Password:"). you can use the following statement since it uses programmatic descriptions throughout the entire test object hierarchy: Browser("Title:=Mercury Tours").WinEdit("AttachedText:=Password:").WinEdit("AttachedText:=Agent Name:").2 For example. However.we can assign the object to a variable: In the above Example 1a script.Page("Title:=Mercury Tours").close Or We can use 'With & End With' Statement like below: SystemUtil.Run "C:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\flight4b.Set "Sachin" Above line uses Object Repository for Browser object and Descriptive Programming for Page and WebEdit.QuickTest Professional 9.WinEdit("AttachedText:=Agent Name:"). If same programmatic description is used several times.winbutton("Text:=OK"). Page.Set "mercury" var.Set "Sachin" Above line uses Descriptive Programming for all objects like Browser.Page("Title:=Mercury Tours"). "Index:=3").exe" With window("Title:=Login") . You can also use the statement below.WebEdit("Name:=Author". WebEdit.Click window("Title:=Flight Reservation").Set "Sachin" QTP tries to locate the WebEdit object based on its name. WebEdit("Author").Set "sachin" var. "Index:=3"). you cannot use the following statement.Click End with window("Title:=Flight Reservation").Run "C:\Program Files\Mercury Interactive\QuickTestProfessional\samples\flight\app\flight4b. since it uses programmatic descriptions from a certain point in the description (starting from the Page object description): Browser("Mercury Tours").WebEdit("Name:=Author".

Our example can run without height and width properties."height:=20".winbutton("Text:=OK").WinEdit(myvar ). remove and retrieve properties and values to or from properties objects can be entered during the run time.Run "C:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\flight4b.Create" statement is used.QuickTest Professional 9.value=20 myvar("width").Click window("Title:=Flight Reservation").exe" window("Title:=Login"). Lets take a complete example of this: [Note: Extra values (height & width) are not important in our example.Set "mercury" window("Title:=Login"). Set Myvar = Description.Set "sachin" window("Title:=Login"). returned properties collection.close 57 .WinEdit("AttachedText:=Password:"). We use Description object to return a Properties collection object containing a set of Property Objects. Set myvar= description.Run "C:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\flight4b.Create.value=119 SystemUtil.winbutton("Text:=OK"). can be specified in a statement.WinEdit("AttachedText:=Agent Name:".Set "mercury" window("Title:=Login").Click window("Title:=Flight Reservation").WinEdit("AttachedText:=Password:")."width:=119" ). For creating Properties collection "Description.close Now modifying the above script using Description. statements to add.2 10.Set "sachin" window("Title:=Login"). Then only in place of an object name.Create() Once Property Object (Myvar) is created.value="Agent Name:" myvar("height").2 Dynamic Descriptive Programming Understand it like this – A Property Object is a property name and value.exe" window("Title:=Login").Create() myvar("AttachedText"). edit. I have just added those in order to make you understand this] SystemUtil.

QuickTest Professional 9.2

10.3 Retrieving child objects in Descriptive Programming
There is a ChildObjects method which can be used to get all objects located within a specific parent object or only those that match some criteria for programmatic description. In short we first of all need to create a description and then use a particular syntax to retrieve all child objects that match that description and manipulate them according to our own wish. EXAMPLE: 1. Make sure that Flight Reservation window is open (Start- Programs- QuickTest ProfessionalSample Applications- Flight). In this Flight reservation window go to File- Open Order. 2. We will use this childobjects method to count the checkboxes in this 'Open Order' dialogbox. In the below script childobjects method is being applied to dialog object and childobjects method uses mydescription property object we created. Set mydescription=Description.Create() mydescription("Class Name").value="WinCheckBox" Set Checkboxes = window("text:=FLight Reservation").dialog("text:=Open Order").ChildObjects(mydescription) a=Checkboxes.count msgbox(a) Just try to understand the above code. This is just an example, in real life you can use this count in some kind of loop

58

QuickTest Professional 9.2

10.4 Creating checkpoints
Run-time value of a specified object property can be compared with expected value of that property by using programmatic description. Descriptive programming checks are helpful for the object whose properties you want to check but the object is not stored in Object Repository. EXAMPLE: This example checks if the "Flights.." button in Flight Reservation window is enable or disable. Message box has been used to show whether it is enable or disable, you can use the Report.ReportEvent Statement to send the results to the result window of QTP. For the below script make sure that Flight reservation window is open: a=window("Title:=Flight Reservation").winbutton("Text:=FLIGHT").GetROProperty("enabled") msgbox (a) If a = True Then msgbox ("button is enable") else msgbox ("button is disable") End If In the above script GetROProperty method is being applied to 'Flight..' button to check the 'enable' property of the button. [you can see an object's properties and methods from QTP help. Definitely there are other ways also to get these]. DP is also useful in case of programming WebElement objects (A WebElement is a general web object which can represent any web object.) As an example, just open the website (http://newtours.demoaut.com/) and make sure the cursor is in the “User Name” text box and write the following line in the Expert View of new test: browser("title:=Welcome: Mercury Tours").page("title:=Welcome: Mercury Tours").webelement("name:=password","index:=2").Click It will just click the “Password” text box which just highlights that text box and places the mouse cursor in that box. For all the methods and properties of WebElement object please refer QTP User Guide.

59

QuickTest Professional 9.2

10.5 Using Index Property
Index property is useful to identify a test object uniquely. QTP also, while learning an object, can assign a value to test object’s index property to uniquely identify it. Index property values are specific to an object and also the value is based on the order in which the object appears in the source code. The value starts with 0. If you use Index:=1 with WebEdit test object, QTP will search for the second WebEdit object on a web page. As an example, just open the website (http://newtours.demoaut.com/) and write the following line in the expert view of new test: browser("title:=Welcome: Mercury Tours").page("title:=Welcome: Mercury Tours").WebEdit("Index:=1").Set "hello" This will write “hello” in the “Password” text box. In the above line if you do Index:=0 then “hello” will be written in the “User Name” text box. On the other hand if you use Index:=2 to describe a WebElement object, QTP will search for the third object on the page (it can be any, regardless of type) because WebElement object is general object that applies to all objects.

60

exe") To set the URL in the Browser ‘Declare an object variable Dim IE ‘Creates a browser object Set IE = CreateObject("InternetExplorer.CloseProcessByName("Notepad.Navigate GettheURL To set the repository without configuring resources tab.Run("notepad. ‘Declare an object variable Dim qtApp ‘Creates an object Set qtApp = CreateObject ("QuickTest. use the following code. (This is applicable only for 61 .Settings.Resources ‘Set repository path qtTestResources.Visible = True IE. Task Code To open the application without Invoke Application “<path>” configuring in the Record & Run settings To open & close application 'Open notepad SystemUtil.Application") GettheURL=”URL to open” ‘Set URL in the browser IE.QuickTest Professional 9.2 11 Best Practices These scripts can be reused for all the applications with slight modification relative to project and application needs.Test.Value(“VariableName”)=”SetNewValue” environment variables in the test. These scripts can be used to run the test automatically without Manual Intervention in setting the initial Steps.Application") ‘Create an object for Resources Set qtTestResources= qtApp.exe") 'wait for 3 seconds Wait(3) 'Close the nodepad SystemUtil.ObjectRepositoryPath=”Repository path” To change the values of Environment.

Value("ExternalData") Datatable.) To set and get the test object property values ‘Sets the value of the Search Textbox Browser ("Google").CreateItem(0) run.Page ("Google").Page ("Google").Body = Body Code 62 .WebEdit("q").WebEdit ("q").Application") Status or completion of the test Set Mail = ol. Set Datatable. The following code can be deployed Mail.QuickTest Professional 9."QTP" ‘Gets the value of the Search Textbox Val=Browser("Google").Import(ExternalFilePath) ‘Organisation is the sheet name in the file Datatable.ImportSheet ItemGroupValue.Attachment) a mail to outlook regarding the Set ol = CreateObject("Outlook. SetTOProperty "value".WebEdit("q").Page("Google"). WebEdit("q").Object ‘Access the runtime method focus obj.Subject.WebEdit ("q"). GetTOProperty("value") To get the current value of the test object property Browser ("Google").Subject = Subject Mail.2 Task previously created Environment variables. GetROProperty("value") To access the runtime object properties and methods Set obj=Browser ("Google").to = SendTo Mail.Value("SearchString") ‘Gets the current value of the Search Textbox Val=Browser("Google").focus() To import data to data table ‘ExternalData is an Environment variable containing the path of the file ExternalFilePath=Environment.Page ("Google"). "Organisation"."Global" QTP can be programmed to send Function SendMail(SendTo.Page("Google").Body.

Quit Set Mail = nothing Set ol = nothing End Function SendMail "name@domain.writeline("hello world!") 'close the file new_file.createtextfile("c:\testfile.Attachments. True) 'write to file new_file.filesystemobject") 'create file Set new_file = fso. new_file 'create filesystemobject Set fso = createobject("scripting.txt".QuickTest Professional 9.close 63 .Add(Attachment) End If Mail.2 Task Code If (Attachment <> "") Then Mail.Send ol. Status.com".TestCaseName. Dim fso."Attachment" To create text file.

it will show all of the Built-in functions in Operation Combo box))] If the function is stored in a function library then we have to associate that function library to a test so that the test can call all the public functions listed in that library. Open a new function library file->New->Function library). Advantages of using functions: ● ● ● Time and resources can be saved by implementing and using user-defined reusable functions. If a test is open you can view all the function libraries associated with it. User-defined functions will make your tests look shorter. 2. A user-defined function can then be called from within an action. easier to maintain. Functions directly stored in an action in a test can be call from within that action only making them very private from the outside world. read and design. You are ready to go. A Private function can also be created in a function library and this private function can only be called from within the function library itself in which it is defined.QuickTest Professional 9. or Can be entered manually in the Expert View.2 12 Function Libraries If you have repeatable steps in a test or an action then consider using a user-defined function. Many different function libraries can be opened simultaneously as each opens in its own separate window and you can work on them separately. Add content to it (your function). [It is advisable not to give user-defined functions same name as built-in functions (refer to the Built-in functions list in the Step Generator (Insert > Step Generator. It is easy to create a function library: 1. Creating Functions: Functions can be created manually or by using Function Definition Generator. User-defined functions can be registered as a method for a QTP test object. in theStep Generator dialog box choose Built-in functions from Library Combo box. (Resources->Associated Function Libraries. From the Operation column in the Keyword View. User-defined functions can be stored in a function library or within an action in the test. Functions in an associated function library are accessible: ● ● ● From Step Generator (for tests and function libraries).) You can save function library either from File->Save or right click on function library tab on the 64 . Associate it with a test (File-> Associate Library with Test).

"MySet" RegisterUserFunc "WebEdit". If we use options like Run from step or Debug from step. 65 . so that tests calling your action will not be affected by the method registration. you must add a Reporter. If a function library that is referenced by a test is modified by you or any other user using an external editor. it applies to an entire test object class and it’s not possible to register a method for a specific test object. the second definition causes a syntax error. Include a Dim statement only in the last function library (since function libraries are loaded in the reverse order).ReportEvent statement to the function code. Most important of all: If you register a method within a reusable action. When it is unregistered it is reset to its original QTP functionality e.g.QuickTest Professional 9. if more than one function with the same name exists in the test script or function library.2 top of function library and choose save. "MySet2" UnRegisterUserFunc "WebEdit". QTP will always call the last function because QuickTest searches the test script for the function prior to searching the function libraries. RegisterUserFunc "WebEdit". and not to the functionality defined in the MySet function. the Set method stops using the functionality defined in the MySet2 function. Steps using user-defined functions are not displayed in the test results tree of the Test Results window by default. Always make sure that each function has a unique name. If you need to use more than one variable with the same name in the global scope. it is strongly recommended to unregister the method at the end of the action (and then re-register it at the beginning of the next action if necessary). If there are two associated function libraries that define the same variable in the global scope using a Dim statement or define two constants with the same name. "Set" After running the UnRegisterUserFunc statement. "Set". "Set". you must include it in all the function libraries associated with the test otherwise QuickTest ignores all the Option Explicit statements in all function libraries. to begin running a test from a point after method registration was performed in a test step (and not in a function library). ● ● ● ● ● ● We can re-register the same method with different user-defined functions without first unregistering the method. and returns to the original QuickTest Set functionality. For function to appear in the test results tree. the changes will take effect only after the test is reopened. If you want to use Option Explicit statement in FunctionLibrary. QTP does not recognize the method registration because it occurred earlier to the beginning of the current run session and this all is due to the reason that QTP clears all method registrations at the beginning of each run session. Some important points regarding function libraries: ● When we register a function.

2 Example 1 (Simple example of a Function Library and test) 1. Open a new test. Go to Insert->Function Definition Generator. 2. In expert view of Associated test type: my_sum 1.qfl (by default) or . (Now both new test and function library are open at the same time and we are in function library. Open a new function library. Now it will add the function to your already open Library. var2) sum=var1+var2 msgbox sum End Function 10. In Additional Information area. Save it. In the Arguments area click on ‘+’ and type the name of first argument as ‘var1’ and again click on ‘+’ and type the name of second argument as ‘var2’ and let the Pass Mode be the default which is ‘By Value’. Click on Ok to close that Function Definition Generator window. (Save it by giving any name and extension either . (File-> Associate Library with Test) 12.QuickTest Professional 9. enter the Description as ‘addition function’. Let the ‘Documentation’ be empty. In the Function Definition Generator window. 8. Go to File->New->Test. Associate it. 5. Finally it will look like: '@Description addition function Public Function my_sum(var1.vbs or . 6. Go to File->New->Function library. 4.txt) 11. Now we have to write the function body (where it says TODO:) 9.) 3. 7. 2 66 . type the name of the function as my_sum.

it can be accessed from within the function library itself and cannot be accessed from outside of this function library. 67 . 5. 3. Associate the function library with the test which is open.2 Example 2 (Example using private and public functions in function library) Another example which uses both public and private functions in the function library. Go to File->New->Function library.e. Open a new function library. it will show two message boxes. 1. Open a new test. Save the function library. Write the below two functions in the function library. One of the functions is private i. Private Function my_name_tell(name2) msgbox "Hello " & name2 End Function Public Function my_name(name1) msgbox(name1) my_name_tell(name1) End Function 4. one from the public function and second from the private function.QuickTest Professional 9. 6. 2. When you run it. In the expert view of the test type: my_name("sachin") 7. One of the functions is public which we will access from the test. Go to File->New->Test.

Make sure that we are in Function Library. Finally it looks like this: '@Description my first operation on WinEdit Public Function function_1(test_object. 4. 12. 15. 3.2 Example 3 (Example of registering a function to a test object by creating a new operation) 1. (dot). Let Type and Scope be the default i. After it is copied to the already open library just complete the function body."function_1" 13. 11.e. 14. 10. Check the 'Register to a test object' checkbox. 'By Value'. 8. just select NewOperation from there. as soon as you press . "height:=20").QuickTest Professional 9. ‘Function’ and ‘Public’ respectively. In the ‘Additional information’ area. Click Ok. 6. Open a new test. 68 . From Test Object dropdown select 'WinEdit' and in the Operation dropdown instead of selecting one of the values it already shows there. the list of operations which WinEdit supports are displayed by default (also called IntelliSense). Save the function library. type 'my first operation on WinEdit' in Description text box. 2. just type a new value 'NewOperation' 9.WinEdit("Attached text:=Name:". It copies the whole code it generated in the Preview area to the open library. "NewOperation". Open a Function Library. Go to Insert-> Function Definition Generator. go to File->'Associate Library with Test' to associate this function library with the already open test. 7. 5. var1) ' TODO: add function body here msgbox var1 End Function RegisterUserFunc "WinEdit". After it is associated go the ‘Expert View’ of the test already open and type: Window("title:=Filght Reservation").e. Once it is saved. Click on '+' in the ‘Arguments’ area and type 'var1' under Name to create a new variable and let the Pass Mode be default i. Type the name of the function in the 'Function definition' area (function_1).

But if we do the below steps it surely will show: We will record a simple step in a new action. 6. But here we are not using any Object repository (we are using Descriptive Programming) so we cannot select any object from the Item list as the Object Repository is empty. go to the row which has 'Name' under item.WinEdit("Attached text:=Name:". in the Name text box enter any name. Make sure ‘Flight Reservation’ window is open. Run the test. 8. This NewOperation will be there for every object of class WinEdit. Now insert another new action in this test. but it is not necessary] 17. After selecting NewOperation just supply one argument to it because while creating the function we provided one argument called var1. Make a single click under Operation column in that row (click where it shows Set) it will show a dropdown and you will be able to see NewOperation in that dropdown. In this ‘Keyword View’.NewOperation "merry" [You can open Flight Reservation window for this test. Click on Record. (Insert->Call to New Action) 2.WinEdit("Attached text:=Name:". "height:=20"). It is displayed as an operation in the Keyword View Operation list when that test object is selected from the Item list. Stop recording. 3. It does nothing for the WinEdit object or anything special. This is just a simple example to show how it works. 4. "height:=20"). it will show you NewOperation under the Operation column. Now go to the ‘Keyword View’.2 16. Now if you open any new test and again type Window("title:=Filght Reservation"). In the ‘Flight Reservation’ window. It just displays a message box with the value which we have supplied to it at the time of writing the code. 7. If in this same test you go to ‘Keyword View’.QuickTest Professional 9. 69 . 5. Now QTP will not display NewOperation unless otherwise you associate the library we created earlier to this new test. 1. So the final line of code in the Expert View now looks like: Window("title:=Filght Reservation").

Sign up to vote on this title
UsefulNot useful