72
Dani Vainstein & Monika Arora Dani Vainstein & Monika Arora Gautam Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Embed Size (px)

Citation preview

Page 1: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GauDani Vainstein & Monika Arora Gautamtam

1

Requirement - Req0003

Implementation of Requirement Req0003

Page 2: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 2

Topics covered

Calling an existing library function. Creating an external data source. Loading an external data source. Create a dynamic standard checkpoint.

Page 3: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 3

TIP

Fr Project staff have made an improvement to the presentations. Whenever you see QTP code, right click the left bottom part of the

presentation and do the following :

1

2Click

Page 4: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 4

Before You Start…

Before starting the presentation, read about the following topics in QTP help. With…End With Statement. MsgBox Function. MsgBox Constants. PathFinder.Locate Method. ExitAction Statement. Parameter Object. StrComp Function. DataTable.ImportSheet Method. CLng, CInt Functions. Mid Function.

Page 5: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 5

Requirement Req0003

Page 6: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 6

Req0003 – Scenario Details

Step 1 - The user presses OK, without entering any information

Step 2 A) Popup dialog is displayed. B) Popup title : Flight Reservations C) Message type : Exclamation D) Message text “Please enter agent name”

Step 3 – Close the dialog.

Page 7: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 7

Req0003 – Overview Details

Title = Flight Reservations

Icon = Exclamation

text =

Please enter agent name

Displayed

And Popup

Page 8: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 8

Process Design – Req0003

Login Press OK 1

No

DialogLogin

Exists?

ExitTest

Yes

ReportmicFail

Invoke App

Start

InvokeApp FunctionInvokeApp Function

Page 9: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 9

Process Design – Req0003

No

Req0003a?

Yes

ReportmicFail

End

Req0003b

PassedFailedReportmicFail

ReportmicPass

Req0003d

PassedFailedReportmicFail

ReportmicPass

Press OK

Load message

s

Repository

1

Page 10: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 10

Process Design – Req0003 First we need a regular invoke application process (

Already done in InvokeApp function ) Then we need to verify that the invoke app process

was done successfully, before accessing the dialog. If the process failed, it means that the 'Login'

dialog was not displayed and hence there’s no point to continue testing.

Then the Req0003 process starts where user leaves all the textboxes blank and hits the [OK] button of 'Login' dialog.

Check if 'Flight Reservation' dialog popped-up - Req0003a

Page 11: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 11

Process Design – Req0003

Load the messages repository The expected messages will be stored on an MS-Excel

datasheet. We call that datasheet "Messages Repository"

Test requirements Req0003b to Req0003d Close the pop-up dialog.

Page 12: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 12

Implementing Business Req0003 Open the test busLogin, action busLoginMng Menu : File Open Test

Page 13: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 13

Implementing Business Req0003 Add a new step case “req0003” ( remember to

write the string in lower case )

Page 14: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 14

Implementing Business Req0003 To generate an error message we have to hit the 'OK' button

without entering any data or irrelevant data in 'Login' dialog'. So we need to implement an “OK” click. Business layer ( does not actually execute WinButton.Click )

' ** clicking OK

RunAction "guiLogin [guiLogin]", oneIteration, "OK"

Later, in guiLogin we’re going to actually execute the WinButton( “OK” ).Click action.

Page 15: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 15

Implementing Business Req0003 'OK' click will be implemented in the CheckDialog reusable-

action, so we add just the call to the existing action. Menu : Insert Call to existing action Select Test guiLogin and reusable-action CheckDialog. Remember to use the relative path!!

Relative Path

Page 16: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 16

Business Req0003 – Final Look

Notice that you now have 2 external reusable actions, and 1 internal.

Page 17: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 17

Implementing OK Step

Open the guiLogin test, guiLogin reusable-action. Add the following code. Case "ok" in lowercase.

Case "ok" : Dialog( "Login" ).WinButton( "OK" ).Click

Page 18: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 18

Implementing CheckDialog

No

Req0003a?

Yes

ReportmicFail

End

1

Page 19: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 19

Implementing CheckDialog

popup dialog with title “Flight Reservations” should exist, otherwise test fails and cannot continue.

' ** Checking if dialog exist.

If Dialog("Login").Dialog("FlightReservations").Exist( 1 ) = False Then

Reporter.ReportEvent micFail, Parameter.Item( "MsgId" ), "Dialog was not found."

ExitAction( micFail )

End If

Dialog("Login").Dialog("FlightReservations").Activate micLeftBtn

Dialog("Login").Dialog("FlightReservations").CheckProperty "ispopupwindow", True, 1000

Page 20: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 20

Implementing CheckDialog

If the 'Flight Reservations' dialog exists, we then check if it is a pop-up dialog.

