Your e-Business Quality Partner eValid™ -- Automated Web Quality Solution
Browser-Based, Client-Side, Functional Testing & Validation,
Load & Performance Tuning, Page Timing, Website Analysis,
and Rich Internet Application Monitoring.

eValid -- Oracle CRM On Demand -- Example #1
eValid Home

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.]

  1. Navigate to the login page. [Picture 1]
  2. Provide the login credentials. [Picture 2]
  3. Arrive at the Welcome page then input a Search in Contacts. [Picture 3.1] [Picture 3.2]
  4. Select an Account from the Contact List page. [Picture 4.1] [Picture 4.2]
  5. Navigate TAB for the Contacts Homepage page. [Picture 5]
  6. Arrive at the Activities List page and Show Full List. [Picture 6.1] [Picture 6.2]
  7. Select a Subject from the Activities List page. [Picture 7.1] [Picture 7.2]
  8. Arrive at the Task Detail page and click the New BUTTON. [Picture 8.1] [Picture 8.2]
  9. Arrive at the Task Edit page, Input text info, and click the Cancel BUTTON. [Picture 9]
  10. Return to the Task Detail page to logout. [Picture 10.1] [Picture 10.2]

AJAX Recording Protocol
The recording protocol used to create script "A" was the following:

  1. Wait for a page to stabilize before starting action(s).
  2. Highlight some visible text on the page that is newly arrived to assure synchronization.
  3. Take the action(s) that leads to the next page.
  4. Record a SyncOnText command using the GUI pulldown eValid: Record > Validate > & Synchronize > Text String afterwards to assure action completion.
  5. Go back to Step A.

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.