1 / 57

Requirement Req0002

Requirement Req0002. Implementation of Requirement Req0002. 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 follow :. 1. 2. Click. Topics covered.

xuan
Télécharger la présentation

Requirement Req0002

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Requirement Req0002 Implementation of Requirement Req0002 Dani Vainstein & Monika Arora Gautam

  2. 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 follow : 1 2 Click Dani Vainstein & Monika Arora Gautam

  3. Topics covered • Extending functionality on existing modules. • Process design of a test. • Build a new function. • Adding single object to local repository. • Checking single and multiple properties on an object. • Standard and bitmap checkpoints. • Create an initialization action. • Create a generic login procedure. • Call to an existing reusable-actions. • Build a new test. Dani Vainstein & Monika Arora Gautam

  4. Before You Start… • Before starting the presentation, read about the following topics in QTP help. • Window/Dialog Object - Exist Property. • Window/Dialog Object - Activate Method. • Reporter Object. • Environment Object. • SystemUtil.Run Method. • Exit Statement. • Const/Dim Statement. • Select Case Statement. • Desktop.CaptureBitmap Method. • CheckProperty Method. Dani Vainstein & Monika Arora Gautam

  5. Before You Start… • Before starting the presentation, read about the following topics in QTP help. • If…End If Statement. • vbNullString Constant. • Object CheckProperty Method. • WinEdit, WinButton, Static Objects. • Standard Checkpoint. • Bitmap Checkpoint. • Checkpoint Properties. • Call to an Existing Action. Dani Vainstein & Monika Arora Gautam

  6. Req0002 - Overview • User performs following testing on the ‘Login’ dialog. • Before the user starts to enter any data : • Req0002a - Label “Agent Name” is visible. • Req0002b - Textbox “Agent Name” should be empty, enabled and focused. • Req0002c - Label “Password” is visible. • Req0002d - Textbox “Password” is empty and enabled. • Req0002e - Command Button “OK” is enabled. • Req0002f - Command Button “Cancel” is enabled. • Req0002g - Command Button “Help” is enabled. • Req0002h - Logo is displayed. Dani Vainstein & Monika Arora Gautam

  7. Req0002 - Overview Details Label displayed Logo Textbox empty Enabled and focused Label displayed Textbox empty and enabled Command button Enabled. Command button enabled Command button enabled Dani Vainstein & Monika Arora Gautam

  8. Failed Failed Passed Passed Report micFail Report micFail Report micPass Report micPass Req0002a Req0002h Process Design – Req0002 InvokeApp Function Start Invoke App Dialog Login Exists? Yes No Report micFail ExitTest End Dani Vainstein & Monika Arora Gautam

  9. Process Design – Req0002 • First we need a regular invoke application process • Then we need to verify that the “invoke application” process was done successful, before accessing the dialog. • If the process failed, it means the login dialog wasn’t displayed and hence test is failed so there is no point to continue testing. • Then the Req0002 process starts from Req0002a to Req0002h Dani Vainstein & Monika Arora Gautam

  10. Building a Generic Function - Application Invoke Process • To implement the invoke application process we are going to use a function ( Utils Layer ). • Why a function for invoke application? We are assuming that this process is necessary for all the tests. Dani Vainstein & Monika Arora Gautam

  11. Analyzing FR Application scenarios invoke Dani Vainstein & Monika Arora Gautam

  12. Activation Conditions • If “Flight Reservation” (main) main window is already displayed, don’t activate the executable file. We want to avoid multiple application instances. • If the “Login” dialog is already displayed, don’t activate. We want to avoid multiple application instances. • If “Login” dialog is NOT displayed AND the “FlightReservation” window is NOT displayed  activate Flight4x.exe. • Main Flight Reservation window and login are opened. This scenario case can never happened. Dialog “Login” and “Flight Reservation” window can’t be opened at the same time. Dani Vainstein & Monika Arora Gautam

  13. Avoid This!!! Application invoke considerations. • The main thing we want to avoid when running scripts on Flight Reservation, is multiple instances of Flight Reservation application. Therefore we need the InvokeApp Function. Dani Vainstein & Monika Arora Gautam

  14. Application invoke considerations. • InvokeApp function covers the following functionality • The function should check that no other instance/s are already open. • The function should contain generic process assuming that the application instance is probably open and working accordingly. • The function should also check a successful activation of the executable. Dani Vainstein & Monika Arora Gautam

  15. <version> Start Dialog Login Exists? Flight Reservation Exists? No No Invoke App Yes Dialog Login Exists? Yes Report micFail End End End False False True InvokeApp Design Dani Vainstein & Monika Arora Gautam

  16. Automation FR LIB RA BL GL RS DOC DAT SETTING Fr.vbs TESTS RES BATCH ENV Adding Functionality to existing module • Open the function library FR.vbs • Menu : File  Open  Function Library • Hotkeys : Shift + Alt + O Dani Vainstein & Monika Arora Gautam

  17. Creating InvokeApp Function execVersion By value Function Name: InvokeApp Type: Function Scope: Public Description Documentation Dani Vainstein & Monika Arora Gautam

  18. InvokeApp – Initialization '@Description Invokes application flight reservation version xx '@Documentation Invokes application flight reservation <execVersion> Public Function InvokeApp( ByVal execVersion ) Dim execPath, msg ' local variables ' initialization InvokeApp = False • Initialize the function to false, as a default return value of the function Dani Vainstein & Monika Arora Gautam

  19. InvokeApp – Condition 1 ' ** condition 1 - Window displayed don't activate executable If Window( "regexpwndtitle:=Flight Reservation" ).Exist( 0 ) Then Window( "regexpwndtitle:=Flight Reservation" ).Activate micLeftBtn msg = "Flight Reservation is already displayed." Reporter.ReportEvent micDone, "InvokeApp", msg ExitFunction EndIf • Since we are using a generic function we are using Descriptive Programming ( DP ). • If the “Flight Reservation” window exists, the window will be activated and a general message will be sent to the Reporter. Dani Vainstein & Monika Arora Gautam

  20. InvokeApp – Condition 2 ' ** condition 2 - Dialog Login is displayed don't activate executable If Dialog( "text:=Login","nativeclass:=#32770" ).Exist( 0 ) Then Dialog( "text:=Login","nativeclass:=#32770" ).Activate micLeftBtn msg = "Dialog Login is already displayed." Reporter.ReportEvent micDone, "InvokeApp", msg ExitFunction EndIf • If the “Login” dialog exists, the dialog will be activated and a general message will sent to the Reporter. Dani Vainstein & Monika Arora Gautam

  21. InvokeApp – Invoke executable ' ** invoking executable... execPath = Environment( "ProductDir" ) & APP_PATH ' build path... SystemUtil.Run execVersion, vbNullString, execPath, "open" • Before using SystemUtil.Run method, we need to build the path of the executable, as the Run method requires this argument. Dani Vainstein & Monika Arora Gautam

  22. InvokeApp Function If Dialog( "text:=Login","nativeclass:=#32770" ).Exist( 5 ) = FalseThen msg = "Dialog 'Login' is not displayed after 5 seconds." Reporter.ReportEvent micFail, "ApplicationException", msg ExitFunction EndIf InvokeApp = True ' Application was invoked • Immediately after invoking, we’ll check that “Login” exists, with a max wait of 5 seconds, just in case… • If the dialog didn’t show up after 5 seconds, this can be a defect, we fail the test, and exit the function. • If the dialog exists, the function will return True. Dani Vainstein & Monika Arora Gautam

  23. InvokeApp – Final Look • Add the function InvokeApp to File library. • Save the function library • You should have 2 functions. Dani Vainstein & Monika Arora Gautam

  24. Creating new step • Open guiLogin test and add a new step Case“req0002”( remember to write the string in lower case ) Dani Vainstein & Monika Arora Gautam

  25. Implementing Req0002a Dialog( "Login" ).Static( "AgentName" ).CheckProperty "visible", True, 1000 ' ** Req0002a • Req0002a uses the CheckProperty method of static, with argument “visible”, value True • The method will auto-report to Reporter object. Dani Vainstein & Monika Arora Gautam

  26. Implementing Req0002b • Req0002b checks 3 properties on 1 object viz. enabled, focused and text. It is recommended to use checkpoint for this purpose. • However, many QTP developers prefer to use various CheckProperty methods instead of a checkpoint, because of the complexity and portability issue of managing checkpoints. • This problem will be solved on QTP 9.5 • Before starting to record, the Login dialog must be displayed. Make sure that only one instance of Flight Application is opened. Dani Vainstein & Monika Arora Gautam

  27. Record Inserting a Standard Checkpoint • Start Recording : • Menu : Automation  Record. • Hotkey : F3 • From toolbar as shown below: Dani Vainstein & Monika Arora Gautam

  28. Insert Standard Checkpoint • Menu : Insert  Checkpoint  Standard Checkpoint… • Hotkey : F12 • Toolbar as shown below: Dani Vainstein & Monika Arora Gautam

  29. Insert Standard Checkpoint • With the finger-point select the “Agent Name” WinEdit object. Dani Vainstein & Monika Arora Gautam

  30. Insert Standard Checkpoint Name : Req0002b Except property enabled, text and focused, All the other properties must be Unchecked!! enabled = True focused = True text = Timeout = 2 Dani Vainstein & Monika Arora Gautam

  31. Implement Req0002b Dialog( "Login" ).WinEdit("AgentName").Check CheckPoint( "Req0002b" ) ' ** Req0002 • Anytime you can mark the word Checkpoint and see the checkpoint properties. Dani Vainstein & Monika Arora Gautam

  32. Implementing Req0002c Dialog( "Login" ).Static( "Password" ).CheckProperty "visible", True, 1000 ' ** Req0002c • Req0002c uses the CheckProperty method of Static object, with argument “visible”, value True • The method will auto-report to Reporter object. Dani Vainstein & Monika Arora Gautam

  33. Implementing Req0002d Dialog("Login").WinEdit( "Password" ).CheckProperty "enabled", True, 1000 ' ** Req0002d Dialog("Login").WinEdit( "Password" ).CheckProperty "text", vbNullString, 1000' ** Req0002d • Req0002d uses the CheckProperty method of WinEdit, with argument “enabled” value True, and “text” with value vbNullString ( represents an empty string ) • Instead of using checkpoint we can alternatively add 2 CheckProperty methods. Dani Vainstein & Monika Arora Gautam

  34. Dialog( "Login" ).WinButton( "OK" ).CheckProperty "enabled", True, 1000 ' ** Req0002e Dialog( "Login" ).WinButton( "Cancel" ).CheckProperty "enabled", True, 1000 ' ** Req0002f Dialog( "Login" ).WinButton( "Help" ).CheckProperty "enabled", True, 1000 ' ** Req0002g Req0002e, Req0002f, Req0002g • The requirement is only to check if they are enabled. don’t check any property that is not required. • The method will auto-report to Reporter object. Dani Vainstein & Monika Arora Gautam

  35. Implementing Req002h • After req0002h press ENTER to move to next line. • In the end off the following line press enterDialog("Login").WinButton("Help").CheckProperty "enabled", True, 1000 • Make sure the cursor is on a new blank line, and then start recording. • Before you start recording, make sure dialog Login is displayed. and only one instance of the application is opened. Dani Vainstein & Monika Arora Gautam

  36. Inserting a bitmap checkpoint Select Bitmap Checkpoint… Dani Vainstein & Monika Arora Gautam

  37. Inserting a bitmap checkpoint • Select The Logo with the finger point. • Select the Static and Click OK Dani Vainstein & Monika Arora Gautam

  38. Inserting a bitmap checkpoint • Change the name of the checkpoint to “Logo”. • Change the checkpoint timeout to 2 seconds. • Click OK. Dani Vainstein & Monika Arora Gautam

  39. ' ** Checking the logo using bitmap checkpoint req0002h Dialog( "Login" ).Static( "Logo" ).Check CheckPoint( "Logo" ) Inserting a bitmap checkpoint STOP recording • The checkpoint syntax will be inserted automatically at mentioned location. Dani Vainstein & Monika Arora Gautam

  40. Req0002 ( guiLogin ) – Final Look Dani Vainstein & Monika Arora Gautam

  41. Implement Business Action for Req0002 • Open the busLogin test. • Select the busLoginMng action. • Insert a new test-case after case “req0001”. • Use lower-case ( Case “<lower-case>” ) SelectCaseLCase( Parameter.Item( "busCode" ) ) Case "req0001" : Case "req0002" CaseElse msg = "ActionCode parameter not implemented." Reporter.ReportEvent micWarning, "NotImplemetedException", msg ExitAction( micWarning ) EndSelect Dani Vainstein & Monika Arora Gautam

  42. Business Req0002 implementation • According our design [ Process Design – Req0002 ] we need to invoke the application and then call the GUI process Req0002, We’ll call InvokeApp function from the test layer • What’s left now, is to call the “Req0002” GUI process located in guiLogin. Dani Vainstein & Monika Arora Gautam

  43. busLoginMng – Final Look • As mentioned in previous presentation do not just copy this line of code, a call to an existing reusable action is required. • add the input parameter “Req0002”,while calling the existing action guiLogin. Dani Vainstein & Monika Arora Gautam

  44. Automation FR LIB RA BL GL RS DOC DAT SETTING Req0002 TESTS RES BATCH ENV Create Req0002 Test • Open a new blank test and save it under TESTS\Req0002 Dani Vainstein & Monika Arora Gautam

  45. Test Settings • Modify the test settings… Dani Vainstein & Monika Arora Gautam

  46. Associated function libraries • If you don’t see the LIB\FR.vbs file associated you must to permanently associate the function library; For instructions how to permanently associate function libraries, see previous presentation. Dani Vainstein & Monika Arora Gautam

  47. Test Header '*********************************************************************** '@Author : advancedQTP '@Date Created : <ddd MMM dd, yyyy> '@QTP Version : 9.2 '@Description : The test covers the requirement Req0002 '@Input Parameter : None. '@Out Parameter : None. '@Ass. Libraries : FR.vbs '@Addins : ActiveX '@Modifications : <#n By <Name>, Date: <dd-mmm-yyyy>> (Later modification on top) ' <#n-1 By <Name>, Date: <dd-mmm-yyyy> '*********************************************************************** Dani Vainstein & Monika Arora Gautam

  48. Implementing Test Req0002 Option Explicit Dim msg Call Initialization() If Reporter.RunStatus = micFail Then msg = "Initialization Process Failed." Reporter.ReportEvent micFail, Environment( "TestName" ), msg ExitTest( micFail ) EndIf • The Initialization part is exactly the same for all tests. Dani Vainstein & Monika Arora Gautam

  49. Implementing Test Req0002 ' ** 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 ) EndIf • A call to function InvokeApp is required to activate the executable file. Dani Vainstein & Monika Arora Gautam

  50. Insert a Call to Existing Action Dani Vainstein & Monika Arora Gautam

More Related