Blog to understand automation concepts in QTP, Selenium Webdriver and Manual Testing concepts

Understanding All about object Repository: Subjective and Multiple choice Questions

In this article, we discuss about concepts of object Repository in QTP by subjective and multiple choice questions. Your suggestions are most welcome if I missed on anything in this article related to object repository.

Question 1: What is object Repository?

Answer: Object repository is a repository where collection of objects with identification properties are saved. Objects in an object repository are stored in a tree structure. E.g. a WebEdit object in object repository will have parent as Page, and page will have a parent browser. So for a browser object, we can have multiple page objects, and inside a page object we can have multiple web edit boxes. Object Repository stores objects and checkpoints.

Understanding Object repository Window

Question 2: Where can we see the object repository Window in UFT 11.5?    

a. By clicking CTRL+R

b. Navigating to Resources>Object Repository

c. Navigating to Tools>Object Identification

d. By clicking CTRL+A

Answer: To view Object Repository window, Navigate to Resources>Object Repository or Click CTRL+ R. So option a) and b) are correct

Question 3: Explain various menu items in the Object Repository Window?

Answer: The various menu items in Object Repository Window:
      File:  File menu provides option to export object from local repository to a shared repository. When we learn object, objects are associated with an object repository for the particular Action and not be used by other actions. To use the same objects in other actions/ tests, we need to create shared OR. A shared OR is created by exporting objects from local repository. When we export local objects using File>Export Local Objects, a shared object repository is created at location defined. Instead if we use File>Export and Replace local objects, local object repository is removed, and a shared repository with action with all the local objects
Adding a new test object 
        Edit: Provides option to cut, copy, find, replace, or delete an object in repository.
        Object: Object Menu allows us to do following tasks:
a.       Define New Test Object – A new test object can be created based on environment, object class, and properties defined by user. This is useful in case the properties of object yet to be created by developer are known to tester.
b.      Adds object to local – Allows to add objects from application to repository
c.       Update object from application – this allows to update object properties for an object in repository with the properties of selected object from application
d.      Add Insight Object to local – This adds insight object to the repository by user. An Insight object similar to other objects can be added during recording as well as manually by learning through application.
e.      Copy to Local – An object from associated shared object Repository can be copied to Local using Copy to Local.
          View: Allows user with following tasks:
a.       Compact view  Provides user option to view the object repository in compacts (Object Properties are not displayed in compact view)
b.      Highlight in Application   this feature highlights the selected object in application and helps user know object is available
c.       Locate in Repository – This is to verify object in application is already available in repository.
         Tools: Provides following tools to the user:
a.       Object Spy – One of the first of features of QTP that we use in QTP to identify object properties is Object Spy. We can view the native properties and test object properties for an object and available methods based on object class.
b.      Associate Repositories–  We can associate repositories with the action using associate repositories.
c.       Delete Insight Objects
         Help: Provides help on object repository window

Question 4: Which of the following are types of Object Repository?

a.       Local Repository
b.      Shared Repository
c.      Global Repository
d.      Test Repository.
Answer: Local Repository and shared Repository are types of object repository. When we record on an application, or learn objects, objects are stored in the object repository specific to the action in which we learn or record in the application. This repository is known as Local Repository as is specific to the action. If we want to use same object in multiple test/action, we should use shared object repository. 
When we export local object as explained in file section of Answer 3), a shared repository is created, We can merge object Repositories to form a large shared object Repository using Merge Object Repository feature in Object Repository manager. Shared Object repository can be used in multiple actions by associating the repository with action

Question 5: We have associated different shared repositories and have some local object. How can we view object from local repository only in object Repository window?

a.       Compact View shows only local objects in the repository
b.      We cannot distinguish between Local and shared repository object.
c.       Local objects are editable in Object Repository Window whereas objects from shared repository are non-editable and are displayed lighter/fade in color compared to Local object
d.      Using Filter from Pane to filter objects from different repositories

Answer: Option c.) and d.) are correct, Local objects are editable in Object Repository Window whereas objects from shared repository are non-editable and are displayed lighter/fade in color compared to Local object. Using Filter from Pane to filter objects from different repositories as shown below:


Question 6: What is the extension of a Shared object repository in QTP?

