qtp flicks

Download Qtp Flicks

If you can't read please download the document

Upload: ramu-palanki

Post on 27-Jun-2015




2 download

Embed Size (px)


For more QTP Realtime Sripts, visit www.ramupalanki.com


Quick Introduction to QTP 9.2

New to Quick Test Pro 9.2?

Are you new to HP Quick Test Pro 9.2 (QTP)? Say yes and you are at the right place, at the right time. This article is for newbie's who want to start their carrier with QTP or have just started with QTP. The article will give you a brief overview of various features of QTP, and since it is for newbie's we won't be going into too much details of every feature.

What is QTP 9.2?


HP Quick Test Pro 9.2 is a functional automation and regression testing tool QTP provides record and playback of events Uses VBScript as the scripting Language Provides keyword view and expert view to view test cases. Latest versions of QTP is 9.5 (launched in mid Jan 2008) Previous version of QTP: 6.5, 8.0, 8.1, 8.2, 9.0, 9.1 QTP was previously owned by Mercury Interactive







Installing QTP 9.2

You can download a 14 day Trial version from HP site.

QTP 9.5 14 day Evaluation

With introduction of QTP 9.5, Trial version of QTP 9.2 is not available. QTP 9.5 does not have any huge enhancement and hence most of the features discussed in this article will still hold

Launching QTP

When you launch QTP for the first time, Add-in manager window is displayed

What is Add-in?


QTP requires Add-in for recognizing object of a specific environment By default QTP 9.2 comes with 3 Add-ins: Web, ActiveX and VB Some of the Add-ins available for QTP 9.2 are



1. Terminal Emulator (TE) 2. .NET


For more QTP Realtime Sripts, visit www.ramupalanki.com

3. Java 4. SAP 5. Siebel 6. Stingray 7. VisualAge 8. Web Services


QTP does not require any Add-in to work on Standard windows application Add-ins can only be loaded when starting QTP


Once the selected Add-ins are loaded, QTP window will show up

Hit the record button to start recording. If you are recording for the first time, the Record and Run Settings dialog box opens.

What all tabs are shown in above dialog would depend on Add-ins that is loaded. Using above dialog we can set on what all application should QTP record on.

Note: If QTP does not record anything on your application then make sure you have the correct settings specified in Record and Run Settings

Keyword view

The Keyword View enables you to create and view the steps of your test in a keyworddriven, modular, table format. This is the only view where complete Test flow can be viewed.

Expert View

In Expert View, QTP displays each operation performed on the application in the form of a script, comprised of VBScript statements. Complete test flow is not available/visible in this view.

Test and Run-time Object


QTP works on objects in Application Under Test (AUT) by storing object description


This object description is known as a Test Object Each Test Object supports predefined sets of Methods and properties The actual object in the AUT which is identified for a Test Object is called the Run-time object. A Test Object can always be present without the AUT Run-time object can only be present when AUT is up and running






For more QTP Realtime Sripts, visit www.ramupalanki.com

Object Spy

Object Spy is a tool that can be used to spy Test and run time object for looking at properties and methods supported by object being spied

Object Identification

* QTP uses three types of properties when identifying a object

1. Mandatory Always learn these properties for the object 2. Assistive Learn in case Mandatory properties are not enough to identify the object uniquely 3. Ordinal identifiers Learn in case both mandatory and assistive properties are not able to recognize the objects correctly

* Ordinal identifiers are of three types: 1. Index index of object (0, 1, 2 )

2. Location Location of the object on the screen (0, 1, 2 )

3. CreationTime Used only for Browser. Launchtime of browser (0, 1, 2 )

Object Identification Settings

Launch from menu Tools->Object Identification

Here we can Add/Remove properties from/to Mandatory and Assistive properties. Objects in application represent certain special characteristics which allow QTP to map them QTP Test object. For window objects this characteristic is mostly define by "regexpwndclass" . In case application developers don't use standard class names while creating object QTP won't be able to identify the object correctly. Below is a checkbox in Search window recognized by QTP as WinObject By clicking on the "User Defined" button on Object identification settings window, we can add such objects and map. Once added QTP will now be able to recognize the object correctly

Object Hierarchy


For more QTP Realtime Sripts, visit www.ramupalanki.com


QTP uses object hierarchy to identify object inside a AUT QTP only adds those objects from hierarchy which are necessary for it to identify the object later. In this case QTP will add



Browser("Google" ).Page("Google" ).WebEdit( "q").Set "test" (WebTable object ignored) * QTP cannot be configured to record such objects automatically.

Object Repository (OR)


QTP works on object in application by storing information about the object in Object repository All objects on which user takes an action while recording are automatically added to object repository "Browser", "Google", "q" are three different objects that would be present in OR for the below generated statement



Browser("Browser" ).Page("Google" ).WebEdit( "q").set "Test"


Copying and pasting code from one script to another script does not work in QTP as the OR does not get copied to the new script There are two types of Object Repositories in QTP: Shared OR: Can be used by multiple scripts. A central location to store all objects

* 1.

2. Per-Action OR: Every action has its individual object repository

Per-Action Object Repository


Default repository Specific to actions (Will be used only for a particular action) Preferable when application is not dynamic with respect to time Cannot be reused




Shared Action repository


Can be updated by all actions accessing it Preferable when application is dynamic with respect to time Used in most automation projects Needs maintenance and administration





* Provides way of grouping code into business logic


For more QTP Realtime Sripts, visit www.ramupalanki.com


Are pretty similar to Functions in VBScript Have their own Data Table and Object Repository (in case of per-action object repository) Supports input and output parameters Actions are of two types: normal and re-usable Re-usable actions can be called in other Test. QTP does not allow calling another test within a test TestFlow represent the top level action. Complete test flow can only be viewed in Keyword views







Inserting Actions

* There are three ways to insert a Action in a test 1. Insert Call to New

2. Insert Call to Copy 3. Insert Call to Existing

Insert Call to New - Creates a new action and adds a call to the same. Pfrovide the name "Cancel Ticket" in the "Name" field and click on OK button.

* Adds below line to the code

RunAction "Cancel Ticket", oneIteration

Actions - Insert Call to Existing


Insert Call to Existing User to insert call to a re-usable action located within the same test or some other test This inserts the call to the existing action. In case the action in present in some other test case then a read only copy of action is inserted


Actions Insert Call to Copy


Insert Call to Copy - Inserts call to an existing re-usable action and creates an editable copy of that action Actions cannot be deleted from a Test from Expert view. To delete a action one must go to the keyword view and delete the action An action call cannot be inserted directly by writing code in Expert View, it has to be added through the GUI first.




For more QTP Realtime Sripts, visit www.ramupalanki.com

Action Iterations

An action can be run for 1 or more rows from its Local Data Table.


QTP supports there types of iteration modes: 1. Run one iteration only

2. Run on all rows 3. Run from Row to Row


Similar to Action, a test can also be run for multiple iterations from Global Data Table

Why Parameterization?


Parameterization allows us to pick different values at run time. Reduces Time and Effort. Usage of data drivers allows us to use the same data for various input boxes. Parameterization can also be done for checkpoints.




Data Table


Data Table is excel like spreadsheet which can be user for parameterizing a test case

* 1.

DataTable are of two types: Global Data Table Data table for Test flow

2. Local data table Data table for every action

* Data table value can be accessed using the below method a) DataTable(" ",dtGlobalSheet)b) DataTable("" ,dtLocalSheet) c)DataTable( "","")

Run-time Data table


Any changes made to Data table during run-time is stored in run-time data table.


Run-time data table is available in the test results summary of a test DataTable values can be changed at run-time by using below mentioned code:


DataTable("OrderCon f", dtGlobalSheet) = "ABCD1234"

Environment Variables

* Environment variables are global variables available to all Actions


For more QTP Realtime Sripts, visit www.ramupalanki.com


They can be used to run a test case on different environment To add a new Environment variable go to Test -> Settings->Environment (Tab) Environment variables are of two types





2. User-Defined


Built in environment variables give information about the system and the current test


User-defined Environment variables added in the Environment tab of Test Settings are Read-only during the test run Environment variables can be added during runtime also using code


Environment. Value("OrderNumb er") = "ABCDEF" * Environment variables can be loaded at run-time from a XML file using the below code Environment. LoadFromFile "C:\TestEnvironment .xml" The Environment XML file has to be in below format:


APP_URL http://test1. appserver. com



Parameters provide another way of parameterizing the test cases There are two types of parameters: Test parameters

* 1.

2. Action parameters


Test parameters can be set in Test->Settings->Parameters (Tab) Test parameters value can be provided when replaying the test Test arguments can be accessed in the test using TestArgs(" ")



