Sunday 23 September 2012

Qtp interview Q & A

1. What are the features and benefits of Quick Test Pro(QTP)?
1. Key word driven testing
2. Suitable for both client server and web based application
3. VB script as the script language
4. Better error handling mechanism
5. Excellent data driven testing features
2. How to handle the exceptions using recovery scenario manager in QTP?
You can instruct QTP to recover unexpected events or errors that occurred in your testing environment during test run. Recovery scenario manager provides a wizard that guides you through the defining recovery scenario. Recovery scenario has three steps
1. Triggered Events
2. Recovery steps
3. Post Recovery Test-Run
3. What is the use of Text output value in QTP?
Output values enable to view the values that the application talks during run time. When parameterized, the values change for each iteration. Thus by creating output values, we can capture the values that the application takes for each run and output them to the data table.
4. How to use the Object spy in QTP 8.0 version?
There are two ways to Spy the objects in QTP
1) Thru file toolbar: In the File ToolBar click on the last toolbar button (an icon showing a person with hat).
2) Thru Object repository Dialog: In Objectrepository dialog click on the button “object spy…” In the Object spy Dialog click on the button showing hand symbol. The pointer now changes in to a hand symbol and we have to point out the object to spy the state of the object. If at all the object is not visible or window is minimized then hold the Ctrl button and activate the required window to and release the Ctrl button.
5. What is the file extension of the code file and object repository file in QTP?
File extension of
Per test object rep: filename.mtr
Shared Object rep: filename.tsr
Code file extension id: script.mts
6. Explain the concept of object repository and how QTP recognizes objects?
Object Repository: displays a tree of all objects in the current component or in the current action or entire test( depending on the object repository mode you selected).
we can view or modify the test object description of any test object in the repository or to add new objects to the repository.
Quicktest learns the default property values and determines in which test object class it fits. If it is not enough it adds assistive properties, one by one to the description until it has compiled the unique description. If no assistive properties are available, then it adds a special Ordianl identifier such as objects location on the page or in the source code.
7. What are the properties you would use for identifying a browser and page when using descriptive programming?
“name” would be another property apart from “title” that we can use. OR
We can also use the property “micClass”.
ex: Browser(“micClass:=browser”).page(“micClass:=page”)
8. What are the different scripting languages you could use when working with QTP?
You can write scripts using following languages:
Visual Basic (VB), XML, JavaScript, Java, HTML
9. Tell some commonly used Excel VBA functions.
Common functions are:
Coloring the cell, Auto fit cell, setting navigation from link in one cell to other saving
10. Explain the keyword createobject with an example.
Creates and returns a reference to an Automation object
syntax: CreateObject(servername.typename [, location])
Arguments
servername:Required. The name of the application providing the object.
typename : Required. The type or class of the object to create.
location : Optional. The name of the network server where the object is to be created.
11. Explain in brief about the QTP Automation Object Model.
Essentially all configuration and run functionality provided via the QuickTest interface is in some way represented in the QuickTest automation object model via objects, methods, and properties. Although a one-on-one comparison cannot always be made, most dialog boxes in QuickTest have a corresponding automation object, most options in dialog boxes can be set and/or retrieved using the corresponding object property, and most menu commands and other operations have corresponding automation methods. You can use the objects, methods, and properties exposed by the QuickTest automation object model, along with standard programming elements such as loops and conditional statements to design your program.
12. How to handle dynamic objects in QTP?
QTP has a unique feature called Smart Object Identification/recognition. QTP generally identifies an object by matching its test object and run time object properties. QTP may fail to recognize the dynamic objects whose properties change during run time. Hence it has an option of enabling Smart Identification, wherein it can identify the objects even if their properties changes during run time.
Check out this:
If QuickTest is unable to find any object that matches the recorded object description, or if it finds more than one objectification mechanism to try to identify the object.
While the Smart Idet that fits the description, then QuickTest ignores the recorded description, and uses the Smart Idenntification mechanism is more complex, it is more flexible, and thus, if configured logically, a Smart Identification definition can probably help QuickTest identify an object, if it is present, even when the recorded description fails.
The Smart Identification mechanism uses two types of properties:
Base filter properties – The most fundamental properties of a particular test object class; those whose values cannot be changed without changing the essence of the original object. For example, if a Web link’s tag was changed from to any other value, you could no longer call it the same object. Optional filter properties – Other properties that can help identify objects of a particular class as they are unlikely to change on a regular basis, but which can be ignored if they are no longer applicable.
13. What is a Run-Time Data Table? Where can I find and view this table?
In QTP, there is data table used, which is used at runtime.
-In QTP, select the option View->Data table.
-This is basically an excel file, which is stored in the folder of the test created, its name is Default.xls by default.
14. How does Parameterization and Data-Driving relate to each other in QTP?
To data driven we have to parameterize. i.e. we have to make the constant value as parameter, so that in each interaction(cycle) it takes a value that is supplied in run-time data table. Through parameterization only we can drive a transaction (action) with different sets of data. You know running the script with the same set of data several times is not suggested, and it’s also of no use.
15. What is the difference between Call to Action and Copy Action.?
Call to Action: The changes made in Call to Action, will be reflected in the original action (from where the script is called). But where as in Copy Action , the changes made in the script ,will not effect the original script(Action)
16. Explain the concept of how QTP identifies object.
During recording qtp looks at the object and stores it as test object. For each test object QT learns a set of default properties called mandatory properties, and look at the rest of the objects to check whether this properties are enough to uniquely identify the object. During test run, QTP searches for the run time objects that matches with the test object it learned while recording.
17. Differentiate the two Object Repository Types of QTP.
Object repository is used to store all the objects in the application being tested.
Types of object repository: Per action and shared repository.
In shared repository only one centralized repository for all the tests. where as in per action for each test a separate per action repository is created.
18. What the differences are and best practical application of Object Repository?
Per Action: For Each Action, one Object Repository is created.
Shared: One Object Repository is used by entire application
19. Explain what the difference between Shared Repository and Per Action Repository
Shared Repository: Entire application uses one Object Repository , that similar to Global GUI Map file in WinRunner
Per Action: For each Action, one Object Repository is created, like GUI map file per test in WinRunner
20. Have you ever written a compiled module? If yes tell me about some of the functions that you wrote.
Sample answer (You can tell about modules you worked on. If your answer is Yes then You should expect more questions and should be able to explain those modules in later questions): I Used the functions for Capturing the dynamic data during runtime. Function used for Capturing Desktop, browser and pages.
21. Can you do more than just capture and playback?
Sample answer (Say Yes only if you worked on): I have done Dynamically capturing the objects during runtime in which no recording, no playback and no use of repository is done AT ALL.
-It was done by the windows scripting using the DOM(Document Object Model) of the windows.
22. How to do the scripting. Are there any inbuilt functions in QTP? What is the difference between them? How to handle script issues?
Yes, there’s an in-built functionality called “Step Generator” in Insert->Step->Step Generator -F7, which will generate the scripts as you enter the appropriate steps.
23. What is the difference between check point and output value?
An output value is a value captured during the test run and entered in the run-time but to a specified location.
EX:-Location in Data Table[Global sheet / local sheet]
24. How many types of Actions are there in QTP?
There are three kinds of actions:
Non-reusable action – An action that can be called only in the test with which it is stored, and can be called only once.
Reusable action – An action that can be called multiple times by the test with which it is stored (the local test) as well as by other tests.
External action – A reusable action stored with another test. External actions are read-only in the calling test, but you can choose to use a local, editable copy of the Data Table information for the external action.
25. I want to open a Notepad window without recording a test and I do not want to use System utility Run command as well. How do I do this?
You can still make the notepad open without using the record or System utility script, just by mentioning the path of the notepad “( i.e. where the notepad.exe is stored in the system) in the “Windows Applications Tab” of the “Record and Run Settings window.

