The document provides an overview of QuickTest Professional (QTP), including:
1. QTP is a tool used for functional and regression testing of applications. It supports testing of various software using built-in and external add-ins.
2. The object repository in QTP stores object identification properties that are used to recognize and interact with objects during testing.
3. Tests in QTP can include multiple actions, which can be arranged hierarchically. Data tables are used to support data-driven testing by storing test and action iteration data.
1. QTP (Quick Test Professional)
Introduction to QTP:
QTP is a functional & regression testing of an application.
Since QTP supports external add-ins,it can be used for automating testing of many
different software applications and websites.Some add-ins (e.g ActiveX,VisualBasic,Web)
are built-in with QTP, and some other add-ins (e.g Java, .net, TE (termial emulator))are
external add-ins.
External add-in means we need to install them separately once after installing QTP.We
have the option to load only the required add-ins when opening the QTP IDE. So, it will be
helpful to improve the execution speed.QTP will support Keyword Driven and Data
Driven testing.We can create our own test automation framework (Hybrid framework) also
based on our own requirements for test automation.
It is very important to understand how QTP works. Because it will help to learn any other
features in QTP easily. And, it will help to design an effective automation framework. Having
clear understanding of inner working of QTP will help to resolve any issue that may come
across during automation script development and also during script execution.
It can be explained as below
We know that every test case should have Test Steps and Expected Results.As QTP is
used for executing these test cases, QTP also should have a way for handling both Test
Steps and Expected Results.Handling Test Steps means, QTP should be capable of
navigating any path/page in any website or in any software application.For achieving this
QTP should be able to recognize any control/object in any application/webpage which
needs to be tested. For recognizing the object, it should know the properties of those
objects beforehand. It is achieved by storing the properties of the objects in a
centralized place known as Object
Repository While running the test script, the objects in the application are
identified/recognized by comparing the properties of the objects with the properties stored
in the Object Repository.
doing this recognization, execution of Test Steps becomes possible.QTP is having Data
tables (similar to Excel sheet) for supporting execution for multiple iterations of same steps
with different data. For example, assume that we need to execute two test cases, one for
logging into a website using UPPER case username and another test case for logging into a
website using lower case username. For executing these two test cases, the steps will be
same. The only difference is in the test data. It can be easily done in QTP by putting these
input usernames in Datatable and make the Script to execute it two times.Next, we need
to think about handling Expected Results. The purpose of testing is comparing the Actual
result with the predefined Expected Results. It is achieved by using Checkpoints.
1
Prepare By Sandeep
2. There are many checkpoints available in QTP. They are, Standard Checkpoint,Text
Checkpoint, Bitmap Checkpoint, Database Checkpoint, accessibility Checkpoint and
XML Checkpoint.
Checkpoints:
Standard Checkpoint — Checks the properties of an object.
2. Table Checkpoint — A Standard Checkpoint that checks the properties of a
table.
3. Image Checkpoint — A Standard Checkpoint that checks the properties of an
image.
4. Bitmap Checkpoint — Compares an area of the application under test pixel-
for-pixel with the screen as seen at record-time.
5. Database Checkpoint — Used to automate back-end testing.
6. Text Checkpoint — Checks that a section of text is found between two other
sections of text.
7. Text Area Checkpoint
8. Page Checkpoint — Checks the properties of a web page.
9. Accessibility Checkpoint — Checks the accessibility of an application.
10. XML Checkpoint
The VBScript Reporter.ReportEvent function also produces output very similar to
that of a checkpoint, allowing the creation of custom checkpoints.
2
Prepare By Sandeep
3. Key Areas in QTP :
About the script structure
Action (Simple,Nested,Extenal,Re- useable)
Parameterization (Different Types)
Checkpoints (Programmatic methology)
Adv.Synchronization points
Exception Handling
Types of Test tool :
Business:
a) Vendor tools
b)
Ex: HP- WinRunner, LoadRunner, QTP, QC
IBM-Rational Robot, ,RFT, RPT, QA Director
Borland-SilkTest, Silk Performer etc.
b) Open Source Tools:
Ex: Selenium, Jmeter, QAWebLoad, Bugzilla etc...
c) In-house tools:
Technical :
Functional & Regression Test Tools:
3
Prepare By Sandeep
4. a) Ex: WinRunner, QTP, Rational Robot, ,RFT, SilkTest,Selenium etc..
b) Performence/load/stress test tools
Ex: LoadRunner, RPT, Silk Performer,Jmeter, QAWebLoad etc...
c) Test Management Tools:
Ex: QC, QA Director Etc...
d) Defect Management tools
e) Unit Test tools (Ex: JUnit).
QTP has two modes in which it is possible to view and edit a test script:
€ KeywordView
€ ExpertView
Contents:
o Testing Process
o Test Object Model
o Object Repositories
o Checkpoints
o QTP Recording
4
Prepare By Sandeep
5. o Parameterzing Tests
o Keyword View
o Actions in QTP
o VBScript in QTP
File extension of file in QTP?
Per test object rep: filename.mtr
Shared Object rep: filename.tsr
Code file extension id: script.mts
How many types object repository in QTP?
Local Repository(.tsr[test shared repository])
Shared Repository(.mtr(modular test repository))
Testing Process with QTP :
Main Phase of QTP testing Process:
5
Prepare By Sandeep
7. Record and Run Models:
Record mode:
Normal
Analog
Low Level
Run models:
Normal
Fast
Update
Required Steps/Processes in QTP Automation :
Before starting actual automation task, we should do tool evaluation and feasibility study to
make sure QTP is the appropriate tool for automating test cases of our application. It can be
done by selecting few sample modules/screens/flow from the application/test cases
and create simple QTP scripts to make sure QTP will recognize the objects in our application
As part of Test driven development, we can ask the application development team to give
proper name or any other identification properties for the objects, if our feasibility study
reveals some difficulty for QTP to recognize the objects.
7
Prepare By Sandeep
8. • As I mentioned earlier, we should start our actual automation work only after completing
some basic manual testing to make sure the application is stable and in working
condition.
• QTP developers should review the Test cases and update it to specify what are the test
cases that can be automated. Because ideally it is not possible to automate all the test
cases. The reason may be, difficulty in navigation or object identification issue or difficulty in
verifying the result. If possible, the manual test cases can be rearranged to have separate
automation test cases.
• Once after reviewing all the test cases and after getting familiar with the application we
can design the automation frame work for our need Keep separate instance of application
specifically for the purpose of developing automation scripts. It will avoid any unnecessary
mess up with manual testing processes.
• Set up proper QTP development environment with required Add-in and with any add-in
extensibility. If many people are going to involve in the development activities then we
need to clearly document the responsibility of each person and the approach for sharing the
scripts. If application is installed in remote machine then QTP also should be installed in
remote machine. Because QTP will not recongnize the objects of application in
remote session.
• Set up proper object identification properties in QTP IDE.
• Once after completing all the above basic steps, the first development task should be
adding all the required Test Objects/properties to the Object repository It can be done
by recording or by manually adding the objects to Object repository. If you specify any
object using DP (Descriptive Programming) remember to document it.
• Once after adding all the objects, rename them to have a unambiguous/meaningful
name.Based on your design of automation framework, create reusable actions and vbscript
functions using step generator or keyword view or expert view or using Active screen.
• Using these reusable actions prepare a sample/base script for executing few test cases.
And then test it to make it error free.
Once after completing the above mentioned sample script, do parametrization (data
driven testing) for executing multiple iterations. Add checkpoints to verify the expected
results Use appropriate Regular expression to make sure the script runs in all scenarios
even when some properties are getting changed dynamically in particular pattern Add the
Recovery scenarios to handle any unexpected behavior of the application.
• Use Environment variables to avoid any hard coded values in the script.
• Do dry run for this sample script and debug the issues in the automation script and fix
them Do the above steps for all the test cases Create a Driver script which will call all the
test scripts. Complete dry run for the Driver script.
8
Prepare By Sandeep
9. Understanding Object Repository :
OR is a place where QTP stores learned objects.
QTP uses default Object identification properties
Object Repository is a centralized place for storing Properties of objects available in
AUT (Application Under Test). Why Centralized place? And, Why we should store the
properties of objects available in AUT? First, I will explain below things which will be helpful
for understanding answers of above questions.
- All software applications and websites are getting developed using many different
components or small units (e.g textbox control in vb, input tag in HTML, webbrowser
contorl in .net ) which can be called as Objects.
- Each object will be identified based on the object type. And also, each object will have its
own properties e.g name,title,caption,color,size for helping to identify by each of them And
also, each object is having specified set of methods.
- Some of the properties can be changed during run-time. These are known as RO (Runtime
object) properties. And some of them can not be changed. They are known as TO (Test
Object) properties.
- You can use ObjectSpy available in QTP IDE to see the TO properties methods and RO
properties & methods of any object available in your application. (Make sure that required
add-ins are available .If you see TO and RO properties of many objects in different
applications using ObjectSpy, you will be in a position to distinguish between TO and RO
properties.
- Since TO properties are used for uniquely identifying any object, QTP will store only the TO
properties of any object in the Object Repository.
- QTP will store TO properties of any object of AUT in Object repository as Name & Value
pair.
The Objects stored in the Object repository(OR) are called as Test Objects. Actually it is
just equivalent to the corresponding actual object in AUT.
- All the Test Objects that are stored in Object repository(OR) are arranged in a
hierarchical structure.(e.g Browser->Page->webelement). QTP will store the TO properties
of the Objects in many different waysOne simple way is, while doing Recording the TO
properties will be stored to the OR Second way is, TO properties can be stored by pointing
the mouse cursor to required object in the AUT.Another way is manually adding the TO
properties of the objects to the OR.
- Note that QTP won't store all the TO properties of the objects to the Object Repository.
Only few properties will be stored to the OR, based on the setting done in Object
Identification window. Refer the belo-Sometimes, QTP will store some additional properties
such as index, location which are known as ordinal identifiers. Actually these properties
won't be available in the object of AUT.
9
Prepare By Sandeep
10. It will be created by QTP automatically to distinguish two objects which are having exactly
same TO properties. (e.g Some forms in the web pages will be have two submit buttons,
one at top and another at bottom. QTP can identify them only based on location or index).
-Note that even QTP is storing TO properties based on properties of object of AUT (i-e real
object), there is no need for all the TO properties to be available in RO properties collection
also. (ie) QTP can derive (i-e do some manipulation) to get some new TO properties from
one or many RO properties.
-Script can get TO properties of Test Objects using methods such as getTOproperty and
getTOproperties. Even, TO property of TestObject can be changed using setTOproperty. But
anyway, it will be valid only till exiting the execution. After completing the execution it will
resume the actual TO property stored in the OR.During run-time we can get the property of
the runtime object using getROproperty.
-Till this point we have seen about storing the Test Objects in Object Repository.During Run
mode, QTP will use these stored properties for comparing them with properties of actual
objects of AUT to identify them.
- These Test objects can be represented in the script as ObjectType and Object name. (e.g
Window("Mozilla Firefox").Activate.- The object repository will support editing of properties
of Test Object and new properties can also be added to them.
- The value for the properties of the Test Objects in OR need not be a constant. We can
parametrize the values so that the TO property can be dynamically changed for each
iteration of execution.Now we can come to our Initial question. By storing properties in the
centralized place, maintenance and updation of Test scripts can be easily done whenever
there is a change in UI (User Interface) of the AUT.
Assume that Login screen is used in around 20 Test scripts. If the Page name of login
screen in changed, we need not make any change in all these 20 Test scripts. Just changing
the property of Test Object in OR is enough.Clear understanding of Object Repository is
essential if you are willing to use QTP extensively. Because we may face lot of
difficulties/challenges while working with QTP. We should have clear knowledge in OR to
face/solve them.
Just Recording and Playback won't help much. And also, Test Automation framework can be
done very effectively only when you are familiar with understanding/handling of Object
Repositor.
Understanding Action Iteration and Test Iteratiom:
For beginners of QTP, it is very important to understand the difference between
Action and the Test.A QTP Test can have multiple Actions. The Actions can be arranged in
nested manner (parent action-child action)also within the Test. Each Test will be stored as
10
Prepare By Sandeep
11. QuickTest Test. Actually it will be shown as Folder in windows explorer. Each Folder will
have So it is clear that Actions are part of Test.DataTables in QTP are used to enhance the
script by doing Datadriven testing easi The Datatable is having One Global Sheet and
several local sheets based on number of Actions used in the Test.The Global sheet is used
for storing the data used for Test Iteration, and the local sheets are used for storing the
data related to corresponding Action iteration.
The Test Iteration can be specified from Run tab of Test Settings (File->Settings).The Action
Iteration can be specified from "Action Call properties" window which can be opened from
Right click menu (context menu) of the particular Action.Now the next step is when we
should use both Test iteration and Action Iterations.Assume that you are testing flight
booking application which comes along with QTP installation.You need to test different test
cases of booking tickets 5 times.So, we can easily do it by entering the ticket details in 5
rows of Action sheets and setting "Run on All Row" in "Action Call properties".We know that
we need to login into the application before booking Tickets.So now the tickets will be
booked 5 times with single user login.Assume that we need to test this with 4 different
users.So, we need to book the tickets 20 (5x4) times.It can be handled by using both Test
Iterations and Action Iterations.The user login details can be kept in the Global Sheet and
the "Run on All Row" should be set in the Test settings.So now script will execute 20 times
to make 5 bookings with 4 user logins.
2)
11
Prepare By Sandeep
13. There are 2 kinds of actions:
1. Regulare( Non- Resuable).
2. Resuable.
Tests that contain reusable actions can be use:
Locally
Externally
TEST PANE :
Keyword View : - Icon based Tree.
Expert View : - Display Source Code (VB script)
Create Case Test :
Create basic
13
Prepare By Sandeep
14. Using Parameterized Data:
Test data can be passes from one test to another test using the value of
an input parameter.
This creates a data flow between business Processes.
The value passed from one business process to another will come from
the Data Table.
Be aware of any data dependencies that occur within the business
process.
Interact with test objects not stored in the Object Repository.
VB Script basic- Variables & Constants :
Declaring Variable
Naming Restrictions
Scope & Liftime
Assigning Values to Variables
Scalar Variables & Array Variable
Creating Constants
Basics of vbscript :
VBscript is the scripting language used in QTP. It is developed by Microsoft.
VBscript is subset of VB (Visual Basic) and VBA(Visual Basic of
Applications).VBscript is used by other technologies also. For example, it is used in
ASP (Active Server Page) for web site development. So we will be getting more
ready-made functions/code written in vbscript from the Internet. It will save QTP
script development time.VBscript will access the host/system thro' Microsoft's
Windows Script Host (WSH). We can use WSH scripts also in QTP. It can be
effectively used to automate the Test scenarios such as rebooting the system
automatically after doing some steps and locking the system automatically.
QTP recording feature will automatically generate VBscript code while recording the
steps.And, QTP IDE is having 'Function Generator" for creating the vbscript
functions.VBScript Variables In VBScript, all variables are of type variant, that can
store different types of data.Rules for VBScript variable names:
•Must begin with a letter Cannot contain a period (.)
•Cannot exceed 255 characters dim will be used for declaring the variable as below
.Dim TestCaseIDThe value for this variable can be assigned as below
TestCaseID="TC1"Remember to use option explicit at top of your script. Otherwise
a new variable will be created automatically if you misspell the variable name when
assigning value for it.We need ot understand scope/lifetime of variable clearly. A
variable declared within a function will exist only within that function. That means the
14
Prepare By Sandeep
15. variable will be destroyed when exiting the function, and more than one function can
have variable with same name. So it is called as Local variable
.So, it is very important to have clear understanding about the scope/lifetime of
varibale declared/used in Test/Action/function library/datatable/environment.Array
variable can be declared as below
Dim ArrIDs(10)The above declaration will create single-dimension array containing
11 elements. i-e the array in vbscript is 0 based.
Operators
Arithmetic
DescriptionSymbol
Exponentiation^Unary negation-Multiplication*Division/Integer divisionModulus
arithmeticModAddition+Subtraction-String concatenation&
Comparison
DescriptionSymbol
Equality=Inequality<>Less than<Greater than>Less than or equal to<=Greater than
or equal to>=Object equivalenceIs
Logical
DescriptionSymbol
Logical negationNotLogical conjunctionAndLogical disjunctionOrLogical
exclusionXorLogical equivalenceEqvLogical implicationImp
VBScript Procedures In VBScript, there are two types of procedures:
•Sub procedure
•Function procedure
A Sub procedure is a series of statements, enclosed by the Sub and End Sub
statements does not return a value can take arguments without arguments, it must
include an empty set of parentheses ()eg.Sub displayName() msgbox("QualityPoint
Technologies")End SuborSub addvalues(value1,value2) gbox(value1+value2)End
SubWhen calling a Sub procedure you can use the Call statement, like this:
Call MyProc(argument) Or, you can omit the Call statement, like this MyProc
argumentA Function procedur is a series of statements, enclosed by the
Function and End Function statements can return a value can take arguments
Function addvalues(value1,value2) addvalues=value1+value2End FunctionThe
above function will take take two arguments and will add those two values and then it
will return the sum value. Note here the sum value is retured by assigning it to the
function name.The above function can be called as below.msgbox "Sum value is " &
addvalues(1,2) Conditional Statements In VBScript we have four conditional
statements:
if statement
- executes a set of code when a condition is true
(e.g) if i=10 then msgbox "I am 10"
End if
15
Prepare By Sandeep
16. if...then...else statement
- select one of two sets of lines to execute
(e.g) if i=10 then msgbox "I am 10" else msgbox "other than 10"
end if ?
if...then...elseif statement
- select one of many sets of lines to execute ?
(e.g) if i=10 then msgbox "I am 10" elseif i=11 then msgbox "I am 11" else
msgbox "unknown" end if ?
select case statement
- select one of many sets of lines to execute select case value ?
case 1 msgbox "1" case 2 msgbox "2" case 3 msgbox "3" case else
msgbox "other than 1,2 and 3"end select without arguments, must include an empty
set of parentheses ()returns a value by assigning a value to its nameFind below a
Sample function.
16
Prepare By Sandeep