Action Parameters


Used to pass parameters to Action Output parameters can only be used when Action is being called for a single iteration



Ex RunAction "Login", oneIteration, "TestUser", "TestPass", out A parameter can be accessed using


Parameter("ParamNam e " )


* Scripts written in VBScript language can be add as a Resource to the test

For more QTP Realtime Sripts, visit www.ramupalanki.com7/73


All code written in the script is available across all Actions A VBScript can also be loaded in an Action by using ExecuteFile function. Ex ExecuteFile "C:\Init.vbs" In case of multiple files QTP combines all the files into a single one and executes the code. The files are combine in bottom to top order





Checkpoints are verification points in a test Test without checkpoint would never have a pass status Checkpoints can be of 2 types



Built-in checkpoints Custom checkpoints * Types of Built-in checkpoints available are


Standard checkpoints: Verify properties of an object

2. Text checkpoints: Verify text presence between two strings 3. Text Area checkpoint 4. Bitmap checkpoint 5. Accessibility checkpoint

For more QTP Realtime Sripts, visit www.ramupalanki.com6. Database checkpoint 7. XML Checkpoint


Only Database and XML checkpoints can be inserted in idle mode. Rest all checkpoints can only be added during Recording or through Active screens.



Checkpoint code

Browser("Google" ).Page("Google" ).WebEdit( "q").Check CheckPoint(" Verify TextBox_Standard" )

Custom Checkpoints

* Custom checkpoints can be created using Code

loginExist = Browser().Page( ).Link("text: =Login"). Exist(0) If loginExist then Reporter.ReportEven t micPass, "Check Login", "Login link exists" Else Reporter.ReportEven t micFail, "Check Login", "Login link does not exists" End if


* Custom checkpoint can be made flexible based on implementation and are preferred over Built-in checkpoints

Test Results

Test results provide a execution summary of the complete test case * There are different types of status in test results summary: 1. Passed 2. Failed 3. Done 4. Warning 5. Information

Descriptive Programming


Alternate way of writing test cases without having objects in object repository Descriptive programming can be done in two ways



Using object description

2. Using string description

For more QTP Realtime Sripts, visit www.ramupalanki.com* In DP objects are identified by describing all the identification properties String description DP *

Browser("title: =Google") .Page("title: =Google") .WebButton( "name:=Search" ).Click * Object Based DP Set btnSearch = Description. Create : btnSearch("name" ).Value = "Search" Set brwGoogle = Description. Create : brwGoogle("title" ).value = "Google" Set pgGoogle = Description. Create : pgGoogle("title" ).value = "Google" Browser(brwGoogle) .Page(pgGoogle) .WebButton( btnSearch) .Click

* Description objects can also be used to get all child objects matching a criterion. Ex

Set oDesc = Description. Create oDesc("name" ).Value = "txt_.*" oDesc("name" ).RegularExpress ion = True Set allMatchingObjects = Browser().Page( ).ChildObjects( oDesc) Msgbox allMatchingObjects. Count Msgbox allMatchingObjects( 0).GetROProperty ("name")

* By default all property values are considered as regular expression patterns



When using string description all regular expression must be used with escape character for literal meaning. Ex - Link("text:= Logout \ (Piyush\)") .Click


DP based Object repository can be created in any file Code can be copied from one script to another without copying the object repository



Custom implementation of object is easier. Ex

objStrDesc = "Browser(""title: =Test""). Page(""title: =Test""). Link(""text: =Login"") " Execute "Set obj = " & objStrDesc obj.Click

QTP Misc information


QTP and the AUT has to be on the same machine QTP can be controlled remotely from another machine QTP scripts cannot be run without QTP



I)What is the difference between an Action and a function? Action is a thing specific to QTP while functions are a generic thing which is a feature of VB Scripting. Action can have a object repository associated with it while a function can't. A function is just lines of code with some/none parameters and a single return value while an action can have more than one output parameters. Where to use function or action?

For more QTP Realtime Sripts, visit www.ramupalanki.comWell answer depends on the scenario. If you want to use the OR feature then you have to go for Action only. If the functionality is not about any automation script i.e. a function like getting a string between to specific characters, now this is something not specific to QTP and can be done on pure VB Script, so this should be done in a function and not an action. Code specific to QTP can also be put into an function using DP. Decision of using function/action depends on what any one would be comfortable using in a given situation. When to use a Recovery Scenario and when to us on error resume next?Recovery scenarios are used when you cannot predict at what step the error can occur or when you know that error won't occur in your QTP script but could occur in the world outside QTP, again the example would be "out of paper", as this error is caused by printer device driver. "On error resume next" should be used when you know if an error is expected and dont want to raise it, you may want to have different actions depending upon the error that occurred. Use err.number & err.description to get more details about the error.

How to use environment variable? A simple defintion could be it is a variable which can be used across the reusable actions and is not limited to one reusable action. There are two types of environment variables: 1. User-defined


2. Built-in We can retrieve the value of any environment variable. But we can set the value of only user-defined environment variables.

To set the value of a user-defined environment variable: Environment (VariableName) = NewValue

To retrieve the value of a loaded environment variable: CurrValue = Environment (VariableName)

Example The following example creates a new internal user-defined variable named MyVariable with a value of 10, and then retrieves the variable value and stores it in the MyValue variable.

Environment. Value("MyVariable")=10 MyValue=Environment .Value("MyVariable")

II)What are the files and subfolders of a QuickTest Professional test? The files and folders hold binary and text data that are required for the test to run successfully. The following table provides a description, the type, and comments regarding the files that make up a QuickTest Professional test.

For more QTP Realtime Sripts, visit www.ramupalanki.com

File Name Test.tsp Default.xls

Description Test settings Data table parameters

Type Binary Excel similar

Comments Regarding File Do not edit Can be edited using Excel

Parameters.mt Parameterizatio Binary r n information Action folder Action (See other table) Load test Default.cfg configuration file Load test Default.prm configuration file Text Text

Do not edit

Do not edit

Do not edit


Load test Do not Default.usp configuration file Load test Do not .usr configuration file Load test Do not Thick_usr.dat configuration file Load test Do not Thin_usr.dat configuration file Text edit Text edit Text edit Text edit

Files within Action folder:

File Name


Type Text

Comments Regarding File Edit text preceding the @@ sign

Script.mts Resource.mt r Snapshots

Action script


Object Repository Binary Do not edit Active screen files Folder Do not edit

There are few more files extensions like

For more QTP Realtime Sripts, visit www.ramupalanki.com.MTB Batch File .LCK Locked

III) How to rename a checkpoint (QTP 9.0)? Example: Window("Notepad" ).WinEditor( "Edit").Check CheckPoint(" Edit") In the above example, the user would like to change the name of the CheckPoint object from "Edit" to something more meaningful. Note: This functionality is new to QuickTest Professional 9.0.This is not available for QTP 8.2 and below. 1. Right-click on the Checkpoint step in the Keyword View or on the Checkpoint object in Expert View.

2. Select "Checkpoint Properties" from the pop-up menu. 3. In the Name field, enter the new checkpoint name. 4. Click . The name of the checkpoint object will be updated within the script. Example: Window("Notepad" ).WinEditor( "Edit").Check CheckPoint(" NewCheckPointNam e")


Note: You must use the QuickTest Professional user interface to change the name of the checkpoint. If you manually change the name of the checkpoint in the script, QuickTest Professional will generate an error during replay. The error message will be similar to the following:

"The "" CheckPoint object was not found in the Object Repository. Check the Object Repository to confirm that the object exists or to find the correct name for the object."

The CheckPoint object is not a visible object within the object repository, so if you manually modify the name, you may need to recreate the checkpoint to resolve the error.

11) Does QuickTest Professional support Internet Explorer 7.0? QuickTest Professional 9.1 QuickTest Professional 9.1 supports Microsoft Internet Explorer 7.0 Beta 3. Internet Explorer version 7.0 is now certified to work and to be tested with QuickTest Professional version 9.1. QuickTest Professional 9.0 QuickTest Professional 9.0 supports Internet Explorer 7.0 Beta 2. QuickTest Professional 8.2 and below QuickTest Professional 8.2 and below do not include support for Internet Explorer 7.0.

Does QuickTest Professional support Firefox? QuickTest Professional 9.1 and 9.2 QuickTest Professional 9.1 provides replay support for Mozilla Firefox 1.5 and Mozilla Firefox 2.0 Alpha 3 (Alpha-level support for Bon Echo 2.0a3).

For more QTP Realtime Sripts, visit www.ramupalanki.comNotes:

QuickTest Professional 9.1 will not record on FireFox. You can record a test on Microsoft Internet Explorer and run it on any other supported browser, such as FireFox.

The .Object property for web objects is not supported in FireFox.

QuickTest Professional 9.0 QuickTest Professional 9.0 provides replay support for Mozilla FireFox 1.5. Notes:

QuickTest Professional 9.0 will not record on FireFox. You can record a test on Microsoft Internet Explorer and run it on any other supported browser, such as FireFox.

The .Object property for web objects is not supported in FireFox.


QuickTest Professional 8.2 and below

QuickTest Professional 8.2 and below do not have support for Firefox.

12) Problem After Quick Test Professional is started, Windows Media will not start. It returns the error message "wmplayer.exe has generated errors and will be closed by Windows. You will need to restart the program. An error log is being created."

If you start Window's Media Player first, it will continue to work normally after starting QuickTest Professional.


Include the Windows Media Player's executable in the NoBBTApps section of the mic.ini file


Close QuickTest Professional.

2. Go to \bin\mic.ini. 3. Include wmplayer.exe in the NoBBTApps section of mic.ini file.

Example: [NoBBTApps] wmplayer.exe= rek

For more QTP Realtime Sripts, visit www.ramupalanki.com4. Save the mic.ini file and restart QuickTest Professional.

13) What is the lservrc file in QTP?

The lservrc file contains the license codes that have been installed

The lservrc file contains the license codes that have been installed. Whenever a new license is created, the license code is automatically added to this file. The lservrc file is a text file, with no extension.

File Location:

1) For a Concurrent (Floating) license installation:

"#server installation directory#\# language# "


Example: C:\Program Files\XYZ Technologies\ ABC Server\English\ lservrc

2) For a Seat (Stand-alone) license installation:

#AQT/QTP installation directory#\bin"

Example: C:\Program Files\Mercury Interactive\ QuickTest Professional\ Bin\lservrc

14) What to do if you are not able to run QTP from quality center? This is for especially for newbies with QTP. Check that you have selected Allow other mercury products to run tests and components from Tools> Options> Run Tab.

15) Does QuickTest Professional support Macintosh operating systems? No, QTP is not expected to run on this OS.


VBScript String Functions(1)

1.LTrim 2.RTrim 3.Trim 4.Replace

For more QTP Realtime Sripts, visit www.ramupalanki.com5.StrReverse 6.Space

LTrim Function:Removes spaces on the left side of a string. Syntax:LTrim( string) Ex1:a=LTrim( " LAKSHMI ") Msgbox a Output=LAKSHMI .

RTrim Function:Removes spaces on the right side of a string. Syntax:RTrim( string) Ex1:a=RTrim( " LAKSHMI ") Msgbox a Output= LAKSHMI.

Trim Function:Removes spaces on both the left and the right side of a string. Syntax:Trim( string)


Ex1:a=Trim(" LAKSHMI ") Msgbox a Output=LAKSHMI.

Replace Function:Replaces a specified part of a string with another string a specified number of times. Syntax:Replace( expression, find, replacewith[ , start[, count[, compare]]]) where start,count, compare are optional.

expression:String expression containing substring to replace. find:Substring being searched for. replacewith:Replacement substring. start(Optional) :Position within expression where substring search is to begin. If omitted,1 is assumed. count(Optional) :Number of substring substitutions to perform. If omitted, the default value is -1, which means make all possible substitutions.compare(Optional) :Numeric value indicating the kind of comparison to use when evaluating substrings.If omitted,the default value is 0, which means perform a binary comparison.

Ex1:a= Replace("abacadaeaf ","a","x" ) Msgbox a Output=xbxcxdxexf.

Ex2:a=Replace( "abacadaeaf" ,"a","x", 1,3)

For more QTP Realtime Sripts, visit www.ramupalanki.comMsgbox a Output=xbxcxdaeaf.

As we are giving values for start and count parameters(optional )in above example only first 3 a's are replaced by x.

StrReverse Function:Reverses a string. Syntax:StrReverse( string) Ex1:a=StrReverse( "Lakshmi" ) Msgbox a Output=imhskaL.

Space Function:Creates a string with the specified number of spaces. Syntax:Space( number)Ex1:a="Welcome"&space(5)&"All" Msgbox a

Output=Welcome All.


V)QTP reporter objects.

Reporter Object is used for sending information to the test results. With the help of this object you can:

>Report the status of test results (like pass, fail, warning) >Enable/Disable reporting of step(s) following the statement. >Retrieve the folder path in which the current test's results are stored. >Retrieve the run status at the current point of the run session.

There are some very important methods and properties associated with it.

ReporterEvent Method:

I think this is a very common method used with Reporter object. I am sure even if you have worked on QTP for a relatively short period, you would have come across this. Its syntax: Reporter.ReportEven t EventStatus, ReportStepName, Details where EventStatus can be: 0 or micPass: If this step runs test passes which is shown in test report.

1 or micFail: If this step runs test fails which is shown in test report.

For more QTP Realtime Sripts, visit www.ramupalanki.com

2 or micDone: Used to send message to the test report and does not affect status of test.

3 or micWarning: Again, used to send warning message to the test report and does not affect status of test. and

ReportStepName is name of step and Details are the user defined details for the given step. For Example:Reporter.ReportEven t micPass, "Login Authorization" , "The user-defined step passed."

Filter property

I have mentioned this on my other post Some Useful Tips with QTP but would like to mention it again here since I get a lot of questions on this. There can be situations where you don't want the full status displayed on the test report.


This property can be used to selectively filter the status of your tests. Its syntax:Reporter.Filter = NewMode where NewMode can be:

0 or rfEnableAll: This is the default mode. All reported events are displayed in the Test Results.

1 or rfEnableErrorsAndWa rnings: Only those events with a warning or fail status are displayed in the Test Results.

2 or rfEnableErrorsOnly: Only those events with a fail status are displayed in the Test Results.

3 or rfDisableAll: All events in the Test Results are disabled.

ReportPath Property

This is used to get the path in which current test results are stored. Its syntax:

Path_of_Results = Reporter.ReportPath

RunStatus Property

This is used to get the current status of the run session

For more QTP Realtime Sripts, visit www.ramupalanki.comIts syntax: Reporter.RunStatus For Example: if Reporter.RunStatus = 0 then flag=1;

VI)How to make qtp perform better.

Everyone knows we use automated testing tools to optimize our testing process. Unless you make full use of the capability of the tool and unless a tool is used sensibly and with proper planning, it would not yield any results. Just record-and-playback is never the solution for any project. You need to go deep inside to understand the intricacies of any tool. Any software testing tool is only as good as the test engineer using it. On those thoughts, I feel this was one of the best questions asked in the forums of late. Well, here are some of my tips and tricks to optimize the QTP scripts:


Launch QTP using a .vbs file and not the QTP desktop icon. You will notice a substantial increase in speed. [Refer the earlier post on How to open QTP using vbs file? ,you just need the 1st point of that post] For large tests, always define variables, function in an external .vbs file and not inside a reusable action. Attach these files with your test scripts. If you define a variable or a function in an action, on every iteration of your test run, memory(RAM) will be allocated to those variables/functions and would not be released. Now as your script starts consuming more and more RAM, your System Under Test (SUT) will tend to become slower. While running, QTP consumes a lot of memory by itself. It is always advisable to have lots of available RAM( much more than what is recommended by HP) and good processor speed on a system where you intend to install QTP. When you have tests (and hence QTP) running for a prolonged period if time, there are chances of memory leaks. To avoid memory leakage always restart QTP at some intervals of time. Using AOM you can automate this process. [If you want to go into details of effect of RAM on speed of computer read the post on RAM, Memory Usage thoroughly] Avoid using hard coded wait(x) statement. Wait statement waits for full x seconds, even if the event has already occurred. Instead use .sync or exist statement. While using exist statement always have a value inside it.

For ex: .Exist(10) Here QTP will wait max till 10 seconds and if it finds the object at (say) 3 secs , it will resume the execution immediately thereby saving your precious time. On the other hand if you leave the parenthesis blank, QTP would wait for object synchronization timeout you have mentioned under File > Test Settings > Run Tab.

Make full use of what HP-QTP has provided you in the tool IDE. Use "Automatically Generate "With" statements after recording" option present under Tools > Options > General Tab. This will not only make your code look neater but also make your scripts perform better. Make your own judgement whether you want to go for Descriptive Programming or Object Repository or mixed approach. Each approach has it own pros and cons that in turn is related to QTP performance. Unless absolutely required, uncheck the options "Save still image capture to results" and "Save movie to results" present under Tools > Options > Run tab. These options