Friday 21 September 2012

Actions

Actions
Action: Set of Statements for perfoming a Task(s)
We divide our test into actions to streamline the process of testing.

Purpose of Actions:

For understandability

For reusing components

Types of Actions:

1) Non Re usable actions
2) Re usable actions
3) External actions

Operations on Actions:

• Creating Actions

• Splitting Actions

• Renaming Actions

• Deleting Actions

• Calling an Action

• Copying an Action

• Making an Action Reusable/Non Reusable

Creating an Action:
Insert>call to new action>enter name of the action>click ok
Steps:

1. Create required actions(ex login, insert,delte)
2. Prepare Scripts for those actions.

Splitting an action:

Navigation: Place cursor in desired location>Edit menu>action>split action>Enter Action 1 name & action 2 name.

Steps:

1. Generate total test in the default action
2. Split into meaningful actions.

Note: At a time we can split one actions into 2 actions.

Renaming actions:
Select desired action in action drop down box> edit menu>action>rename action>modify the name>click ok.

Deleting Actions:
Select desired action in action drop down box>edit menu>action>delete action>confirm deletion.

Calling an action:
Insert>call to existing action>browse path of the test>select desired action>click ok.

Note: U can’t edit

Copying an action:
Insert>call to copy of action>browse path of the test>select desired action>click ok.

