Introduction
Oracle E-Business Suite (EBS) is widely used across organizations for integrating many different modules seamlessly into one system for easy use. It is a comprehensive suite of integrated business applications which enhance productivity, reduce overall costs. It allows customisation and automation of many processes and comes after SAP in the ERP market. EBS Performance Testing using LoadRunner is absolutely necessary to ensure overall effectiveness across multiple components, interfaces, modules before it goes to Production. Performance test results confirm that existing server hardware and software can scale to support its global user base within specified response time. If any bottlenecks that need to be diagnosed early and resolved before impacting end-users. Many performance testing tools support EBS like OATS, LoadRunner, Neoload, RPT with BSD Oracle Apps Extension.
Industry standard best performance testing product with over 70% of market share, Load Runner supports EBS using two different communication mechanisms, Oracle-Web & NCA. Customers can now accurately test and monitor system to ensure high performance, scalability and availability. Performance testing of EBS Application is different from other protocol adaptors. This paper details on recording, replaying tips using Load Runner and best practices that can be implemented while conducting EBS Performance testing.
EBS Performance Testing using LoadRunner:
- Oracle-Web (Web Applications 11i) Oracle Applications interface that performs actions over
Web-HTTP/HTML protocol. It detects actions on both LoadRunner-API and JavaScript levels. - Oracle-NCA (with Web HTTP/HTML-dual) Oracle 3-tier architecture consisting of Java client, Web server and database. Vugen records and replays NCA communication between Client and Forms server.
Starting Performance Testing using LoadRunner consider NCA protocol handles communication with Forms server- uses browser to launch database client & perform actions on NCA database using applet viewer. End-user sends http call from browser to web server. That call accesses startup HTML page which invokes applet viewer. Client (applet viewer) communicates through proprietary NCA protocol with application server (Forms server) which submits information to database server.
NCA is commonly used as a multi-protocol in combination with Web (HTTP/HTML). If recorded with NCA as single protocol, web events will be made for all requests but steps will not be generated and has flexibility to regenerate script in Vugen to add web requests without re-recording.
Tips: Record first with Oracle-Web, understand generated request, later record other scripts using NCA Single protocol. Call common functions like login, responsibility, logout then make necessary changes on roles, responsibilities section as required. Reusing functionality concept will ensure overall scripting effort less. Understanding of all parameters are absolutely required (EBS being a packaged, secure application with multiple associated parameters).
Points to consider prior to Recording Scenario
1. Use URL method for recording.
2. While recording an NCA script:
- Close all browsers before recording.
- Record login, logout procedure in vuser_init & vuser_end, a business process in Action section.
- Vugen supports recording of Form application using Forms Listener Servlet in multi-protocol mode. Application server uses Forms Listener Servlet to create a runtime process for each client. Runtime process and Forms Server maintains a persistent connection with client and sends information to and from server.
3. Business processes identification: Ensure that only Business critical processes will be performance tested. If EBS is customized, it’s important to test that too. Ideally, Most frequently used business processes Processes critical to success of business Customized processes
4. Production like: It is recommended to work with a copy of production data for accurate & realistic results.
5. By default NCA records, the application using standard object id instead of object names. If recorded using object ids, script replay will fail (fragile) due to dynamically server generated value will differ every time. Please verify: nca_connect_server(“IP”,”Port”/*version=*/,”module userid= fndnam=apps record=names”);
If record=names argument does not appear in nca_connect_server function that means recording is occurring with object ids. Vugen will record script with object names by modifying one of following ways:
I. ICX: Forms Launcher:
Best, easiest approach, this will modify at user level not at site level which affects all users. Following steps to configure “ICX: Forms Launcher” profile.
- Sign on to application using “System Administrator” responsibility.
- Select Profile/System from Navigator.
- Find System Profile Values :
- Users = < user logon>
- Enter Profile =%ICX%Form%Launch%
- Click Find.
- Update User value to ICX:Forms Launcher profile:
- If no parameter has been passed to URL, append following string to end of URL of user value: ?play==;record=names
- If a parameter has been passed to URL, append following string to end of URL of user value: =;play==;record=name
- Save transaction, Exit Forms session & Log out Oracle web session.
Case1: Current URL->: http://appsserver.com:Port/forms/frmservlet?config=port Updated URL ->: http://appsserver.com:Port/forms/frmservlet?config=port&record=names
Case2: Current URL ->: http://appsserver.com:Port/forms/frmservlet Updated URL ->: http://appsserver.com:Port/forms/frmservlet?record=names
- Otherwise, open Application Developer responsibility, select updatable option for ICX_FORMS_LAUNCHER profile. First parameter passed to URL must begin with a question mark (?) and all subsequent parameters with an ampersand (&)
II. Startup HTML File
Another approach by setting record=names flag in startup HTML file. This file is loaded while starting NCA application.
Steps are:
- Edit startup file when applet viewer begins by modifying below line: <PARAM name=”serverArgs … fndnam=APPS”>
- Add Oracle key record=names as below: <PARAM name=”serverArgs … fndnam=APPS record=names”>
Forms Configuration File: If application has a startup HTML file that references a Forms Web CGI configuration file- formsweb.cfg , may encounter problems after adding record=names to startup file. On that case, modify configuration file. Drawback in editing this file instead of servlet configuration file formsweb.cfg, it will be replaced after reinstalling Oracle Forms. To bypass, create a copy of basejini.htm file, store it in different location. Then, edit baseHTMLJinitiator parameter to point to new file.
III. URL to Record
Last option will be modifying URL to record NCA record object names. This works only if startup HTML file does not reference another file while loading. Just append at end “?record=names” after actual URL in Start Recording dialog box.
Points to Consider After Recording:
1. How to handle windows with dynamic names: Dynamic windows name needs to be handled in the script. Easiest way -remove the dynamic number from window name.
set_window( “Responsibilities – 12345”);
lov_retrieve_items(“Responsibilities – 12345”,1,4);
lov_select_item(“Responsibilities – 12345”,”Application”);
While replaying, script might fail at lov_retrieve_items (but not at set_window as it is a comment & used for readability) as server generates a different number every time.
set_window( “Responsibilities – “);
lov_retrieve_items(“Responsibilities – “,1,4);
lov_select_item(“Responsibilities – “,”Application”);
2. Adding Text Check using window name: Text check is mandatory and applicable for all protocols. An extra validation ensures intended responses are correctly received as only http-200 doesn’t validate right response always. For Web, please use web_reg_find function and for NCA, use any string functions to compare after capturing window name.
char* Getwin; nca_get_top_window(GetWin);// name of window //use any string functions for comparison Example: if(strcmp(“<windowname>”,Getwin) ==0) { lr_output_message (“Error message”);}
3. Testing Secure NCA Applications: Please remove any existing entries for port 443 and create a new entry for Port Mapping. Recording Options:
- Service ID: HTTP, Target Server: Oracle Forms Server IP address or long host name, Target Port: 443, Connection Type: SSL, SSL Version: Active SSL version. If in doubt, select SSL 2/
- Please note that Service ID is HTTP, not NCA. If any issue while replaying, please add in script: web_set_sockets_option(“SSL_VERSION”,”3″);
4. Oracle scripts can be large and require lots of correlations: EBS contains numerous JAVA forms and having a lot of dynamic data dependencies.
- Load Balancing: Vugen supports load balancing for multiple application servers. Correlate HTTP return values with nca_connect_server parameters.
- icx_ticket: icx_ticket variable which contains cookie information sent by client needs to be correlated.
- NCAJServSessionId/JServSessionIdroot: It is a cookie that application sets to store session ID, Vugen automatically correlates this value.
5. Performance Test Data Management: Performance testing requires a lot of data including supplementary data, which needs to be created before execution. At least one user with system administration role required for data creation. System administration role used to create all other users, assign specific roles.
6. Changes in existing environment: If any changes in environment or software version upgraded, existing scripts will most likely fail. When switching environments, time must be allocated to creation of data, including supplementary, runtime data. If any changes made to code, script can be affected too.
Points to consider while Debugging:
1. Recording Trace Information for Oracle DB: Use Oracle DB breakdown graphs. To gather data for this graph, turn on trace mechanism before running script. To manually turn on, use function nca_set_custom_dbtrace.
2. Error Trapping: Always have flexibility to add an error/output message using user interface for tracking purpose.
3. NCA Error Codes: Please check NCA return value:
- E_ITEM_NOT_FOUND-In item in a list or menu is not found.
- E_OUT_OF_RANGE-An object position is out of range.
- E_ATTR_NOT_SUPPORTED-selected attribute is not supported for this function.
- E_ILLEGAL_OPERATION-operation is invalid for this object.
- E_INVISIBLE-A window or object is invisible.
4. Upgrading issue: When trying to record EBS application using LoadRunner, sometimes web events are generated successfully, however no events will be recorded for Form server with error message “failed to connect to server”. Now most of software is updating frequently to meet end-user requirement. EBS is upgraded to R12 and moving towards Fusion. LoadRunner is now upgraded to 12.53. That issue observed when EBS application is upgraded from R11 to R12. Form Server is not getting launched while LoadRunner recording due to no handshaking between Form Launcher Server and Application Sever. Potential reason could be Form Launcher version not supported by LoadRunner 11.53. After upgrading LoadRunner 12.02, that issue was resolved. Though, LoadRunner supports forward compatibility however old scripts will not work for same handshaking issue, resolution-create scripts once again.
5. Time out: Timeout settings are not mandatory:
- ICX: Session Timeout: 3000s: To enforce an inactivity time-out. If set to “0” or NULL, then user sessions will never time out due to inactivity.
- ICX: Limit time: 999h: To specify absolute maximum length of time (in hours) of any user session, active or inactive.
- ICX: Limit connect: 2000: To specify absolute maximum number of connection requests a user can make in a single session.
References
http://www.jds.net.au/performance-testing-oracle-ebusiness/
http://www.oracle.com/us/products/consulting/resource-library/best-practices-e-business-069831.pdf
http://Load runnerhelp.saas.e.com/en/latest/help/PDFs/%20LoadRunner%20User%20Guide.pdf
https://overloaded.io/how-to-script-oracle-11i-apps-on-loadrunner