Pages

Ads 468x60px

Labels

Showing posts with label Performance Testing. Show all posts
Showing posts with label Performance Testing. Show all posts

Tuesday 20 November 2012

Oracle R12 Applications Using LoadRunner

The Challenge

We recently load tested our first Oracle R12 release (All modules for nationwide and international wide of Oracle ERP R12). The company was upgrading to R12 from 11.5.8 largely for performance reasons.

We knew we’d be “cutting new ground” with LoadRunner on R12. This became evident with our first testrecord-and-playback, which failed even after finding and fixing all the missing correlations. We raised a ticket with HP (SR# #4622615067), and with their initial help, step by step we overcame all the nuances of coaxing vugen to record successfully, and then creatively working around its inability to recognize the full set of identifiers for a new java ITEMTREE object.

This Practical Solution describes the challenges we encountered and how we overcame them. See the

Technical Issues and Solutions section for the gory details.

Before You Start

As with 11i, remember that you must expose “Oracle Developer Names*” on the instance before

recording. There’s an HP technote on this, but here are the steps:

  • Launch Oracle application
  • Login with Administrator privileges
  • Select the role “System Administrator”. If you don’t have this role, you don’t have the rights to do this
  • Select the option “Profile: System”
  • Search for the following profile option: “ICX: Forms Launcher” (Search for a specific user to change only the settings for one user);
  • Append this string to the end URL: “?play=&record=names”;
  • Save and close.

* Failure to do this will result in generic field names that make scripting much more difficult and harder to

maintain.

Lessons Learned

  • HP Support can help
  • Oracle Metalink documents provide good info on R12 architecture and configuration
  • If VUGen stumbles on a new object, try the QTP Object Spy
  • R12 can be installed in two distinct communication modes; make sure it’s in the more efficient “Socket    mode” before you beginning scripting
  • Porting scripts is a pretty common requirement – save crucial time at “show time” by parameterizing the instance-specific values up-front

Technical Issues and Solutions

 

Issue1: Playback failure on nca_object_action statements

Following the nca_connect statement there are two statements of this form:

nca_java_action (“SR_DUP_GRID_DUP_GRID_0″,)

On playback, the script invariably fails at the first of these.

Practical Solution:

In each script directory, open the default.cfg file and in the [NCA_GENERAL] section add this line:

NCATimerWaitMode=0

Playback will now successfully process nca_object_action statements.

 

 

 

 

Issue2: Java Runtime version and memory setting

Oracle R12 now loads the JInitiator file (runtime program for executing the Oracle java applet) from the

Java JRE, instead of downloading it during the Oracle initialization process or installing it on your PC separately. Also, Forms 10g needs more desktop memory than Forms 6 to perform reasonably.

Practical Solution:

Upgrade the Java JRE to version 1.0.0_05 or later. Moreover, allocate at least 512 MB of memory, using the Java Control Panel, and add the parameter:

–mx512m –Dcache.size=500000000.

Issue3: The correlation of ncx_ticket is different from 11i

In 11i, the correlation rule to correlate the key Oracle Forms session id, ncx_ticket, yields a web_reg_save_param statement with these left and right boundaries:

web_reg_save_param (“ICX_Ticket”, “LB=icx_ticket=”, “RB=’”, LAST);

In R12, a new suffix appears on the LB and a there is a new RB:

web_reg_save_param (“ICX_Ticket”, “LB=icx_ticket&gv15=”, “RB=&“,LAST);

Practical Solution:

In the Recording Settings, modify the OracleApps ‘icx’ correlation rule with the above LB and RB

to enable vugen to properly correlate icx_ticket automatically.

 

 

Issue4: Failure to recognize certain new java objects on record

QTP has issues recording an R12 object called an ITEMTREE which was a list of expandable items that

look like this:

+40907824 ITEM1

+40907839 ITEM2

The following statements resulted after selecting an item during recording, but these would not play back:

nca_tree_select_item (“ITEMTREE_ITEMTREE_0″, “40907824 ITEM1 “);

nca_tree_activate_item(“ITEMTREE_ITEMTREE_0″, “40907824 ITEM1 “);

If you encounter this object, or any other new object that vugen has trouble with, this tip may get you

around the recording limitation.

Practical Solution:

We used QuickTest Pro’s ObjectSpy to examine the ITEMTREE object and found that each menu

item had a reference number that is selectable and plays back correctly. We then modified the

VUgen code with the correct reference numbers:

nca_tree_select_item(“ITEMTREE_ITEMTREE_0″, “409“);

nca_tree_activate_item(“ITEMTREE_ITEMTREE_0″, “409“);

This reference number is listed in the detail log files if you look carefully but they were not obvious

during recording, but we recommend using ObjectSpy if you encounter any other objects that

VUgen doesn’t handle correctly.

 

Issue5: Porting scripts between environments

A common situation is that you must develop scripts in one environment but conduct testing in another.

This requires that your scripts be portable across environments.

Practical Solution:

There are several values that need to be parameterized in order to make your scripts portable.

Parameterize and test these as early as possible to avoid frantic porting at test execution time!

The values to parameterize are:

1. Base URL or app server ip

2. Web server port number which you initially connect to for login authentication

3. Forms server port number, which the nca_connect sues to connect to the Forms server

4. Configuration (“config” value in nca_connect)

5. Module (second ‘path’ value in nca_connect)

Examples of where these are used:

/*initial Oracle launch*/

web_browser (“UnysisERPR12.com:8050“,

DESCRIPTION,

ACTION,

“Navigate=http ://{ app_srv} :{ port_web}/”,

LAST);

/*Forms server connect*/

nca_connect_server (“{app_srv}“, “{port_forms}“,

“module=/ebstop/{module}/apps/apps_st/appl/fnd/12.0.0/forms/US/FNDSCSGN fndnam=APPS

record=names config=’{config}‘ icx_ticket=’.{ICX_Ticket}..’

resp=’AR/CAN_CUSTOMER_MASTER_ADMIN’ …”);