Pages

Wednesday, March 9

Recovery Scenarios in QTP

Hello Friends,

In this post, we will look into the Recovery Scenario provided in QTP.

What is Recovery Scenario?

Recovery Scenarios are used to recover the test from unexpected errors and continue with execution.


What is unexpected errors?

Unexpected error or exception is a unpredictable/unexpected error which occurs suddenly during execution of the script. These kind of errors makes your script fail/stop/paused.


Anatomy of Recovery Scenarios?

A recovery scenario in QTP is a 3-steps process:


1. Trigger Event (Pop-up window, Object State, Test run error, App crash)
2. Recovery Operations
3. Post-Recovery Test Run Option


Trigger Event:

The event that interrupts your run session. Recovery scenario manger can handle following four events:

1. Pop-up window: To handle unwanted pop ups.

2. Object state: To handle object related errors at runtime.

3. Test run error: To handle vb script statement errors at runtime.

4. Application crash: To handle crashed applications at runtime.

Recovery Operations:

The operations to perform to enable QTP to continue running the test after the trigger event interrupts the run session. For example, clicking an OK button in a pop-up window.

Post-Recovery Test Run Option:

Post recovery, as the name suggests, is to instruct QTP on how to proceed after the recovery operations have been performed, and from which point in the test QTP should continue. You may want to restart a test from the beginning, or skip current step and continue with the next step in the test. Once you configure above in the recovery scenario manager, recovery scenarios are saved in the form of .qrs file. A recovery scenario file is a logical collection of recovery scenarios, grouped according to our specific requirements.


1. Recovery Scenario for Pop-up Window:

Steps to follow to handle unwanted pop-ups:

Trigger Event steps:

Resources Menu -->Recovery Scenario Manager -->New -->Next -->Select “Popup Window” as Trigger event -->Next -->Click on Hand Icon -->Show unwanted window with Hand icon -->Next -->Next -->(Continue below mentioned steps)

Recovery Operations steps:

Select function call as Recovery Operation -->Next {Open Notepad -->Save empty file with .vbs extension} -->Browse the .vbs fie path -->Next -->Uncheck Add another Recovery Operation -->Next -->(Continue below mentioned steps)

Post-Recovery Test Run Option Steps:

Select Post-Recovery Test Run Option {Repeat current step and continue, Proceed to Next step, Proceed to Next Action, Proceed to next test iteration, Restart current test run, Stop the Test Run} -->Next -->Enter Scenario Name -->Next -->Select Option --> Finish -->Save the scenario with “.qrs” -->Record required Recovery Operation {Click ok, Click Cancel} take the script into function -->Save the library file -->Click Run


2. Recovery Scenario for Object State:

Steps to follow to check Property values of an object in the application match specified values. User can specify property values for each object in the hierarchy.

Trigger Event steps:

Resources Menu --> Recovery Scenario Manager --> New --> Next --> Select “Object state Window” as Trigger event --> Next --> Click on Hand Icon --> Show object with and icon --> Next --> Next-->select object property with value (enabled ,false)-->click next --> (Continue below mentioned steps)

Recovery Operations steps:

Select function call as Recovery Operation --> Next {Open Notepad --> Save empty file with .vbs extension} --> Browse the .vbs fie path --> Next --> Uncheck Add another Recovery Operation --> Next -->(Continue below mentioned steps)

Post-Recovery Test Run Option Steps:

Select Post-Recovery Test Run Option {Repeat current step and continue, Proceed to Next step, Proceed to Next Action, Proceed to next test iteration, Restart current test run, Stop the Test Run} --> Next--> Enter Scenario Name --> Next --> Select Option -->Finish --> Save the scenario with “.qrs” --> Record required Recovery Operation {Click ok, Click Cancel} take the script into function --> Save the library file --> Click Run


3. Recovery Scenario for Test Run Error:

Steps to follow to check if test does not run successfully then Test Run Error can be raised.

Trigger Event steps:

Resources Menu -->Recovery Scenario Manager -->New -->Next -->Select “Testrunerror Window” as Trigger event -->Next -->select any error o -->Next -->Next -->(Continue below mentioned steps)

Recovery Operations steps:

Select function call as Recovery Operation -->Next {Open Notepad -->Save empty file with .vbs extension} -->Browse the .vbs fie path -->Next -->Uncheck Add another Recovery Operation -->Next -->(Continue below mentioned steps)

Post-Recovery Test Run Option Steps:

Select Post-Recovery Test Run Option {Repeat current step and continue, Proceed to Next step, Proceed to Next Action, Proceed to next test iteration, Restart current test run, Stop the Test Run} -->Next >Enter Scenario Name >Next -->Select Option --> Finish >Save the scenario with “.qrs” -->Record required Recovery Operation {Click ok, Click Cancel} take the script into function -->Save the library file -->Click Run

4. Recovery Scenario for Application Crash:

Steps to follow to check application failure during Test Run.