a.       .tsr
b.      .qrs
c.       .mts
d.      .tsp
Answer: Extension of a shared repository file is .tsr. qrs is extension for recovery file, .tsp is extension for a test, and .mts stores the script of an action


Learning Object Identification in UFT/QTP with Question and Answers

In this topic we will discuss in detail various questions on object identification with expectation that it covers and help reader understand the concepts of Object Identification with these topics:

Question 1: What are the objects identified in QTP?

Answer: When we record or learn object in QTP, QTP records properties of the object known as identification properties which are specific to the object class, for e.g. when we identify an input box, it is an object of WebEdit class and will store specific properties to the object. These objects are known as Test Objects.

When we run a test in QTP, QTP matches properties stored for test objects with run-time objects, i.e. objects in the application during test run. If the properties of run time object matches with test objects, we can perform operations on the identified object.


Question 2: What are native properties and Identification properties?

Answer: Identification Properties are properties that QTP uses to identify objects in application. The identification properties for a test object are determined by its test object class and values for properties are used to identify object.

We can retrieve and set test objects and properties using GetTOproperty and SetTOproperty. GetTOproperty method retrieves the property of object as stored in repository whereas SetTOproperty sets the property value of a test object in repository. Similar to this, GetROproperty is used to retrieve property of runtime object. Since we cannot change property of an object at runtime, there is nothing like SetROProperty

Browser("google").Page("google").WebEdit("UserName").SetTOProperty "Name", "Nitin"
strName= Browser("google").Page("google").WebEdit("UserName").GetTOProperty("Name")
strName= Browser("google").Page("google").WebEdit("UserName").GetROProperty("Name")

Native properties are properties as created by the creator of object, e.g. Microsoft is creator for IE explorer objects. We can retrieve native properties value for an object using .object

e.g. : Set objReport = Browser("Google").Page("title:=.*").Frame("name:=ifrt5").Object.getelementbyid("username")
objReport.innertext = “nitin”
This code will search for element with html id as “username” in frame object and sets value nitin in the element.


Question 3: How is an object identified in QTP?

Answer: 
1. UFT first identifies an object based on description properties, and if no match is found, it throws an error. In case unique match is found, QTP perform action of the matched object.
2. If multiple matches are found based on description properties, and Visual Relation Identifier (Identifying object based on relative position of an object w.r.t other objects) is defined for test object, QTP searches for a match based on the relational identifier.
3, In case 1) and 2) does not result in a unique match for object, QTP Searches for an object using smart identification.
4. In case, step 1, 3) does not return a unique matching object and Visual Relation Identifier is not defined, QTP looks for ordinal identifier.
Ordinal identifiers are not used in case visual relation identifiers are defined for object.


Question 4: What are description properties?

 Answer: For every test object, there are identification properies by which QTP identifies the object. 
Properties that QTP always learns as part of the description for test objects of the selected class are called mandatory property, in case object is not identified uniquely during learning or recording, QTP learns additional properties for test object of the selected class to create a unique test object description. These additional properties are known as Assistive properties. Assistive and mandatory properties used together to learn an object during learn or recording are known as Description properties.


Question 5: Can we modify which properties to be learned as mandatory and which to be learned as assistive properties?

Answer: By default in QTP, for each test object class, there are certain properties which are defined as mandatory properties and some other properties as Assistive properties, but we can change the properties to be learned as mandatory or assistive as described below:

Navigate to Tools>Object Identification in UFT 11.5.  In the Object Identification window, for each object class there are properties marked as mandatory and assistive, we can add remove properties using add/remove button as shown below:
Defining mandatory and assistive properties

Question 6: What is Smart Identification?

Answer: When an object is not uniquely recognized by the description properties and visual relation identifier defined for object, QTP uses smart identification mechanism to uniquely identify an object if smart identification is set as true at object properties in the object repositories. There are some set of properties known as base filter properties (most fundamental properties of a particular test object class) and optional filter properties (additional properties that can help identify objects of a particular class.).
Smart Identication properties
Smart identification process is as follows:
QTP unlearns all the properties defined for object.
Based on first base filter properties, QTP shortlists all the objects within the same parent class,
QTP further shortlists based on other base filter properties followed by optional filter properties until a unique match for object is found. In case no unique match is found, post short listing by all optional filter properties, QTP selects unique object based on ordinal identifier defined for object.