For more QTP Realtime Sripts, visit www.ramupalanki.comdefinitely have some bearing on QTP run time performance. Make the Run Mode as "fast". This setting is present under Tool > Options > Run tab. Note: If you intend to run your scripts from QC no need to worry about this option, as the scripts WILL run in fast mode whether you want or not.


If you are new to automation or QTP. Read this beginner article on Automation Object Model (AOM). AOM simplifies many aspects of QTP scripting. It can help you in controlling QTP from an external file. Make use of relative paths while calling reusable actions in your script. Using relative path would make your script portable and easy to manage. I will cover in detail how to's and why's of using relative paths in my next post.

VII)How Qtp identifies objects?

Here I am reproducing one of the most important extract from QTP help section. If you understand this part be assured you of your success in QTP Job interviews, other question that follow will be of very elementary nature.

When QuickTest uses the learned description to identify an object, it searches for an object that matches all of the property values in the description. In most cases, this description is the simplest way to identify the object, and, unless the main properties of the object change, this method will work.If QuickTest is unable to find any object that matches the learned object description, or if it finds more than one object that fits the description, then QuickTest ignores the learned description, and uses the Smart Identification mechanism to try to identify the object.

While the Smart Identification mechanism is more complex, it is more flexible. Therefore, if configured logically, a Smart Identification definition can probably help QuickTest identify an object, if it is present, even when the learned description fails. The Smart Identification mechanism uses two types of properties: Base Filter PropertiesThe most fundamental properties of a particular test object class; those whose values cannot be changed without changing the essence of the original object. For example, if a Web link's tag was changed from {A} to any other value, you could no longer call it the same object.

For more QTP Realtime Sripts, visit www.ramupalanki.com Optional Filter PropertiesOther properties that can help identify objects of a particular class. These properties are unlikely to change on a regular basis, but can be ignored if they are no longer applicable.

Understanding the Smart Identification Process If QuickTest activates the Smart Identification mechanism during a run session (because it was unable to identify an object based on its learned description) , it follows the following process to identify the object:

1. QuickTest "forgets" the learned test object description and creates a new object candidate list containing the objects (within the object's parent object) that match all of


the properties defined in the Base Filter Properties list.

2. QuickTest filters out any object in the object candidate list that does not match the first property listed in the Optional Filter Properties list. The remaining objects become the new object candidate list.

3. QuickTest evaluates the new object candidate list: o If the new object candidate list still has more than one object, QuickTest uses the new (smaller) object candidate list to repeat step 2 for the next optional filter property in the list. o If the new object candidate list is empty, QuickTest ignores this optional filter property, returns to the previous object candidate list, and repeats step 2 for the next optional filter property in the list. o If the object candidate list contains exactly one object, then QuickTest concludes that it has identified the object and performs the statement containing the object.

4. QuickTest continues the process described in steps 2 and 3 until it either identifies one object, or runs out of optional filter properties to use. If, after completing the Smart Identification elimination process, QuickTest still cannot identify the object, then QuickTest uses the learned description plus the ordinal identifier to identify the object. If the combined learned description and ordinal identifier are not sufficient to identify the object, then QuickTest stops the run session and displays a Run Error message.

Reviewing Smart Identification Information in the Test Results If the learned description does not enable QuickTest to identify a specified object in a step, and a Smart Identification definition is defined (and enabled) for the object, then QuickTest tries to identify the object using the Smart Identification mechanism. If QuickTest successfully uses Smart Identification to find an object after no object

For more QTP Realtime Sripts, visit www.ramupalanki.commatches the learned description, the Test Results receive a warning status and indicate that the Smart Identification mechanism was used. If the Smart Identification mechanism cannot successfully identify the object, QuickTest uses the learned description plus the ordinal identifier to identify the object. If the object is still not identified, the test or component fails and a normal failed step is displayed in the results.

Walking Through a Smart Identification Example The following example walks you through the object identification process for an object. Suppose you have the following statement in your test or component:Browser("Mercury Tours").Page( "Mercury Tours").Image( "Login"). Click 22,17 When you created your test or component, QuickTest learned the following object


description for the Login image:

However, at some point after you created your test or component, a second login button (for logging into the VIP section of the Web site) was added to the page, so the Web designer changed the original Login button's alt tag to: basic login. The default description for Web Image objects (alt, html tag, image type) works for most images in your site, but it no longer works for the Login image, because that image's alt property no longer matches the learned description. Therefore, when you run your test or component, QuickTest is unable to identify the Login button based on the learned description. However, QuickTest succeeds in identifying the Login button using its Smart Identification definition. The explanation below describes the process that QuickTest uses to find the Login object using Smart Identification: 1. According to the Smart Identification definition for Web image objects, QuickTest learned the values of the following properties when you recorded the click on the Login image:

For more QTP Realtime Sripts, visit www.ramupalanki.com


For more QTP Realtime Sripts, visit www.ramupalanki.com

2. QuickTest begins the Smart Identification process by identifying the five objects on the Mercury Tours page that match the base filter properties definition (html tag = INPUT and image type = Image Button). QuickTest considers these to be the object candidates and begins checking the object candidates against the Optional Filter Properties list.

3. QuickTest checks the alt property of each of the object candidates, but none have the alt value: Login, so QuickTest ignores this property and moves on to the next one.

4. QuickTest checks the name property of each of the object candidates, and finds that two of the objects (both the basic and VIP Login buttons) have the name: login. QuickTest filters out the other three objects from the list, and these two login buttons become the new object candidates.

5. QuickTest checks the file name property of the two remaining object candidates. Only one of them has the file name login.gif, so QuickTest correctly concludes that it has found the Login button and clicks it. Step-by-Step Instructions for Configuring a Smart Identification Definition You use the Smart Identification Properties dialog box, accessible from the Object Identification dialog box, to configure the Smart Identification definition for a test object


For more QTP Realtime Sripts, visit www.ramupalanki.com


To configure Smart Identification properties: 1. Choose Tools > Object Identification. The Object Identification dialog box opens.

2. Select the appropriate environment in the Environment list. The test object classes associated with the selected environment are displayed in the Test object classes list. Note: The environments included in the Environment list are those that correspond to the loaded add-in environments.

3. Select the test object class you want to configure.

4. Click the Configure button next to the Enable Smart Identification check box. The Configure button is enabled only when the Enable Smart Identification option is selected. The Smart Identification Properties dialog box opens:

5. In the Base Filter Properties list, click Add/Remove. The Add/Remove Properties dialog

For more QTP Realtime Sripts, visit www.ramupalanki.com24/73

box for base filter properties opens.

For more QTP Realtime Sripts, visit www.ramupalanki.com6. Select the properties you want to include in the Base Filter Properties list and/or clear the properties you want to remove from the list. Note: You cannot include the same property in both the base and optional property lists. You can specify a new property by clicking New and specifying a valid property name in the displayed dialog box. Tip: You can also add property names to the set of available properties for Web objects using the attribute/ notation. To do this, click New. The New Property dialog box opens. Enter a valid property in the format attribute/ and click OK. The new property is added to the Base Filter Properties list. For example, to add a property called MyColor, enter attribute/MyColor.

7. Click OK to close the Add/Remove Properties dialog box. The updated set of base filter properties is displayed in the Base Filter Properties list.

8. In the Optional Filter Properties list, click Add/Remove. The Add/Remove Properties dialog box for optional filter properties opens.


For more QTP Realtime Sripts, visit www.ramupalanki.com

9. Select the properties you want to include in the Optional Filter Properties list and/or clear the properties you want to remove from the list. Note: You cannot include the same property in both the base and optional property lists. You can specify a new property by clicking New and specifying a valid property name in the displayed dialog box. Tip: You can also add property names to the set of available properties for Web objects using the attribute/ notation. To do this, click New. The New Property dialog box opens. Enter a valid property in the format attribute/ and click OK. The new property is added to the Optional Filter Properties list. For example, to add a property called MyColor, enter attribute/MyColor.

10. Click OK to close the Add/Remove Properties dialog box. The properties are displayed in the Optional Filter Properties list.

11. Use the up and down arrows to set your preferred order for the optional filter properties. When QuickTest uses the Smart Identification mechanism, it checks the remaining object candidates against the optional properties one-


by-one according to the order you set in the Optional Filter Properties list until it filters the object candidates down to one object.

VIII)How to identify broken links in QTP?

Broken Links also sometimes called as dead links are those links on the web which are permanently unavailable. Commonly found, 404 error is one example of such link. Now the question is how can we identify broken links with the help of QTP during the run session? There can be two ways to do this:


Using Automatic Page checkpoint.

2. By manually creating a Page checkpoint.

Using Automatic Page checkpoint: Go to Tools > Options > Web > Advanced and check the two boxes labeled "Create a checkpoint for each page while recording" and "Broken Links"

For more QTP Realtime Sripts, visit www.ramupalanki.com


For more QTP Realtime Sripts, visit www.ramupalanki.com

Now every time you record a new page, QTP will automatically include a checkpoint for broken links. By manually creating a Page checkpoint: QTP does not provide a direct menu option to incorporate a page checkpoint. You need to take the help of standard checkpoint. Start recording session > Insert > Checkpoint > Standard Checkpoint (OR press F12). Place and click the hand pointer anywhere on your web page. Select Page (As shown in picture below) and Click OK.


For more QTP Realtime Sripts, visit www.ramupalanki.com

You will get the following screen:

For more QTP Realtime Sripts, visit www.ramupalanki.com

Check "Broken Link" checkbox down below and click OK.Now, how will you verify page checkpoint and hence broken links?


Run the above script. Go To Test Results > Your Check Point. Check the status of all links under "Broken Links Result" If you want to verify links pointing only to the current host check the box titled "Broken Links- check only links to current host" under Tools > Options > Web. Similarly If you want to verify links pointing to other hosts as well, uncheck it.

For more QTP Realtime Sripts, visit www.ramupalanki.com


XI)Creating MS word document in QTP?

How many of you guys ever thought of creating a MS doc file with the help of QTP. It is in fact quite simple to create one. Let me show you a sample script of creating a very simple document in MS Word.

Dim obj_MSWord Set obj_MSWord = CreateObject( "Word.Application") obj_MSWord.Documents.Add obj_MSWord.Selection.TypeText ("This is a simple text") obj_MSWord.ActiveDo cument.SaveAs "D:\Expert.doc" obj_MSWord.Quit

Now you will try to copy paste this code in your QTP but due to some formatting problems you may not get the proper format. Please take care of the quotes before Word.Application. These should be double quotes else your script wont run.

For more QTP Realtime Sripts, visit www.ramupalanki.comX)QTP file handling?

Many a times you may need to interact with text files using QTP. Interaction can be(but not limited to) in the form of reading input from a file, writing output to a file. This post describe in detail "File handling using QTP". We use FSO object to do this. What is FSO? FSO stands for File System Object. This is used to support text file creation and manipulation through the TextStream object and is contained in the Scripting type library (Scrrun.dll) The FSO Object Model has a rich set of properties, methods and events to process folders and files. How to create a file? We first create a FSO object using CreateObject and then create a text file using


CreateTextFile. For Example: Suppose you want to create a file called "test.txt" located in C:

Dim fso, file, file_location file_location = "C:\file_location"

Set fso = CreateObject("Scripting. FileSystemObject ") Set file = fso.CreateTextFile( file_location, True) // True--> file is to be overwritten if it already exists else false

We would use the same example for the rest of this post.How to open a file? Set file= fso.OpenTextFile( "C:\file_ location" , ForWriting, True) //2nd argument can be ForReading, ForWriting, ForAppending //3rd argument is "True" if new file has to be created if the specified file doesn't exist else false, blank signify false. How to read content from a file? Use ReadLine() method For example: Set file= fso.OpenTextFile( "C:\file_ location" , ForReading, True) //2nd argument should always be "ForReading" in order to read contents from a file Do while file.AtEndofStream True data = file.ReadLine( ) msgbox data Loop How to write content to a file? You can use Write() or WriteLine() Methods to write text into a file. The difference

For more QTP Realtime Sripts, visit www.ramupalanki.combetween the Write() and WriteLine() Method is that the latter automatically inserts a new line character while the former doesn't insert a new line character. For example: Set file= fso.OpenTextFile( "C:\file_ location" , ForWriting, True) //2nd argument should always be "ForWriting" in order to write contents to a file file.Write(" This is a place to get all your qtp") file.Write(" questions and answers solved.") //Output will be: This is a place to get all your qtp questions and answers solved. while file.WriteLine( "This is a place to get all your qtp") file.Write(" questions and answers solved.") //Output will be: This is a place to get all your qtp questions and answers solved.


How to delete content? Use DeleteFile() method to delete a file from a particular location Foe Example: file_location = "C:\file_location" Set fso = CreateObject("Scripting. FileSystemObject ") fso.DeleteFile( file_location)

XI)Guidelines to select an appropriate automation tool?

If your organization is currently using manual means to test your software applications & is believing that it can derive tangible benefits by automating its software testing process, then simply jumping to a conclusion of buying some tool simply because it is popular among many, may not be wise. What should be done now is to take a judicious decision through a scientific process to find out as to which tool will best be suited to your needs. Since this is

For more QTP Realtime Sripts, visit www.ramupalanki.coman capital intensive move aimed at taking your company to the world of Automated Testing, needs careful examination.

When you are shopping for a proper automation tool, you will come across several people ambitiously marketing their products, which may provide solution to variety of automated testing needs. Now the question arises as to whether a particular tool is really suitable to your needs or not. Are you not inclining your choice for a particular tool by making lot many compromises in features. Think that in times to come, your testing needs may become more complicated by the variety of applications coming across for testing & that too under variety of operating systems.

Thus following guidelines shall be helpful in evaluating & zeroing down your choice of an appropriate tool for the job at hand, out of a bunch of many testing tools sold by different vendors.

Guideline 1: Understand your True Requirement


First of all don't look at & form any type of opinion about any XYZ tool available in the market. This is high time for doing deep introspection of your real needs. It is wise to prepare a comprehensive list of your requirements of software testing at the present moment. Identify the time consuming problems, which you want to solve with the new tool. Identify the technical capabilities your prospective tool should have to be compatible with the environment of your application.

Following checklist can be helpful in a judicious compilation of your requirements:

a) List down the Compatibility issues: Remember that the tool selected by you has to be compatible with: # The operating systems supported by your application to be tested

# The development environments under which the application shall be created

# Third party software if any with whom your application needs to be integrated at some stage

b) List down the Users of the Tool # List down the people who will be actually using the prospective tool. Keep the skill levels of the available persons at the back of your mind.


Remember that more powerful tools are bound to be more complex as well. If the skill level of the available manpower (who will be expected to use the prospective tool everyday), does not match the complexity level of the tool, believe me, you are likely to land into many problems in smooth implementation of the tool in your organization.

For more QTP Realtime Sripts, visit www.ramupalanki.com# Think as to whether there is enough time for training your staff within the prevailing time & budgetary constraints, if any.

c) List down the Testing requirements Technical requirements like the following needs to be listed down before zeroing down your choice on a particular automation tool. # Identify the types of your own testing problems you wish that your new tool should solve for you.


Identify the problems faced by you during manual testing.


Identify the time constraints coming across while making minor changes to your system.



Identify the shorter regression testing time frames.


Identify the Test data setup requirements.


Identify the Defect tracking requirements you are aiming at.


Identify the Increased test coverage you are looking for.


Identify the Increase in efficiency of the testing process you are looking for.

Guideline 2: Understand the constraints you have

You need to understand various factors, which may compel you to drop down some of the tools from your initial selection list. Such crucial factors need to be identified during the early stages of your tool selection process.

a) Environmental constraints


Environmental constraints can be either related to hardware or the software itself.


The prospective tool must be able to work on the desired operating systems


The prospective tool must not dictate the terms of having some specialized hardware for its working.

For more QTP Realtime Sripts, visit www.ramupalanki.com# Up-gradation of existing hardware like providing more hard disk / More Ram etc. to cope with the requirements of additional scripts and test data likely to be added.


Consider your likely objections to your new tool running under some specific environment, while the software application might be required to run under different environment or operating system. This issue may gain importance from the consideration of the future use of the new tool.

b) Credentials of the Vendors & their Clientele It is certain that you won't desire to hang on with problems with your new testing tool. Certainly anyone would like to have a quick, competent & professional solution to the tool related problems arising may be occasionally.

Following checklist may come handy in such a situation. # The tool supplier must represent a genuine company.



The tool as a product & its supplying company must be matured enough.


The tool may not be worthwhile at all unless there is enough technical support available.


Find out the clientele of the prospective tool & try to obtain the feedback from such organizations if possible.


Find out the past history of the prospective tool?

c) Understand the Quality related characteristics Following quality related constraints of the prospective tool should be helpful # Identify the skill level required for using the prospective tool


Verify as to whether it is possible to have multiple user access


Identify the support and help documentation required.