Note: we can edit this action.

Making an action reusable:
Select Non Reusable action >edit >action>action properties>check reusable action check box >click ok.
VB Script String Functions
String Functions 
1) Left Function

Returns a specified number of charectors of a given string from left side

Syntax:

variable=Left(string,Lengh)

Example:

Dim val,x
val="Hyderabad"
x=Left(val,3)
msgbox x ' Output: Hyd


val="9247837478"
x=Left(val,1)
msgbox x ' Output: 9


val="H92yderabad"
x=Left(val,3)
msgbox x ' Output: H92


x=Left(9247837478,5)
msgbox x ' Output: 92478

val=#10-10-10#
x=Left(val,3)
msgbox x ' Output: 10/

2) Right Function

Returns a specified number of charectors of a given string from Right side

Example:

Dim val,x
val="Hyderabad"
x=Right(val,3)
msgbox x ' Output: bad


val="9247837478"
x=Right(val,1)
msgbox x ' Output: 8


val="H92yderabad"
x=Right(val,3)
msgbox x ' Output: bad


x=Right(9247837478,5)
msgbox x ' Output: 37478

val=#10-10-10#
x=Right(val,5)
msgbox x ' Output: /2010

3) Mid function

Returns a specified number of charectors of a given string

Example:

Dim val,x
val="Hyderabad"
x=Mid(Val,5,3)
msgbox x ' Output: rab

val="Hyderabad"
x=Mid(Val,5)
msgbox x ' Output: rabad

val="9247837478"
x=Mid(val,6,5)
msgbox x ' Output: 37478


val="H92yderabad"
x=Mid(val,1)
msgbox x ' Output: H92yderabad


x=Mid(9247837478,5)
msgbox x ' Output: 837478

val=#10-10-10#
x=Mid(val,5)
msgbox x ' Output: 0/2010

4) StrReverse

retuns reverse value of a string

Example:

Dim val,x
val="Hyderabad"
x=StrReverse(val)
msgbox x 'Output dabaredyH

val="001"
x=StrReverse(val)
msgbox x 'Output: 100

val=1002
x=StrReverse(val)
msgbox x 'Output: 2001

val=#10-10-10#
x=StrReverse(val)
msgbox x 'Output: 0102/01/01

x=StrReverse("Hyderabad")
msgbox x 'Output: dabaredyH

x=StrReverse(100)
msgbox x 'Output: 001

5) StrComp Function


It compares two string (Binary and textual)

if

a) Both are equal, returns 0(zero)

b) String 1 greater than string 2, returns 1(one)

b) String 2 greater than string 1, returns -1

Example:

Dim str1,str2,x
str1="India"
str2="India"
x=StrComp(str1,str2,1)
msgbox x 'Output 0

str1="india"
str2="INDIA"
x=StrComp(str1,str2,1)
msgbox x 'Output 0

str1="India"
str2="Indian"
x=StrComp(str1,str2,1)
msgbox x 'Output -1

str1="Indian"
str2="Ndia"
x=StrComp(str1,str2,1)
msgbox x 'Output -1

str1="Indian"
str2="India"
x=StrComp(str1,str2,1)
msgbox x 'Output 1

str1=100
str2=100
x=StrComp(str1,str2,1)
msgbox x 'Output 0

str1=100
str2=101
x=StrComp(str1,str2,1)
msgbox x 'Output -1

6) Lcase function

Coverts Upper case values into Lower case

Dim val,x
val="HYDERABAD"
x=Lcase(val)
msgbox x 'Output hyderabad

val="Hyderabad"
x=Lcase(val)
msgbox x 'Output hyderabad

val="HederabaD"
x=Lcase(val)
msgbox x 'Output hyderabad

val="hyderabad"
x=Lcase(val)
msgbox x 'Output hyderabad

x=Lcase("HYDERABAD")
msgbox x 'Output hyderabad


7) Ucase function

Coverts Lower case values into Upper case

Example:

Dim val,x
val="HYDERABAD"
x=Ucase(val)
msgbox x 'Output HYDERABAD

val="Hyderabad"
x=Ucase(val)
msgbox x 'Output HYDERABAD

