|
Background
The
Oracle CRM On Demand
system is a Web 2.0 type application that is seeing
wide distribution and use.
The Oracle CRM application is accessed 100% via a browser.
In terms of performing functional/regression and/or load testing of the application
we note the following characteristics:
Worked Example Plan and Explanation
The goal of the worked example is to illustrate how a successful eValid recording
made from life using a simple AJAX recording protocol
can be incrementally upgraded into a structural test,
and then into a geometric test.
Test Plan
The test plan for the example illustrative use of the Oracle CRM On Demand
site is as follows, described in terms of the action that the user is to
take on each successive page.
[Click on the picture to see the screen that corresponds to each step.]
AJAX Recording Protocol
The recording protocol used to create script "A" was the following:
You can see this protocol reflected in the scripts below, where the last part of each step shows a SyncOnText command that assures synchronization before going on to the next step.
Script Characteristics
In addition to the ususal characteristics of an eValid test playback
such as strict preservation of the user perspective
and the accuracy of internal timing data,
there are two very important other aspects of this example:
Script Sequence
Here is the script that matches the above test plan and which follows the specified
# Recording by eValid V9 Build #305, Build Date: (Feb 2 2011) # Copyright (c) 2010 by Software Research, Inc. # Recording made on: Microsoft Windows Vista ProjectID "Project" GroupID "work" TestID "oracleCRMA" LogID "AUTO" ScreenSize 1680 1050 FontSize 2 DeleteCache DeleteCookies # ---------------------------------------------------------------------- # (1) Navigate to starting (login ) page... # ---------------------------------------------------------------------- InitLink "https://secure-ausomxima.crmondemand.com/OnDemand/logon.jsp?re" \ "ason=logoff&lang=enu&type=normal" Wait 11003 SyncOnText 0 "Password" "" # ---------------------------------------------------------------------- # (2) Enter login credentials... # ---------------------------------------------------------------------- Wait 16041 InputValue 0 41 "TEXT" "" "j_username" "SOFTRCH10/NG@SR-CORP.COM" "" "" Wait 3706 InputValue 0 46 "TEXT" "" "j_password" "evalid+test" "" "" Wait 1626 FollowLink 0 61 "Sign In" "javascript:void(0)" "" Wait 34279 SyncOnText 0 "Opportunity Metrics" "number:0" # ---------------------------------------------------------------------- # (3) Validate (Welcome) page and proceed to input a Search for Contacts... # ---------------------------------------------------------------------- Wait 10441 ValidateSelectedText 0 104 0 "Qualified Lead30.00 USD" "number:0" Wait 4765 ElementFocus 0 119 "GlobalSearchMultiField.Last Name_Shadow" "" "" ElementMouseUp 0 119 "GlobalSearchMultiField.Last Name_Shadow" "" "" Wait 3473 InputValue 0 119 "TEXT" "GlobalSearchMultiField.Last Name_Shadow" "Globa" \ "lSearchMultiField.Last Name_Shadow" "Francis" "" "" Wait 756 ElementClick 0 139 104 278 "GoButton" " Go " "" NAV Wait 8095 SyncOnText 0 "Number of records displayed:" "" # ---------------------------------------------------------------------- # (4) Select Account detail from resulting Contact List... # ---------------------------------------------------------------------- FollowLink 0 505 "ACME Computer Parts" "javascript:void(0)" "" Wait 12268 SyncOnText 0 "Annual Revenues$1,500,000,000.00" "" # ---------------------------------------------------------------------- # (5) Click on "Contacts" TAB item to reveal Contacts Homepage... # ---------------------------------------------------------------------- # Requires Absolute MouseClicks F11 (cl=relative to browser window) # on TABs area across the top of the page... Wait 6916 WindowPos 0 4 3 1104 988 clLClick 0 524 52 0 Wait 1203 SyncOnText 0 "Contact Analysis By Account" "" # ---------------------------------------------------------------------- # (6) Click on "Show Full List" link to reveal Activities List... # ---------------------------------------------------------------------- Wait 8362 FollowLink 0 379 "Show Full List" "https://secure-ausomxima.crmondemand.com/" \ "OnDemand/user/ContactTaskList?O" \ "MTGT=ContactTaskList&OMTHD=showlist&ContactTaskList.OBJECT=Contact" \ "&ContactTaskList.LAYOUT=MyOpenContactTasksList" "" Wait 6842 SyncOnText 0 "Activities List" "" # ---------------------------------------------------------------------- # (7) Click on a selected "Subject" link to reveal Task Detail... # ---------------------------------------------------------------------- FollowLink 0 518 "Prepare Proposal for Big Industries" "javascript:void(0)" "" Wait 8236 SyncOnText 0 "Task Detail" "" # ---------------------------------------------------------------------- # (8) Click on "New" BUTTON to perform a Task Edit... # ---------------------------------------------------------------------- # Requires Absolute MouseClicks F11 (cl=relative to browser window) # on top row type buttons... clLClick 0 301 101 0 NAV Wait 7487 SyncOnText 0 "Description" "" # ---------------------------------------------------------------------- # (9) Input "Description" textbox field info and Click "Cancel" BUTTON... # ---------------------------------------------------------------------- InputValue 0 500 "TEXTAREA" "TaskEditForm.Comment" "TaskEditForm.Comment" "" \ "hello, testing" "" "" Wait 5035 # Requires Absolute MouseClicks F11 (cl=relative to browser window) # on bottom row type buttons... clLClick 0 406 542 0 NAV Wait 7221 SyncOnText 0 "Attachments" "" # ---------------------------------------------------------------------- # (10) Click on "Sign Out" link to logout... # ---------------------------------------------------------------------- FollowLink 0 58 "Sign Out" "javascript:doLogOut()" "" SyncOnText 0 "User Sign In ID" "" # Recording stopped at: <2011/02/04 17:56:43>
Adjustment of Step 5 To Structural Test Sequence
Here is the manual modification of the "from life" recording
that converts Step 5 into a pure-structural type test.
The absolute click is replaced by first finding the location of the
element, starting from the top of the page and moving downwards,
and then following the link that is found there.
The pivot here is a DOM element with id equal to tab4.
# ---------------------------------------------------------------------- # (5) Click on "Contacts" TAB item to reveal Contacts Homepage... # ---------------------------------------------------------------------- # Requires Absolute MouseClicks F11 (cl=relative to browser window) # on TABs area across the top of the page... Wait 6916 # ******** # ******** WindowPos 0 4 3 1104 988 # ******** clLClick 0 524 52 0 # ******** IndexSet 0 IndexFindElement 0 DOWN "id" "tab4" "" IndexFollowLink 0 "" # ******** Wait 1203 SyncOnText 0 "Contact Analysis By Account" ""
Adjustment of Step 8 Geometric Test Sequence
Here is the manual modification of the "from life" recording
that converts Step 8 into a pure-geometric type test.
The absolute click is replaced by first finding the location of the
phrase "Task Details" on the page,
beginning at the top of the page and moving downwards,
moving the sourceIndex +5 positions (down the page),
and then following the link at that location.
# ---------------------------------------------------------------------- # (8) Click on "New" BUTTON to perform a Task Edit... # ---------------------------------------------------------------------- # Requires Absolute MouseClicks F11 (cl=relative to browser window) # on top row type buttons... # ******** # ******** clLClick 0 301 101 0 NAV # ******** IndexSet 0 IndexFindElement 0 DOWN "innerText" "Task Details " "" IndexMove +5 IndexFollowLink 0 "" # ******** Wait 7487 SyncOnText 0 "Description" ""
Adjustment of Step 9 Geometric Test Sequence
Here is the manual modification of the "from life" recording
that converts Step 9 into a pure-geometric type test.
The absolute click is replaced by first finding the location of the
phrase "Cancel" on the page,
beginning from the bottom of the page and searching upwards,
and then following the link at that location.
# ---------------------------------------------------------------------- # (9) Input "Description" textbox field info and Click "Cancel" BUTTON... # ---------------------------------------------------------------------- InputValue 0 500 "TEXTAREA" "TaskEditForm.Comment" "TaskEditForm.Comment" "" \ "hello, testing" "" "" Wait 5035 # ******** # ******** clLClick 0 406 542 0 NAV # ******** IndexSetEnd 0 "" IndexFindElement 0 UP "innerTest" " Cancel " "" IndexFollowLink 0 "" # ******** Wait 7221 SyncOnText 0 "Attachments" ""
Result of Script Execution
Here is the
Playback Summary for the fully modified script as described above,
run with a delay multiplier of 0.