Verify as to whether it is possible to integrate the prospective tool with other tools.


Ensure that there should not be any possibility of getting your data corrupted by the tool.


Frequency of failure during realistic use

For more QTP Realtime Sripts, visit www.ramupalanki.com# Identify the budgetary constraints if any. Such financial constraints can restrict your choice of buying a particular tool.

Remember that it is not the question of just purchasing a particular tool by spending some money. In fact it has been seen that in many cases, the cost of fully implementing the tool can be much higher than the cost of the tool itself. Budgetary constraints shall be applicable not only to the tool purchase cost, but shall cover costs of licensing / AMC's, costs of training and cost of tool implementation etc.

We can be in a position to evaluate various tools available in the market after compiling a comprehensive list of our requirements and various constraints.

Guideline 3: Shortlist the most likely suitable tools

This is the stage when an extensive research is needed to identify various types of tools available in the market. WWW can be a good place to explore the tool. Preliminary study of the technical brochure of every tool shall reveal the capabilities of the tool fitting your


requirements & constraints.

We can identify various features of every tool by classifying them like a) Essential features b) Desirable features c) Less relevant features etc.

a) Essential features: are the ones, which are extremely necessary to meet your requirements within the defined constraints.

b) Desirable features: are the ones, which will make a particular tool standout among many of its competitors. Based upon the presence of variety desirable features, your decision can be favor of a particular tool among many more.

c) Irrelevant features: are the ones, which are not of any great significance & may not be able to provide some tangible benefit to you in your present requirements.

Evaluation of the above types of features is the next exhaustive & iterative exercise. At this stage you should evaluate as much number of tools as possible and try to zero down your focus on around 5-6 tools any one of which could qualify to be the final tool fitting your ultimate choice.

The next step in the process should be establishing a contact with the tool suppliers & organizing a practical demonstration. If possible you can ask for an evaluation or trial version of the tool for refining your decision. At this stage you should clearly explain all your requirements of testing along with set of constraints to the tool supplier, who shall be in a better position to clarify many points left out by you during your short-listing process.

Guideline 4: Making a Final Choice

Having gone through the above-defined rigorous process of evaluation, the time has come for you to take a decision in favor of one particular tool, which suits best into your slot

For more QTP Realtime Sripts, visit www.ramupalanki.comof requirements & constraints.

a) Final Comparison of Features: # With the help of all available data now you should be able to draw a clear comparison of the performance related features of the tools as desired by you vis-a-vis features claimed to be present in the technical literature provided by the persons marketing the tool.


This is stage to go on for verification of the credential of the particular tool from the present users by visiting their web sites or making contact through other channels. This shall help you in refining your choice of a particular tool.


b) Practical demonstration at your site: If a particular tool has already caught your attention, you can ask the supplier to organize a live demonstration of the tool under your actual working environment. This way you will be able to judge the technical capability of the supplier as well in providing support later-on.

c) Maintenance of Test Script Proper maintenance of automation scripts & ease of handling them is very important aspect of the tool under evaluation. Although we may not be able to make an on the spot judgement about this capability, but this aspect gets confirmed during the second or third release of testing after implementing the new tool.

d) Final Comparative Trial Now this is the time for conducting same test on one particular application time & again on each & every short-listed tool independently. This way you shall be in a position to make a final decision in favor of a particular tool out of a box of many.

For more QTP Realtime Sripts, visit www.ramupalanki.com

XII) Introduction to Test Automation Framework

Judiciously testing all possible permutations of such components creates a highly complex testing situation with hundreds or thousands of testing scenarios. Under such situations there comes a need for automating the testing process with the help of automation framework approach, which can help in achieving detailed testing with great reduction in testing time.


It can never be a workable idea to automate all the test cases. Hence it is important to scientifically understand the areas which can be automated. Remember that an adhoc approach to test automation can in fact, lead to longer testing time and poor quality irrespective of the name & fame of the testing tool selected by you.