val="HederabaD"
x=Ucase(val)
msgbox x 'Output HYDERABAD

val="hyderabad"
x=Ucase(val)
msgbox x 'Output HYDERABAD

x=Ucase("HYDERABAD")
msgbox x 'Output HYDERABAD

8) LBound, UBound Functions


Example:


Dim x(3), y(4,5)
Msgbox Lbound(x) '0
Msgbox UBound(x)'3
'Find size of the Array
Msgbox UBound(x)+1
Msgbox Lbound(y,1) '0
Msgbox Lbound(y,2) '0
Msgbox UBound(y,1) '4
Msgbox UBound(y,2) '5

Analyzing Test Results & Reporting



Analyzing Test Results & Reporting

Analyzing the Test Result is not a responsibility of QTP. After Running Tests, User (Test Engineer) has to analyze the test result. and send defect reports.

QTP Result Window:

After Running/Executing a test, then QTP Provide result window. we export test result from result window in Document (.Doc), HTML, XML and PDF formats.

Note: QTP doen't provide batch wise test result, if we execute test batches. It provides test wise result only.

Status of the Result:

QTP has 4 types of result status

a) Pass
b) Fail
c) Done
d) Warning
Defining our own Result:
Generally QTP provides, test results, if we use qtp tool features like checkpoints. suppose if we use flow control statements (conditional and Loop statements), then we have to define our own result.

For defining our own results, QTP is providing an utility object called "Reporter"

by using reporter, we can define our own results.

Syntax:

Reporter.ReportEvent status of the Result,"Result Step","message"

Example"

Reporter.ReportEvent micPass,"Res","Login operation Successful"

exaplanation:

Reporter- Utility object
ReportEvent-Method
micPass-Status of the Result.
Res-Result step
"Login operation Successful"- Message

Status of the Result:

1) Pass -micPass or 0

2) Fail  -micPass or 1

3) Done- micDone or 2

4) Warning- micDone or 3
Reporting Defects
QTP is an Object based Test tool. We can create and execute tests using QTP. QTP Provides, various methods for crating and enhancing Tests.

After Running Tests, QTP provides result in Result window and also provides a facility to define our own Results. Result Exporting facility also available in QTP Result window.

Any how Analyzing Results is the Responsibility of Test Engineer after running tests.

After analyzing results, we can report defects in various methods.

If we are using QTP for Functional Test Automation and Defect management manual, then entering defect details in company prescribed format and sending.

If we are using Bugzilla or Zera or PR-Tracker like Bug Tracking tool, then after analyzing results, if we find any mismatches sending defects through the Bug tracking tool (Every Bug Tracking tool has its own defect report template)

If we are using Quality center for Test management, then we can send defects directly from QTP result window. In between QTP and Quality Center back to back integration is available.

Transaction Points



Inserting Transaction Points

QTP is providing a Utility object called Services for measuring transaction time
Suppose, we want to measure how much time that one test or part of the test is taking for execution/running, we can measure using these transaction point (Start and End) 

Syntax:

Services.StartTransaction “Transaction Name”
Statements
-------
------
Services.EndTransaction “Transaction Name”

Note: these options (Start and End Transactions) available in QTP tool Insert menu

Example:

services.StartTransaction "Login"
SystemUtil.Run "C:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\flight4a.exe","","C:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\","open"
Dialog("Login").Activate
Dialog("Login").WinEdit("Agent Name:").Set "naga"
Dialog("Login").WinEdit("Password:").SetSecure "4baf50f18b0ae0d5f5425fe760653e96da50bde7"
Dialog("Login").WinButton("OK").Click
Window("Flight Reservation").Activate
services.EndTransaction "Login"
Note: We can insert number of transaction points in a test

Using Timer Function 


‘Timer’ is a VB Script Built-in function, that can be used for measuring transaction time.
ST=Timer’ It returns elapsed time since 12:00 AM Mid night in seconds
Example:
SystemUtil.Run "C:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\flight4a.exe","","C:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\","open"
Dialog("Login").Activate
Dialog("Login").WinEdit("Agent Name:").Set "naga"
Dialog("Login").WinEdit("Password:").SetSecure "4baf50f18b0ae0d5f5425fe760653e96da50bde7"
Dialog("Login").WinButton("OK").Click
Window("Flight Reservation").Activate
ET=Timer
TT=ET-ST
msgbox TT


Note: here ST, ET and TT are variables, you can take any variable, I used:
ST for Start Transaction
ET for End transaction
TT for Transaction Time

Step Generator