Question 7: What is the default ordinal identifier for web browser object?

a.  Creation Time
b.  Location
c.  Index
d.  Position.
Answer: The default ordinal identifier is Creation time for browser object, for all other web object, the default ordinal identifier is Index.For Standard Windows object, it is Location.

Please add any additional information that needs to be covered in topic on object Identification. Object Repository will be discusses in detail in another Question and Answer article


Automation Object Model in QTP : Questions and Answers

In this article, we will try to understand Automation Object Model in QTP through subjective and multiple choice questions:

Question 1: What is UFT AOM?


Answer: AOM stands for Automation Object Model.The UFT AOM is a set of objects, methods, and properties that enable you to control essentially all test settings ad test options. Using the objects, methods, and properties exposed by the UFT automation object model, along with loops and conditional statements, we can perform following tasks using Automation object model:
1.   Execution of Test Scripts from VB Script. This helps in execution of tests from QTP and scheduling tests to run on remote machine. Test can be run in host machine/remote machine but QTP needs to be installed in host/remote machine in which test script needs to be executed.
2.  We can change configurations (Test Settings and options) at runtime of QTP tests.
3.  We can save test or component using AOM.
4.  Using Initialization script that launch UFT automatically can enable same settings/options executing from multiple machines.

Question 2: We can create an object of Quick Test in VBScript using ......


a.      Set qtApp = CreateObject("QuickTest.Application", "MyServer")
b.      Set qtApp = CreateObject("QuickTest.Application")
c.       Set qtApp As CreateObject("QuickTest.Application")
d.      Set qtApp as CreateObject(“Scripting.QuickTest”)

Answer: We can create an object of QuickTest in VBScript using a) or b). We need to provide server details as shown in option a), in case we need to run test on a remote machine. In case we have to run test in the same machine, we can use option b), i.e without Server Parameter.

Question 3: How can we associate a library at runtime with QTP test using AOM?


Answer: We can add a library using AOM as follows:

Create an object of QTP object.
Set qtApp = CreateObject(“Quicktest.Application”);

Multiple libraries can be associated with test as follows:
qtApp.Test.Settings.Resources.Libraries.Add "C:\Common_Func.vbs"
qtApp.Test.Settings.Resources.Libraries.Add "C:\Business_Func.vbs"
files = "C:\Common_Func.vbs| C:\Business_Func.vbs"
qtApp.Test.Settings.Resources.Libraries.Add(files)
In addition to AOM, we can associate libraries using function LoadFunctionLibrary FileName or ExecuteFile FileName

Question 4: Can we generate script automatically for all test settings and options: Yes/No


Answer: We can generate AOM scripts for all test settings, and test options in QTP.
a.      Script for all the test settings can be generated from File>Settings>Properties
b.      Script for all the test option can be generated from Tools>Options>GUI Testing>General

Question 5: How can we associate repositories with a test in QTP using AOM?


Answer: An object Repository is associated with action in the test and not the test as whole. We can associate object repository with an action as shown in the example below:

Set Qtpapp = createObject(“Quicktest.Application”)
Qtpapp.Open “C:\SampleTest1”,False,False
Set qtrep = Qtpapp. qtApp.Open "C:\Tests\Test1", False, False ' Opens a test in qtp
Set qtRepositories = qtApp. Test.Actions(“Action1”).ObjectRepositories  ‘Creates an object of repository collection i.e all repositories associated with a test action
If qtRepositories.Find(“C:\ORTest.tsr”) = -1 Then ‘If OR is already associated with a test, do nothing else add the required shared object repository.
    qtRepositories.Add “C:\ORTest.tsr”, 1
End If

Question 6: Can we stop a test execution through AOM?


Answer: Yes, we can stop a test from AOM, but the question arises, why do stop test from AOM when we can stop a test using exitTest statement. Many a times,exit statement does not work in QTP 11 when the exit statement was called from inside functions called from function in vbs library. In case exitTest statement does not work we can exit a test using below code:

Set qtAppObj = CreateObject("quicktest.application")
qtAppObj.Test.Stop

Question 7: Which of the following method of recovery object is used to activate recovery scenario through AOM?

a.      Activate
b.      Add
c.       Enabled
d.      Focus
Answer: we can enable a recovery scenario using enabled method of recovery object.