Trigger Event steps:

Resources Menu --> Recovery Scenario Manager--> Click New--> Click Next -->Select Application Crash as Trigger event-->Next -->Select selected executable application-->Next --> (Continue below mentioned steps)

Recovery Operations and Post-Recovery Test Run Option Steps:

Select Recovery Operation {Keyboard, Mouse Operation,Close Application Process, function Call, Restart, Microsoft Windows} -->Next -->If you want to check Add another operation else uncheck-->Next -->Next -->Enter Scenario Name -->Next-->Select Option -->Finish -->Close -->Save the scenario with “.qrs”


Error handling (on error resume next)   vs   Recovery Scenarios ?

If you can predict that a certain event may happen at a specific point in your test or component, it is recommended to handle that event directly within your test or component by adding steps such as If statements or optional steps or "on error resume next", rather than depending on a recovery scenario. Using Recovery Scenarios may result in unusually slow performance of your tests.They are designed to handle a more generic set of unpredictable events which CANNOT be handled pragmatically.

Example:



On error Statements

Following are error statements :

1. On Error Resume Next
2. On Error Go to 0
3. err.number
4. err.description

On Error Resume Next:

On Error Resume Next statement enables the Error handling in the code.If there is error in the code "On error Resume Next" ignores it and continue with next line of code.

On Error Go to 0:

On error got to 0 statement disables error handling we have previously enabled it by using On Error resume Next.

err.number and err.description:

Provides the error number and the description of the error

Monday, March 16

File Handling in QTP - Part 1


Hello Friends!

In this post, we'll see how to handle files using vbscript in QTP.
We'll cover -

  • How to create new file and write data
  • How to open existing file and read data
  • How to open existing file and append data
  • How to delete an existing file

Okie... so lets talk about File System Object (FSO) first. Actually all these things will be done using FSO only!


What is File System Object (FSO)?

File System Object is used to -

1.  creation, manipulation and deletion of text files
2. create, move and Delete folders on hard disk


FSO is the short name for  File System Object.  The FSO Object Model has a rich set of properties, methods and events to process folders and files.

How to create a file?

yeah.. here we go!

Suppose you want to create a file called "myFile.txt" on C:\ drive

Dim objFSO, file_path
file_path = "C:\myFile.txt"

Function CreateFile(file_path)
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set CreateFile = objFSO.CreateTextFile(file_path, True)
End Function

Call CreateFile("C:\myFile.txt")

And it's done! Hunt your C:\ drive.... myFile.txt will be there!

Ggrayyyytt!!

Now, look at this part..

objFSO.CreateTextFile(file_path, True)
objFSO - is an object of type FileSystemObject
CreateTextFile - is a method of FSO
file_path - is the path/location of you file
True - true means - if the file is already there, it will be overwritten.

You can write False also. In that case if file is already there, it'll not be overwritten, and it'll give you following error.




To test this, follow these steps.... n picture'll be clear to you!
  • run the above code
  • open the file and write your name, save and close
  • run the above code again (same)
  • open the file and see- your name will not be there because it's overwritten
  • now change this line in above code and run again.
  • Set CreateFile = objFSO.CreateTextFile(file_path, False
  • this time you will get the error because file is already there and because of False, it will not be overwritten.


Tired?? 

No worries!! In next part of this post, we will reveal all the methods of FSO.

In case of any queries, please post your comments.

Wednesday, September 3

Why use Descriptive Programming (DP) in QTP


Isn't it a very frequently asked question in qtp - "why use DP over object repository"?

Here we will look into few scenarios where Descriptive Programming (DP) is more suitable to use then OR.


Scenario 1. - you need to count how many search result are returned when you search a particular search criteria. For example, you want to see how many
qtp/selenium/agile/java jobs are posted on a job portal in last 2 days! you then want to select all and apply.

Because you dont know in advance how many checkboxs will be there on search result, you cant use object repository.

Using DP (childobject), you can easily handle this scenario.

Scenario 2. - you are working on automation of an application where latest code is not deployed yet. To use OR, you must wait untill application is up and running. But if know the object descriptions, you can continue to create you automation scripts using DP.

Scenario 3. - your application is having 10 pages and every page has 2 same button i.e. "Previous Page" and "Next Page". So if use OR, it will add 2 objects for each page i.e. total 20 object for 10 pages. Instead of having 20 duplicate objects and making our OR unnecessarily 'bulky, we can simply write 2 DP objects.

Scenario 4. - Descriptive Programming is very useful for tricky objects like blotter grids, auto-hiding menus and embeded/nested objects and advanced string manipulations.

Scenario 5. - It might not sound a great example but suppose your qtp server is crashed and you can not open/access qtp OR for a while (1-2 days). If you use OR, you have wait until server is back, but you can continue to work if you use DP (advanced users).

Hope above are enough reasons to answer why to use DP at all!!

Click here to learn descriptive programming.

Please share your scenarios/views on this.