Now let us understand what is `Test Automation Framework'?

Test Automation Framework is a set of assumptions, concepts and practices which provide necessary support for the automated software testing.

The main advantage of such a framework is the low cost for maintenance. If there is change to any test case then only the test case file needs to be updated and the Driver Script and Startup script will remain the same. There's no need to update the scripts in case of changes to the application.

Types of Automation Framework:

1) Modularity driven framework: It requires the creation of small, independent scripts that represent modules, sections, and functions of the application- undertest. These small scripts are then used in a hierarchical fashion to construct larger tests, realizing a particular test case. It applies the principle of abstraction or encapsulation in order to improve the maintainability and scalability of automated test suites.

2) Data driven framework: It involves bunch of several interacting test scripts clubbed with their related data results. In this framework, variables are used for both input values and output verification values: navigation through the program, reading of the data sources, and logging of test status and information are all coded in the test script. It is quite suitable framework for use in RFT using Datapools. This approach reduces coding effort to a great extent in case of large test cases, which otherwise could be quite time-consuming & cumbersome.

For more QTP Realtime Sripts, visit www.ramupalanki.com3) Keyword driven framework: It involves automated tests, which have inherent reusability and therefore ease of maintenance of tests that have been created at a high level of abstraction. It divides test creation into two stages like

a) Planning Stage: Involving analysis of the requirements for the application to determine which operations and objects have to be tested. E.g. an application having web based questionnaire will require a large amount of text entries.

b) Implementation Generally

Stage: It differs according to the tool or framework used.


automation engineers implement a framework that provides keywords like "check" and "enter". Testing engineers (who don't have to know the coding) write the test cases based on the keywords defined in the planning stage that have been implemented by the engineers. The test is executed using a driver who reads the keywords and executes the corresponding code.

Keyword Driven Framework methodology requires more planning and a longer initial timeinvestment than going directly to the test creation stage and recording a test, it does make the test creation and test maintenance stages more efficient and keeps the structure of individual tests more readable and easier to modify.

4) Hybrid framework: Is a combination of three frameworks. This type of frameworks evolve over a passage of time and across multiple projects. It is the most successful automation frameworks, which generally accommodates both Keyword-driven testing as well as Data-driven testing. This allows data driven scripts to take advantage of the powerful libraries and utilities that usually accompany a keyword driven architecture.

In this case, the framework utilities can make the data driven scripts more compact and less prone to failure. The utilities can also facilitate the gradual and manageable conversion of existing scripts to keyword driven scripts as & when required. On the other hand, the framework can use scripts to perform some tasks that might be too difficult to reimplement in a pure keyword driven approach, or where the keyword driven capabilities are not yet in place.

Ten Steps for Test Automation Framework Methodology:

1) Identification of the Scope of Testing: Company oriented, Product oriented, Project Oriented.

2) Identification of the Needs of Testing: Identify Types of testing e.g. FT, Web Services etc. and application / modules to be tested.}

For more QTP Realtime Sripts, visit www.ramupalanki.com3) Identification requirements. of the Requirements of Testing:

Find out the nature of

requirements, identify type of actions for each requirement & identify high priority

4) Evaluation of the Test Automation Tool: Evaluation checklist, Identify the candidate tools available in the market, Sample run, rate & select the tools, Implementation & Training

5) Identification of the Actions to be automated: Actions, Validations & requirements supported by the Tool


6) Design of the Test Automation Framework: Framework guidelines, validations, Actions Involved, Systems involved, Tool Extensibility Support, Customs messages & UML Documentation.

7) Design of the Input Data Bank: Types of Input file. Input files Categorization & Design of file prototypes.

8) Development of the Automation Framework: Development of script based upon framework design, Driver scripts, Worker Scripts, Record / Playback, Screen / Window / Transaction, Action / Keyword & Data Driven.

9) Population of Input Data Bank: Different Types of data Input, Populate data from different data sources, Manual input of data and Parent Child data hierarchy.

10) Configuration of the Schedulers: Identify scheduler requirements & configure the schedulers.

Benefits of Test Automation Framework Approach: Test Automation Framework built with systematic approach yields following benefits:


Ensures consistency Significant reduction in the amount of code to develop & maintain thereby reducing the testing cycle time. Comprehensive coverage against requirements. Use of a "Common Standard" across the organization / Product team / Project team




For more QTP Realtime Sripts, visit www.ramupalanki.com# Maximizes reusability of test scripts ( Utility Functions) Provides a structured for test library having systematic maintenance of automation scripts Data Pooling Protects non-technical testers from the code #





XII)Create a Schedule to Run QTP at a Desired Time

Every Microsoft Windows has a wonderful feature of "Task Scheduler", which can be used for automatically running any application at any desired time, at desired frequency right from a specified date for initial launch. Once scheduling is done, it does not require any user intervention; however the only important thing to remember is that the PC must be kept on at the scheduled time.

This "Task Scheduler" utility is available in Windows "Control Panel" by the name "Scheduled Tasks". Detailed steps are described as under.

1) Say our aim is to automatically run the file by the name QTP_Test.vbs available at the location C:\ExpertQTP\ QTP_Test. vbs

2) Go to Windows "Control Panel" -> "Scheduled Tasks".

3) Click on "Add Scheduled Task" in the "Scheduled Tasks"

4) This will start the "Scheduled Tasks Wizard".

For more QTP Realtime Sripts, visit www.ramupalanki.com5) Click on "Next" - > Browse - > In "Select Program to Schedule" screen Go to the location of the QTP_Test.vbs file available in C:\ExpertQTP folder - > Click "Open" as described in the following picture.

6) In the "Scheduled Tasks Wizard" select the schedule for running the QTP Script. For example Daily, or Weekly or Monthly as per various options offered in the Wizard. In or example select say "Daily". Then Click "Next" as described in the following picture.

7) Select the Time & day you want to start this Script. Then Click "Next" as described in the following picture.

8) Enter the "User Name" & Password for the workstation, just only once as described in the following picture.


This way wizard will not ask the user for his manual intervention of feeding the password every time.

9) Click "Finish"

10) Above mentioned simple steps shall now execute the desired script automatically, every day at 12.59PM starting from 07/13/2008.

XIII)Points to take care before starting QTP and QC?



Always start QTP first then start the application that you want to automate. Try to avoid the Text Checkpoint, GetText function and other similar functions that deal with screen resolution as this may fail your test in the long run.


Test Director/Quality Center with Web Add-In If you are working on Web app along with TD/QC open, you might witness that the app opens up on TD/QC browser itself during playback instead of opening in a separate window. The answer for this is to set the index property for browser.


How to Manage your Files using QTP

Sometimes as a QTP programmer, we may need to keep track about the files inside our Operating system. Apart from tracking our files, we need to manage them dynamically like files can be created, files can be read, files can be edited and deleted. In order to accomplish this task, we require FileSystemObject. It contains methods to carry all

For more QTP Realtime Sripts, visit www.ramupalanki.comadministrative tasks related to files.

Getting access of an already created file

For this, use the below written code.

Set obj=CreateObject( "Scripting. FileSystemObject ") obj.getFile( "D:\testfile. txt")

In order to run this code perfectly fine, the File "testfile.txt" should be present in the D:\ location else QTP will raise an error.

As you can see in the above mentioned code, we have provided the complete path for the file which we also call as Absolute path. Now this code is not of much use unless we do


something more along with it. Like after getting the reference for a file, we can see the size of the file, its parent folder, its name etc.

Check for the existence of an already created file

Sometimes we may be interested in knowing whether our file exists or not. For this, we use "FileExists" method. This checks whether the files exists or not. The "FileExists" method requires a single argument containing the full path of the file. This method returns a boolean value. I hope you guys must be aware of what a boolean value is. Now this method will return a value "True" if the file exists and "False" if the file doesn't exists.

The below mentioned code will explain in detail:

Set testobj = CreateObject( "Scripting. FileSystemObject ") If test.FileExists( "D:\Expert\ MyTestFile. txt") Then Set objFile = testobj.GetFile( "D:\Expert\ MyTestFile. txt") Else MsgBox "The file doesn't exist." End If

Deleting the File

We can delete a file by firstly creating an instance of FileSystemObject and then we need to call the DeleteFile method. Lets see the below mentioned code to explain this concept.

For more QTP Realtime Sripts, visit www.ramupalanki.comSet myobj = CreateObject( "Scripting. FileSystemObject ") myobj.DeleteFile( "D:\MyTestFile. txt")

You can even delete your MS Word file with the above code. Cool na.... I know.

Let me show you something even more interesting. If the file is read-only, then the "DeleteFile" method will not be able to delete the file. So how to delete such a file? Any guesses.

This thing is left for you guys to find it out how we can delete a read only file.

Copy Files

Copying files from one location to another is also a very frequently done task. For this, we use CopyFile method. The syntax for copying files is:


obj.CopyFile "Source-File- Path", "Destination- File-Path"

In order to copy a file from "C:\test.txt" to "D:\test.txt" , we will use the code:

Set obj=CreateObject( "Scripting. FileSystemObject ") obj.CopyFile "C:\test.txt" , "D:\test.txt"

We can even rename a file just by changing the name of the file in the "DestinationFile-Path" .

What happens if we try to copy a copy inside a folder and the folder doesnt exist? This thing is left for you guys to try.

Moving Files

We can also move files from one one location to another[Also known as Cut and Paste]. For this, we require MoveFile method. It is infact quite similar to CopyFile method.

We use the below code to move files from one location to another.

Set obj=CreateObject( "Scripting. FileSystemObject ") obj.MoveFile "C:\test.txt" , "D:\test.txt"

Reading all contents of a file in a single shot

We can read all the contents of a file using the ReadAll method. It captures all the file contents and stores inside a variable.

For more QTP Realtime Sripts, visit www.ramupalanki.comThe following code will help you in reading all contents of a file "D:\test.txt" .

Set obj1= CreateObject( "Scripting. FileSystemObject ") Set obj2= obj1.OpenTextFile( "D:\test. txt") FileContents = obj2.ReadAll 'Read all contents of the file MsgBox FileContents 'Display contents of file obj2.Close 'Close the File

Reading all contents of a file line by line

We can read all the contents of a file line by line. For this we require the ReadLine method. The following code will help you in reading all contents of a file "D:\test.txt" line by line.

Set obj1= CreateObject( "Scripting. FileSystemObject ")


Set obj2= obj1.OpenTextFile( "D:\test. txt") Do Until obj2.AtEndOfStream Line=obj2.ReadLine msgbox Line Loop obj2.Close


All about Recovery Scenarios using QTP

Introduction to Recovery Scenarios:

While executing scripts, we usually encounter unexpected & unpredictable events & errors, which results into application crashing during a run session causing total disruption of the run session and distortion of results. Such problems are quite frequent especially when the tests are made to run unattended. In such a case the test process halts until the user perform some desired recovery operation.

Recovery scenarios are useful when it is difficult to predict at which step the errors can come or when we are confident that the error will not come in the QTP script, whereas it can be anywhere outside the QTP Script. For illustration; Pop-up message of "out of paper", as caused by the printer device driver. "On error resume next" is preferred when we sure that the error is expected one and wish to perform some other actions.

For more QTP Realtime Sripts, visit www.ramupalanki.comIn order to handle such situations QTP comes to our rescue by creating recovery scenarios and associates them with the particular tests. What does a Recovery Scenarios do is to activate a specific recovery operation when a trigger events takes place. Most simple example of a typical unexpected & unpredictable events & errors is like Incompatible Media in portable Drive.

The Recovery Scenario Manager presents a structured wizard which helps us in defining the recovery scenario, like detailed definition of the unexpected event and the operations required to recover from the exception during the run session.

Advantages of Recovery Scenario Manager: Recovery Scenario Manager can be used to handle several known errors occurring at runtime. Following four events available in the


recovery scenario manager are extremely helpful

1) Application Crash: This event is useful in handling crashed applications at runtime.

2) Pop Up Window: This event is useful in managing various unwanted application windows, which get built-up at runtime.

3) Test

Run Error: This event is useful in handling VBScript statement errors at


4) Object State: This event is useful in handling object related errors at runtime.

Elements of Recovery Scenario: Steps to handle the exceptions are:

1) Trigger Event: Is an unexpected event like appearance of a Pop-up window, object state, test run error causing application crash or interruption in our running session.

2) Recovery Steps: Constitutes a series of steps required to be performed to enable QTP to proceed further with the process of test after some trigger event has interrupted the run session. Examples of a recovery operation can be 1) A keyboard or mouse Operation like a Click over the "OK" button in the Pop-up window 2) Close Application Process 3) Function Call 4) Restarting the OS etc.

3) Post-Recovery Test Run: Are a set of instructions designed to be provided to QTP on proceeding further with the test after some recovery operation has been carried out. Examples of Post Recovery actions can be repeating the complete test from the beginning or some steps may be skipped altogether & continuing with the remaining

For more QTP Realtime Sripts, visit www.ramupalanki.comsteps in the test.

QTP & Recovery Scenarios:

All Recovery scenarios get saved & logically grouped in recovery scenario files. Grouping of various recovery scenarios in recovery scenario file can be managed according the user requirements. Recovery scenario files carry a typical extension of .rs.

In order to instruct QTP to carry out a recovery scenario during a particular test run, we firstly associate it with the particular test. There is no limitation to any fixed number of recovery scenarios associated with a test. Order of execution of various recovery scenarios associated with a test can easily be prioritized, thereby the trigger events get recognized and handled in the desired sequence.

Whenever any error comes during the execution of a test having many recovery scenarios


associated with it; QTP intelligently hunts for the defined trigger event which had caused the particular error. After detecting the trigger event, QTP automatically performs the desired recovery steps and post-recovery test runs etc.

Recovery statements can be inserted in the tests to comfortably control and activate the recovery scenarios during the test run.

Cons of Recovery Scenarios:

Although Recovery Scenarios are users friendly on one hand; they tend to slow down the speed of the Test Run. Presence of a few such recovery scenarios would reduce the speed of Test Run significantly. This can become irritant to the testers, who can prefer the approach of using VBScript On Error/Goto 0 far more useful for catching & handling small errors.


How to Record Right Mouse Clicks using QTP

For recording the right mouse clicks in QTP, we need to manually modify the configuration file and then load it.

This is a great article extracted from QTP Help Guide, which leads us through important steps to configure QTP to record our Right Mouse Clicks.

For more QTP Realtime Sripts, visit www.ramupalanki.comStep 1: Choose Tools > Web Event Recording Configuration. The Web Event Recording Configuration dialog box opens.

Step 2: Click the Custom Settings button. The Custom Web Event Recording Configuration dialog box opens.

Step 3: In the Custom Web Event Recording Configuration dialog box, choose File > Save Configuration As. The Save As dialog box opens.

Step 4: Navigate to the folder in which you want to save the web event recording configuration file, and enter a configuration file name. The extension for configuration files is .xml.


Step 5: Click Save to save the file and close the dialog box.

Step 6: Open the saved configuration file for editing in any text editor. The configuration file uses a defined structure.

The beginning of the file, which is relevant for Web objects, is shown below.

The Property Name argument controls the recording of the mouse buttons. The value of the mouse buttons are defined as follows: 1Left 2 Right 4 Middle

Step 7: Edit the file as follows: To record a left mouse click for the onmouseup event, add the following line:

To record right and left mouse clicks for the onmousedown event, add the following lines:

Note: Only one event, either onmouseup or onmousedown, should be used to handle mouse clicks. If both events are used, QTP will record two clicks instead of one. By default,

For more QTP Realtime Sripts, visit www.ramupalanki.comQTP listens for the onmouseup event.

Step 8: Save the file.

Step 9: In the Custom Web Event Recording Configuration dialog box, choose File > Load Configuration. The Open dialog box opens.

Step 10: Navigate to the folder in which you saved the edited configuration file, select the file, and click Open. The Custom Web Recording Configuration dialog box reopens.

Step 11: Click OK. The new configuration is loaded, with all preferences corresponding to those you defined in the XML configuration file. Any Web objects you now record will be recorded according to these new settings.

XVII) Exploit the Power of MS Excel through QTP


The objective of this article is to briefly understand the process of interaction of MS Excel and VBScripts.

For automating an application a framework is created in the beginning. This requires an independent structure for reporting and data. Microsoft Excel plays a very important role in this framework approach.

We can easily use the built-in mechanism of QTP through which we can display the test results in a predefined format. A result sheet gets generated after the execution of the test in QTP; which provides an in-depth view of the script through which we can know the various point of failures, warnings and the passes.

In the test script we create customize various checkpoints at our will. Likewise the result file can also be customized based upon the checkpoints already created according to the defined criterion of Pass / Fail.

Generally while working in MS Excel, the user desires to generate a detailed report of the entire test. The idea of generating such detailed / customized report is to have the output in a format as per our own choice and to preserve the file in a centralized location.

The entire process can be performed in following basic steps:

Step-1: Understanding the hierarchy of MS Excel Application. Step-2: Creation of the desired Object in MS Excel

Step-3: Creation of a new MS Excel workbook or opening an existing one. Step-4: Setting the objects for various sheets in the workbook. Step-5: Writing and fetching the data values in the cells.

For more QTP Realtime Sripts, visit www.ramupalanki.comStep-6: Saving and closing of the workbook

Step-7: Closing the application and clearing the memory

The above steps can be explained through suitable illustrations to understand the approach properly.

Understanding the hierarchy of Excel Application


It is believed that the user is fairly acquainted with the basics of MS Excel like:

1) What is MS Excel Application

2) What are Workbooks in Excel

3) What are Sheets in Excel

4) What are Cells in Excel

Hence I am skipping the basic explanation of the above basics of MS Excel & directly moving on to the main content of our topic.

Some of the simple VBScripts are being described below for performing various actions in MS Excel.

Creation of an Object in Excel:

In the process of reporting it is the first step. In MS Excel the reporting can be done in two ways like 1) in the background wherein the application shall not be visible 2) the application can be made visible to the user once the process of writing or fetching the data is going on.

However in both the above mentioned methodologies we need to create objects in Excel Application for example:

Dim xl

For more QTP Realtime Sripts, visit www.ramupalanki.comSet xl = CreateObject( "Excel.Applicati on")

When we run the above script, we can see a process named "Excel.exe" in the Windows task Manager.

Creating a new workbook or Opening an existing one:

After creation of the object in Excel, it implies that Excel application has been invoked, however it is not visible. From now on we can either continue to perform the operations in the invisible back ground alternatively we can make the application visible and then we can perform the operations.

To make the application visible: xl.visible = true


To open a new Workbook: xl.workbooks. Add

To open an existing Workbook:

xl.workbooks. Open("File Name with complete path")

Setting and accessing the objects of sheets in workbook:

After opening a workbook in Excel (A New one or opening an existing one), next activity is to feed some data in various cells in various sheets of our workbook.

MS Excel provides three sheets in a workbook by default, which are available to us for performing various operations. To access these sheets with great ease, we need to create objects referencing these sheets. This will help us in avoiding describing complete hierarchy time & again.

For example we wish to create a reference for a sheet with an index i, beginning from 1:

Set sht1 = xl.activeworkbook. sheets(i)

We can easily add or delete the desired sheets from the active workbook

To add a sheet in the workbook: xl.activeworkbook. sheets.add

For more QTP Realtime Sripts, visit www.ramupalanki.comTo delete a particular sheet: ( where i represents the index which begins from 1) xl.activeworkbook. sheets(i) .delete

To change the name of the sheet:

xl.activeworkbook. sheets(i) .name = "Name of your choice"

To count total number of sheets in a workbook:

Countnt = xl.activeworkbook. sheets.count

Writing and fetching the data values in the cells:

To write the data in Excel sheet, we need to identify the Cell ID of the cell where the data is needed to be written. Similarly for accessing the data value from particular cells, we must know their Cell ID.

For an example we want to write some data in sheet2 cell ID as D8, the command can be


written as under. Here "D" represents the Column Number & "8" represents the Row Number.

For more QTP Realtime Sripts, visit www.ramupalanki.comxl.activeworkbook. sheets(2) .cells(8, 4) = "hello"

To fetch the data from sheet3 cell ID A7:

Val = xl.activeworkbook. sheets(3) .cells(7, 1)

If an object has already been created in a particular sheet, we don't have to repeat the complete hierarchy again, instead we can simply write: Object.cells( row,col) = value

Saving and closing a workbook:

After finishing the work we can save the workbook to a desired location with a different name or save the changes made to an already existing open workbook.

To save the new workbook under a new name:

xl.activeworkbook. saveas "path_with_file_ name.xls"

To save the changes made in an existing workbook: xl.activeworkbook. save

To close a workbook:

xl.activeworkbook. close


Closing an application and clearing the memory:

To close the application: xl.quit

To clear the memory from all objects:

Set xl = nothing

This is not the end; however it is just a beginning for us to explore the power of QTP in exploiting the potential of MS Excel through simple VBScripts.

XVIII) Smart Identification: A Fantastic Feature of QTP

QTP has a unique feature by the name Smart Object Identification or recognition which is used for identifying the objects smartly, whenever the normal identification fails due to the dynamic changes in the properties of the objects.

Smart Identification is nothing but an algorithm used by the QTP when it is not able to recognize an object. A simple generic example as per the QTP manual would be, A photograph of a 8 year old girl and boy and QTP records identification properties of that girl when she was 8, now when both are 10 years old then QTP would not be able to recognize the girl. But there is something that is still the same, that is there is only one girl in the photograph. So a kind of PI - Programmed intelligence is needed instead of AI.

Object identification is necessary to recognize the GUI objects on the screen. During automatic recording of a script, the object identifie