Question 8: How can we connect to ALM using VBScript?


Answer: Using the below code, we can connect to ALM through VBScript using QuickTest Application object as shown below:
Set qtApp = CreateObject ("QuickTest.Application")
If  qtApp.launched <> True then
     qtApp.Launch
End If
qtApp.Visible = "true"
If Not qtApp.TDConnection.IsConnected Then
      qtApp.TDConnection.Connect QCurl, DomainName, ProjectName, UserName, Password, False
End If


Understanding Menu options in UFT 11.5: Questions and Answers

This is first of the topics in understanding about menu options changes in UFT 11.5 with subjective questions and multiple choice questions. We will discuss various questions based on menu options in UFT 11.5.

Question 1: What are the various menus in UFT 11.5 GUI Test?


Answer: The various menus with important functions in UFT 11.5 are as follows:
· File Menu: The file menu provides commands to:
o   Create New Business Component, Function Library, Solution, test, and Application Area.
o   Open existing Business Component, Function Library, Solution, test, and Application Area.
o   Add existing Business Component, test, and Application Area.
o   Save, Close, and view recent tests and other assets.

·Edit Menu: Provides option to edit content of test including cut, copy, delete, undo and redo the changes.
o   Provides option to format the test using comments, uncomment, using with statements
o   Inserting code snippets

·View Menu: Provides various options to view test information :
o   Viewing toolbox, solutions explorer, properties, test flow, and bookmarks
o   Viewing Data pane, debug information in watch, variable, command window
o   Move from keyword view to editor view  and vice versa

·Search: To search content including text and bookmarks

·Design: Design provides option to design the test with actions, checkpoint , step generator ,and function definition generator:
o   Inserting call to new action, call to existing action, call to copy of action, and call to existing API Test.
o   Enhancing test/action with function definition generator, checkpoints, output value and transaction steps.
o   Validating syntax in the code

Record: Provide option for various recording modes, web event recording configuration settings, and record and run setting

Run: provides various option to run a test with run test, run now, Maintenance run mode, update run mode
o   Runs a test from step, step into, step over, debug from step, run to step.
o   Inserting a variable, object to watch, inserting and removing breakpoints

Resources: provides option to view object repository, object repository manager, Associate repository with an action, mapping repository parameters and creating recovery scenarios.

ALM: Provides options to create connections with ALM/QC and versioning feature of resources From ALM

Tools: Provides various tools and options to work with UFT11.5.
o   Provides tools including object spy, .Net Windows Forms spy, Object Identification, regular expression evaluator, data driver, change active screen, extensibility accelerator and virtual objects.
o   Import WSDL, Import .NET Assembly, rest services
o   Defines tools options for GUI Testing, API Testing, coding, text editor and general options.

Windows: Provide option to move from one window to another.

Help: Provides link to various help, UFT support  and installing license for UFT 11.5

Question 2:  What will happen, if I press Ctrl +Q in a UFT function?

a.       Recovery Scenario Page will open
b.      ALM Connection will open
c.       Object repository
d.      Comment a statement

Answer: Ctrl + Q will open ALM connection window, where we can provide details to connect to ALM Server, project details, and password/username details. To open Object Repository, Press Ctrl + R. To comment a statement, Press Ctrl+M.

Question 3: In which menu, Is regular expression evaluator?

a.     Tools
b.      Edit
c.      View
d.      Resources

Answer: The correct Answer is a) tools

Question 4: Shortcut key to view data table is:

a.       Ctrl+Alt+X
b.      Ctrl+Alt+P
c.       Ctrl+Alt+D
d.      Ctrl+Alt+E

Answer: Shortcut key to view data is Ctrl+Alt+D, Ctrl+Alt+X is shortcut for Toolbox, Ctrl+alt+P for properties, Ctrl+Alt+E for errors and Ctrl+Alt+L for Solution explorer

Question 5: What is the shortcut Key to insert a standard checkpoint?

a.       F9
b.      F10
c.       F11
d.      F12

Answer: F12 is shortcut key for standard Checkpoint, Other Shortcut keys are as follows. F9- Insert/Remove Checkpoints, F10 - Step Over, F11 - Step into, F7 - Step generator.

Some other Useful Shortcut keys are: F6 - Record, F4 - Stop, F5 - Run, Ctrl+F5 - Run from step.