In order to check this we use CheckProperty method of Dialog object.

The property “ispopupwindow” will return True if the dialog is a popup window, else False.

' ** Checking if dialog exist.

If Dialog("Login").Dialog("FlightReservations").Exist( 1 ) = False Then

Reporter.ReportEvent micFail, Parameter( "MsgId" ), "Dialog was not found."

ExitAction( micFail )

End If

Dialog("Login").Dialog("FlightReservations").Activate micLeftBtn

Dialog("Login").Dialog("FlightReservations").CheckProperty "ispopupwindow", True, 1000

Page 21: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 21

Loading an existing data source

Load message

s

Repository

Using OO methodology, we separate data from implementation.

We need to load a message repository. The message repository is an excel datasheet

that holds all the system messages.

Page 22: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 22

Creating an external data source Create the following excel datasheet

Rename to Messages

Page 23: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 23

Creating an external data source

LIB

RA

TESTS

RS

DOC

FR

DAT

SETTING

RES

BATCH

ENV

Automation

BL

GL

FR.xls

Page 24: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 24

Load messages headers

Select the CheckDialog Data Table in QTP. If you don’t see the CheckDialog Data Table

Menu : View Data Table Right-click the table join cell.

CheckDialog

Page 25: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 25

Load messages headers

Select from the popup menu : File Import From file.

CheckDialog

Page 26: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 26

Load messages headers

Page 27: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 27

Messages Datasheet

ID – Every message has to have a unique identifier ( id ) for this purpose we'll use the custom format MSGxxxx. i.e MSG0043 ( Message No. 43 )

MsgString – The original string on the popup message box.

IconType – a number representing : 16 : vbCritical 32 : vbQuestion 48 : vbExclamation 64 : vbInformation

Page 28: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 28

Messages Datasheet

TitleString – The original title of the pop-up message.

ButtonId – a number representing : 1 : vbOK 2 : vbCancel 3 : vbAbort 4 : vbRetry 5 : vbIgnore 6 : vbYes 7 : vbNo

Page 29: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 29

CheckDialog Reusable Action

From Menu Edit Action Action Properties

Page 30: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 30

CheckDialog Reusable Action

Add input parameter MsgId.

Page 31: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 31

Insert a new expected message

Page 32: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 32

Loading the datasheet ( Message Repository )

If PathFinder.Locate returns the excel path, then the datasheet will be loaded and replace the local sheet.

Every action in QTP has a "Local Sheet" If the excel file was not found, the action is aborted, not the

script.

'** Loading datasheet

frXls = PathFinder.Locate( "DAT\FR.xls" )

If frXls = vbNullString Then

msg = "FR.xls was not found under DAT folder."

Reporter.ReportEvent micWarning, "Loading Datasheet", msg

ExitAction( micWarning )

End If

DataTable.ImportSheet frXls, "Messages", DataTable.LocalSheet.Name

Page 33: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 33

Find the relevant MsgId

At this point the datasheet is loaded. As we continue testing during the project, we’ll

have more messages. To retrieve the particular message from the

datasheet, we need the row number. How do we get the row number? For this i used a programmatic “trick”.

The action input parameter ( MsgId ) format is always MSGxxxx, where xxxx is a four digit number ( 0001, 0002 ).

The 4 digit number prefixed with "MSG", will be the message id string.

Page 34: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 34

Find the relevant MsgId

' ** Retrieving row number

rowNo = CLng( Mid( Parameter.Item( "MsgId" ), 4 ) )

DataTable.LocalSheet.SetCurrentRow rowNo

Assuming that “MsgId” = “MSG0001” Mid( “MSG0001”, 4 ) “0001”

Now we convert it to subtype long by using CLng function. CLng( “0001” ) 1

The row number is stored in rowNo variable. Then, we set the working row to rowNo, using SetCurrentRow method.

Page 35: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 35

Checking the title string

Req0003b

PassedFailedReportmicFail

ReportmicPass

Req0003d

PassedFailedReportmicFail

ReportmicPass

Page 36: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 36

Verification

At this point we know, that rowNo is 1, and we set the current row to 1.

Before we start accessing the information from row 1, we need to verify that our pointer is in the right “place”

We need to verify that column 'ID' from the datasheet, row 1, has the same value of Parameter.Item( "MsgId" ), which in this case will be 'MSG0001'.

So if something went wrong ( you forgot to pass the correct parameter, or forgot to add the MSGxxxx in excel ) the script won’t continue, it will stop and report a warning message.

Page 37: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 37

Verification - Implementation

' ** Data verificationIf StrComp( DataTable( "ID", dtLocalSheet ), Parameter.Item( "MsgId" ) ) <> 0 Then

msg = "Message " & Parameter.Item( "MsgId" ) & " was not found."

Reporter.ReportEvent micWarning, "ID", msg

ExitAction( micWarning )

End If

The StrComp function, compares between two string arguments. If the strings are same the return value is 0, otherwise it will be either '-1' or '1'.

For more information please refer to StrComp documentation in QTP help.

The comparison is between the input parameter and the content of ID column.

Page 38: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 38

Checking the title string

' ** Checking title using checkProperty checkpoint

If DataTable( "TitleString", dtLocalSheet ) <> vbNullString Then

With Dialog( "Login" ).Dialog( "FlightReservations" ).

.CheckProperty "title", DataTable( "TitleString", dtLocalSheet ), 1000

End With

End If

The If statement provides flexibility to the reusable action. i.e. what if I don’t want to check the title? : no problem, leave it blank in datasheet.

vbNullString represent an empty string in VBScript. DataTable TitleString is the value in column TitleString.

Page 39: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 39

Checking the message string To check the message string we will use a dynamic

standard checkpoint. Be sure the dialog that contains the text “Please

enter agent name” is displayed. Caution : Only One instance of AUT should be

opened while inserting a checkpoint and recording. Menu : Automation Record Hotkey : F3 Toolbar :

Record

Page 40: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 40

Inserting a dynamic standard checkpoint Insert a standard checkpoint

Menu : Insert Checkpoint Standard Checkpoint. Hotkey : F12 Toolbar :

Page 41: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 41

Inserting a dynamic standard checkpoint

Put the finger point in the message of Flight Reservations dialog.

In the object selection dialog, just press OK.

Page 42: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 42

Inserting a dynamic standard checkpoint

Type

Text ONLY!!!

Select Parameter

Name = Msg

Checkpoint timeout = 2

Page 43: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 43

Inserting a dynamic standard checkpoint

Parameter types

DataTable

Name

MsgString

Location in Data Table

Current Action sheet

Page 44: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 44

Inserting a dynamic standard checkpoint

DataTable( “MsgString”, dtLocalSheet )

After pressing OK

STOP recording!!!

Page 45: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 45

Checking the Message String

The If DataTable statement is required to verify that MsgString column is not empty, in case we want to test it.

' ** Checking message using standard checkpoint

If DataTable( "MsgString", dtLocalSheet ) <> vbNullString Then

Dialog("Login").Dialog("FlightReservations").Static("Msg").Check CheckPoint("Msg")

End If

Page 46: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 46

Checking The message Type

The most important part of the checkpoint, is the location within the script in which you will insert it.

After checking the title code line, be sure that the cursor is now on a new blank line, after the MsgString code line.

To start recording, the dialog Login must be displayed.

Caution : Only One instance of AUT should be opened while inserting a checkpoint and recording.

Page 47: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 47

Inserting a bitmap checkpointSelect Bitmap Checkpoint…

Page 48: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 48

Inserting a bitmap checkpoint Select the icon with the finger pointer. In the “Object Selection” dialog, click OK.

Page 49: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 49

Inserting a bitmap checkpoint

Name : Exclamation

Checkpoint timeout

Page 50: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 50

Inserting a bitmap checkpoint

Dialog("Login").Dialog("FlightReservations").Static("Icon").Check CheckPoint("Exclamation")

The Checkpoint command line will be added automatically to the code.

After pressing OK

STOP recording!!!

Page 51: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 51

Checking The message Type

We have captured a bitmap for an exclamation message type ( vbExclamation or 48 ).

Message Boxes supports 3 more different types – vbInformation (64), vbQuestion (32) and vbCritical (16).

We need to add all the options* in this checkpoint for future implementations.

Find in the AUT different messages types, to add the bitmap checkpoints.

Don’t forget to change the checkpoint name. *Remark: There's no vbInformation type on

Flight Reservation Application.

Page 52: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 52

Checking The message Type' ** Checking icon using bitmap checkpoint

If DataTable( "IconType", dtLocalSheet ) <> vbNullString Then

Select Case CInt( DataTable( "IconType", dtLocalSheet ) )

Case vbExclamation

Dialog("Login").Dialog("FlightReservations").Static("Icon").Check CheckPoint("Exclamation")

Case vbQuestion

Dialog("Login").Dialog("FlightReservations").Static("Icon").Check CheckPoint("Question")

Case vbInformation

Dialog("Login").Dialog("FlightReservations").Static("Icon").Check CheckPoint("Information")

Case vbCritical

Dialog("Login").Dialog("FlightReservations").Static("Icon").Check CheckPoint("Critical")

Case Else

msg = "invalid IconType argument."

Reporter.ReportEvent micWarning, Environment("ActionName"), msg

End Select

End If

IconType column will have a numeric number or will be empty. After checking that the argument is not empty we convert the

string value “16” to value 16. The conversion is done by the CInt Function.

Page 53: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 53

Checking The message Type We learn to capture the bitmap checkpoint for an

exclamation message type (vbExclamation or 48). There will be 3 more bitmap checkpoints need to covered:

vbInformation ( 64 ), vbQuestion (32) and vbCritical (16). Add the remaining 3 checkpoints as explained. Don’t forget to change the checkpoint name.

There's no vbInformation type on

Flight Reservation Application

vbExclamation vbQuestion vbCritical

Page 54: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 54

Click <buttonId> implementation A standard dialog box can have 7 different

command buttons. Our reusable action will have to “deal” with all 7

types, because it is a generic reusable action. The button we need to press is defined in

buttonId column, which is a constant MsgBox number.

For this implementation we will use Descriptive Programming ( DP ).

Page 55: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 55

Click <buttonId> implementation' ** Clicking the button if required according ButtonId

If DataTable( "ButtonId", dtLocalSheet ) <> vbNullString Then

With Dialog( "Login" ).Dialog( "FlightReservations" )

Select Case CInt( DataTable( "ButtonId", dtLocalSheet ) )

Case vbOK : .WinButton( "text:=OK" ).Click

Case vbCancel : .WinButton( "text:=Cancel" ).Click

Case vbAbort : .WinButton( "text:=Abort" ).Click

Case vbRetry : .WinButton( "text:=Retry" ).Click

Case vbIgnore : .WinButton( "text:=Ignore" ).Click

Case vbYes : .WinButton( "text:=Yes" ).Click

Case vbNo : .WinButton( "text:=No" ).Click

Case Else

msg = "invalid ButtonId argument."

Reporter.ReportEvent micWarning, Environment( "Action Name" ), msg

End Select

End With

End If

For more information about the button id values see : Messages Datasheet

Page 56: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 56

CheckDialog – Final Look ( 1 )

Page 57: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 57

CheckDialog – Final Look ( 2 )

Page 58: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 58

CheckDialog – Final Look ( 3 )

Page 59: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 59

CheckDialog – Final Look ( 4 )

Don’t forget to activate the Check Syntax feature. Menu : Tools Check Syntax or Ctrl + F7

Page 60: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 60

Create Req0003 Test

Open a new blank Test and save it under Tests\Req0003

Req0003

LIB

RA

TESTS

RS

DOC

FR

DAT

SETTING

RES

BATCH

ENV

Automation

BL

GL

Page 61: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 61

Test Settings

Modify The Test Settings…

Page 62: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 62

Associated function libraries

Pls. Verify the associated library relative path is defined in the resources tab. Otherwise see presentation no.5 topic Associating function libraries

Page 63: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 63

Implementing Test Req0003

The Initialization part is exactly the same for all tests.

Option Explicit

Dim msg

Call Initialization()

If Reporter.RunStatus = micFail Then

msg = "Initialization Process Failed."

Reporter.ReportEvent micFail, Environment( "TestName" ), msg

ExitTest( micFail )

End If

Page 64: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 64

Implementing Test Req0003

A call to function InvokeApp is required to activate the executable file.

' ** invoking application

Call InvokeApp( Environment.Value( "EXE_FILE" ) )

If Reporter.RunStatus = micFail Then

msg = "Invoke Application Failed."

Reporter.ReportEvent micFail, Environment( "TestName" ), msg

ExitTest( micFail )

End If

Page 65: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 65

Insert a Call to Existing Action

Page 66: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 66

Insert a Call to Business Module

Page 67: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 67

Insert a Call to Existing Action

After the current step

Use relative path

busLogin

Page 68: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 68

Req0003 Test – Final Look

Do not forget to check syntax before closing action

Page 69: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 69

Result Req0003

Page 70: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 70

What’s Next?

Creating a Set using Test Batch Runner Utility.

Creating a Set using Mercury Test Manager.

Page 71: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 71

Special Thanks To

Tali Hizkia from Israel, Tel-Aviv. Paul Grossman from USA, Chicago. Dalvinder Matharu from USA, San Jose. Mike Manchester from USA, Bolivar. Joydeep Das from India, Hyderabad. Prakash Kumar from India, Pune. Richi Sharma from USA, New Jersey Bharathi Babu from India, Pune

Page 72: Dani Vainstein & Monika Arora Gautam 1 Requirement - Req0003 Implementation of Requirement Req0003

Dani Vainstein & Monika Arora GautamDani Vainstein & Monika Arora Gautam 72 72

Make sure to visit us for: Tutorials Articles Projects And much more

@www.AdvancedQTP.com