LoadRunner



Load Runner Components:

1. VUGen – Virtual User Generator

It will allow you to record and replay script. And allow you to enhance your script.

2. Controller

It will allow you to design the scenarios and execute the test with multiple users.

3. Analyzer

It will allow to analyze the statistics and finding out the bottlenecks

4. Load Generator

It generates the load against the application.

5. Agent Process

It will establish the connection between Load Generator & Controller.

Load Runner License

1. VUGen, Load Generator, Agent Process, Analyzer are available at free of cost.
2. We have to buy control license using controller you can conduct only one test at any point of time.
3. You have to buy Vuser License.
4.  You have to buy protocol bundle license.

Note:

1. While procuring HP load runner license you receive SAID (Software Agreement
     Identification Number).
2. Using SAID we can raise the tickets or requests in HP site to get the assistance from HP
     to resolve the issues.

Performance Testing Life Cycle

1. POC - Proof of Concept
2. NFR - Non Functional Requirements Gathering
3. Test Plan
4. Work Load Model / Load Model / Volume Model / Volume Matrix
5. Scripting & Enhancements
6. Test Data
7. Scenario Design & Execution
8. Analysis
9. Reporting & Recommendation.

1. Proof of Concept (POC):

     As part of POC, I will try to understand the application architecture, what kind of
application is this? Which technology they used to develop this application. Which
communication mechanism they used to develop this application and complexity of the  application.
I will try to identify which tool is compatible for this application, if it is load runner which protocol is compatible for this application, whether it is a single/multiple protocols.
As part of POC, I am going to record simple business scenarios, execute with minimal users & report the response times to the client.Based on the above POC, Client has to understand which tool he supposed to buy, which  protocol bundle he supposed to buy & how many labor hours required to finish this application.

2. NFR – Non Functional Requirements

 We have to prepare NFR document with a help of BA (Business Analyst) people or project team people.
NFR contains CBT’s (Critical Business Transactions),peak hours, half peak hours(low load),expected average response times, no. of transactions per hour & hardware threshold statistics like CPU, Memory, Heap, Swapping.We have to gather and what kind of tests we supposed to perform in terms of availability,
serviceability, scalability, recoverability, baseline, benchmark, failover, abnormality & spike.After prepare NFR document, we have to get it approved by project team, architects, infrastructure team, NW team and stakeholders.

What is your approach to gather NFR, if client doesn’t know anything about performance
testing?

Scenario-1:
If Application is already in production

Sol: Get the production log files for 1 year historical data using Site analytical tools (or) splunk
tool & try to identify top 5 usage days from that how many no. of visitors accessing that
application, how many no. of page views are happening, which JSP/ASP pages are mostly
accessed by end users & from which region they are accessing the application.
Based on the visitors you can identify no. of users, based on the page views you can
identify no. of transactions.
Based on the JSP/ASP pages you can identify the CBT’s, based on the IP address we can
identify the location/region &conduct baseline testing to identify the expected response time (or) to baseline the application.
Note:Whenever we don’t have (SLA’s: Service Level Agreement) expected response times, we have to conduct baseline test.

Scenario-2:

Client doesn’t know anything & application not in production.

Solution: Get the competitor statistics and conduct the PT
Sol: Using N/W traffic utilities get the competitor statistics & identify NFR’s in terms of peak hours, half peak hours, no. of users, no. of page views from which location they are accessing the application, which pages mostly access by end users & what are the expected response times for every page.

Scenario-3:
Client doesn’t know about performance testing & application not in production & we don’t know have a competitor in market.

Sol: Try to understand the Core Business of the application and convert core business to Online  Business. By converting identify how many no. of users, no. of transactions, CBT’s, from which region they are accessing the application and conduct the base line test to derive SLA’s.

Generic Case Study:

I have an application stake holders & project is not in a situation to provide the requirement. So we approached Business Analyst (BA) People to finalize the NFR.


3. Test Plan

Test Plan is a road map of our test,
Test Plan contains objective of the test, scope, items out of scope, procedure, approach, test data, CBT’s, types of testing, monitoring, application architecture, tool architecture, deliverables, roles & responsibilities, environment, risks & migrations, entry criteria, exit criteria, prerequisites & assumption.

Entry Criteria:
Whenever the Pre-requisites are satisfied that is called Entry Criteria.

Exit Criteria:
Whenever derived statistics are meeting expected statistics that can be considered as Exit Criteria.
Note: Test strategy will describe approach & procedure of the test.


4. Work Load Model

Work Load Model is a heart of all the documents which will be lead you
“How to test that application?”
& “What to test that application?”
Work Load Model contains CBT’s, business flows for every CBT’s, no. of transactions,
types of testing, load distribution based on types of testing.While preparing Work Load Model we have to consider Pacing & Think time calculation to generate ‘Anticipated Load’.Work load model will assist you to design the scenario.

5.Recording and Enhancements

Protocol: Protocol is a set of rules.

Famous Protocols in current market:

Citrix ICA: When ever application published in Citrix environment we have to Citrix ICA
protocol.

Flex: Flex (Rich internet applications) is a product of Adobe. If the application front end is developed in flex then use Flex protocol.

Ajax TruClient: If you would like to measure the response times which includes server side and browser response times (Java script execution).

RTE (Remote Terminal Emulator): If the application is developed in Unix Environment. We have to use RTE Protocol.
Ex: Cursor based application, Mainframe application.

SAP Family: if the application developed in ECC and netviewer and dynapro portal we can use these protocols.

Web (HTTP/HTML):It is famous among all the protocols. If the application uses http protocol then use this protocol.

Web Services: It is also one of the famous protocols. If the application uses API’s or web services or xmls or jsons or restful xmls then we have to use this protocol.



Web (Click and script): It will record browser specific requests

6. Test Data: Simply we can define this as the data which is required to test an application is called test data. In this phase we will identify the test data which is required and how much is test data is required.

7. Scenario design & Execution : In this phase using controller component we will design the scenarios and also execute the same.Once the preparation of test data and workload is ready then we have to design scenario in the controller.
Based on the requirement given by the customer we can design the tests and we will execute the same in the controller.




8. Analysis: Once the test execution got completed we have to come to this phase. Using the loadrunner component Analyzer we will analyze the results. To analyze the results we will pepare the report to compare derived statistics with the expected statistics.In this phase we can see all the metrics , graphs , 90th percentile etc.


Correlation:

Correlation is the concept to handle the dynamic values which are generating from server side.(Or)
Dynamic input to the server. You can conduct the correlation in 2 ways:
1. Auto Correlation.
2. Manual Correlation.

1. Auto Correlation:

Automatically handle the dynamic values.
Process:
 Auto correlation process after 11.5 version
1) Record the script.
2) Replay the script (It’s not mandatory from LR 11.5 version).
3) Click the design studio.
4) Choose the dynamic value.
5) Click on “Correlate button”.
From the above steps, this will create a function & automatically substitute the dynamic value.
 Auto correlation process before 11.5 versions.
1) Record the script.
2) Replay the script at least once.
3) Click on “Correlate button”.
4) Choose the dynamic value from correlate log.
5) Click on “Correlate button”.

Note:A design studio or correlation log compares record time response with replay time response dump the differences into the correlation log or design studio.

2. Manual Correlation
Manually we have to handle the dynamic values. Whatever the steps performed by
autocorrelations steps will be performed manually.

Process:

Step1: How to identify the dynamic values in a script?
Sol: Record the same business scenario twice with 2 sets of data & compare both of them using “beyond-compare” or “www.text-compare.com” or Tools “Windiff” (default).
Which values reported differently those values will be considered as dynamic values.

Note:
Which values are not entering through keyboard & which values are chosen from the application,
those values will be considered as dynamic values.

Step2: How to identify the left text & right text for a dynamic value?

Sol: web_reg_save_param(“parameter_name”,”lb=”,”rb=”,LAST);
 Copy the dynamic value.
 Go to generation log identify first occurrence of the dynamic value.
 Copy the left text & right text of the dynamic value.

Step3: Where to write the function?

web_reg_save_param(“parameter_name”,”lb=userSession” value=” ”,”rb=”/>”,LAST);

Sol1: Execute the script in full mode (F4LOGExtended LogEnable All Options). Identify the dynamic value based on the left boundary or right boundary in Replay log. Double click on the same line which will assist you to where to write the function or for which request the dynamic value was generated.

Sol2: (Not recommendable for web tours) once you identified the dynamic value in generation log place the cursor on the same line and search for “web_” or “ENDED” then copy the request and search for the same in script. On top of the same request u can place the function.

NOTE: Generation log contains response and request which never change.

Step4: Substitution
Sol: You can substitute the parameter name where ever the dynamic value is present in script using control+H.



Correlation Function with all Arguments



1. ORD:

ORD stands for “Occurrence”.
By default ORD=1.

Ex:
Ord=10 stands for 10thoccurrence.
Ord=ALL stands for captures all values based on LB & RB.
Whenever you written ORD=ALL your parameter become an Array. It holds all
the values with the name of parameter-1, parameter-2 & parameter-N.
Note:
Variable_count let we know the length of an Array.

2. Save Length:
Allow you to capture specific no. of characters from dynamic value based on LB and RB.
Ex: savelen=3
By default savelen=”-1”.

3. Save offset:
It will specify the no. of characters it supposed to skip from the dynamic value.
By default saveoffset=”0”.
EX: saveoffset=3 (It skips 3 char)

4. Not found:
By default notfound=”error”.
If the either LB or RB is not present in the response script will through the error like “No match found for the requested parameter”.
notfound=”warning”.
If you would like to continue the script execution, even LB or RB is not available in the response you have to use warning.

5. Search:
It is an optimization technique. This will instruct the user to search for LB & RB in a
specific location.
By default search=ALL.
Ex: Search= headers: - it will search for LB n RB in only on header
Ex: Search= Body: - it will search for LB n RB in only on body

6. RelframeID:
This is also optimization technique. Specifying to capture the dynamic value from a specific frame.
Ex: RelframeID=1.2.1

HTTP Status Codes:
100 - Request successfully delivered.
200 - Response received successfully.
300 - Received response but it was redirected response.
400 - Invalid request.
500 - Application itself not available.

7. Ignore Redirection:
By default ignore redirection= YES
Instructing correlation function to capture dynamic value from a redirected response or not.


8. Convert:When ever the dynamic value is recorded in the format of URL and the captured value in the format of HTML. Use convert argument to convert HTML to URL but did not “Vice-Versa”.
Ex: Convert= HTML_TO_URL

HTML - Hyper Text Markup Language
XML - Extensible Markup Language


Regular Expressions:

Whenever you have dynamic LB & RB, we can use regular expressions. This function works on
expression but not on boundaries.
Steps to construct regular expressions:
Step 1: Copy the LB & RB from generation log.
Step 2: Construct the expression.
Step 3: Validate inwww.rubular.com
Step 4: Write web_reg_save_param_regex() function.

Example:
web_reg_save_param_regex(“parameter name = reg_exp”,
“regex=name =\” u[a-z]er[A-Z]ession\” \\value=\”(.*?)\” , LAST);
u[a-z]er[A-Z]ession  Function searches for userSession based on this regular expression.
[a-z]  Skips any single character in the range a-z

[A-Z]  Skips any single character in the range A-Z


Parameterization:

Static input to the server or vary input to the server.
Note:Which values you enter through keyboard those values should be parameterized. Your script
should not contain any hard coded values.

Parameter Types:


1. File
2. Date & Time
3. Iteration Number
4. Random Number
5. Unique Number
6. VUserID
7. Group Name
8. Load Generator Name
9. Table
10. XML
11. User defect

1. File:
Parameter Properties:
1) Sequential Each Iteration
2) Random Each Iteration
3) Unique Each Iteration
4) Sequential Each Occurrence
5) Random Each Occurrence
6) Unique Each Occurrence
7) Sequential Once
8) Random Once
9) Unique Once
10) Same line as some other parameter.

Sequential Each Iteration:

Sequential - It stands for every user as to pick the “First Data Point”.
Each Iteration - Data point update has to “Update on Every Iteration”.


Random Each Iteration:
Users picks the values randomly.

Unique Each Iteration:
Every user has to pick “First Unused Data point”.

Sequential Each Occurrence:
Value updates on every occurrence.

Sequential Once:
If the user picks any 1 of the data point. We have to continue the same value for
all the iterations & occurrence.

Same line as some other parameter:
In a scenario there is a dependent data (UN & PWD). We have to pick associated
value from second data file. Using same line as some other parameter option. We can
instruct the user to pick same row data point from second data file.
Complex Parameterization:
We can create one “.dat” file with multiple columns for dependent data. Complex
parameterization allow you to handle test data in a proper way.

2. Date & Time:
Using Date & Time parameterization we can pick current date, future date, past date in
require format.
Current Date:
Where you can choose the current date.
Note:
Data will pick from mission date from where it is executing.
Step1: Right click create parameter & choose Date & Time option.
Step2: Choose or create require parameter in parameter properties & click ok.
Future Date:
You can choose the future date from which mission script is executing.
Step1: Right click create parameter & choose Date & Time option.
Step2: Choose or create require parameter in parameter properties & click ok.
Step3: Choose offset date & provide the no. of dates.

Past Date:
Where you can choose the past date.
Step1: Right click create parameter & choose Date & Time option.
Step2: Choose or create require parameter in parameter properties & click ok.
Step3: Choose offset date & provide the no. of dates.
Step4: We have to choose the prior to current date option.
Note:
Using working days option, we can skip weekends.

3. Random Number:
As per the business scenario we have to generate the random number in specified
boundaries in required format.

4. Unique Number:
We can generate the unique number using unique number parameterization by
providing Lower Boundary & Upper Boundary in required format.

Data Wizard: Will allow you to pull the data from database with the help of connection
string and query.

Simulate parameter: It will give an idea how the user will pick the values based on property in controller.

By number: Indicating column number from which column user supposed to pull the data.

By name: Indicating from which column user supposed to pull the data based on column name.

Column Delimiter: Values will be separated based on comma (,) or tab or space.
Note: If your data point contains comma, what is your approach to create .dat file?
Solution 1: Create tab or space based dat file instead of comma delimiter.
Solution 2: Keep the comma (,) in double quotes (“”)

First Data line: Indicating the row number from which row user supposed to start picking the value.
Note: You can load 36000 data points in a script.

When out of values: This option is available for unique-each iteration/each occurrence.
Instructing the user abort the execution or continue in cyclic manner or continue with the last value when there are no unused data points.

Block concepts in parameterization:

Block concepts is available for unique-each iteration/each occurrence property data points will be divided into blocks and allocated to users.
Option 1: Automatically allocate block size
controller itself allocates the block size based on number of user data points.


Option 2: Manually we can calculate and decide the block size.


Verification points/checkpoints:

We have to verify whether we received proper response or not using below techniques
1) Text verification points
2) Image verification points
3) Response size
4) HTTP status codes


Text verification points:

web_reg_find(“text=xyz”,LAST);
Note 1: Which request you are planning to verify, on top of the request you have to write this function
Note 2: web_reg_find is a registered function. You have to write on top of request for verification
Note 3: Preferrably use static text verification even you can use dynamic text for verification.

Checkpoint function:
web_reg_find(“text=welcome”,”savecount=xyz”,LAST);
After request, we have to write
If (strcmp(lr_eval_string(“{xyz}”),”0”)==0)
{
Lr_output_message(“text check failed”);
}else{
Lr_output_message(“text check passed”);
}

Image verification:

It will verify the response based on image
Syntax: web_image_check(“xyz”,”SRC=c://image.gif”);
web_image_check is a non-registered function. We have to write after the request to make it work. You have to enable option “enable text and image verification” in runtime settings.


HTTP status codes

 web_get_int_property():
Using this function, you can verify response whether it is proper or not based on HTTP status codes and download size
Syntax:
int HttpRetCode = web_get_int_property(HTTP_INFO_RETURN_CODE);
lr_output_message(“%d”, HttpRetCode);
if(HttpRetCode == 200)
{
lr_log_message(“Script passed”);
}else
{
lr_log_message(“Script failed”);
lr_abort();
}

Response size

HttpResponse = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);
lr_output_message(“%d”, HttpResponse);
if(HttpResponse == 200)
{
lr_log_message(“Script passed”);
}else
{
lr_log_message(“Script failed”);
lr_abort();
}


Advanced Techniques:

We are going to use test script language (TSL) in load runner sometimes might require to write C or Java to make our business scenario work. By default, we will use C language.
Note: We have only one data type in LR that is “string”
Note: We don’t require to declare LR variable.
C Data Types:

  • Int,
  •  char,
  •  double,
  •  float,
  •  flag,
  •  long,
  •  short,
  •  Boolean etc
How to convert an integer value to LR variable?

Solution: “itoa”  //It converts integer to string
Lr_eval_string //It reads the value from a variable
Lr_output_message //It displays the message
Example:
Int x=0;
Char abc[100];
Itoa(x,abc,10); //Converting int to string
Lr_save_string(abc,”final”); //Assigning value to lr variable
Lr_output_message(“%s”, lr_eval_string(“{final}”));


How to compare two LR variables?

Solution:
lr_save_string(lr_paramarr_random("c_source"),"Ran_Source");
lr_save_string(lr_paramarr_random("c_desti"),"Ran_Dest");
if(strcmp(lr_eval_string("{Ran_Source}"),lr_eval_string("{Ran_Dest}"))==0)
{
lr_output_message("SOURCE & DESTINATIONARE SAME, CANT BOOK
TICKET");
lr_abort();
}
else
{
lr_output_message("SOURCE & DESTINATION ARE NOT SAME, CAN
BOOK TICKET");
}


Working for a banking application. Capture the account holder balance and add 10 rs to balance and substitute in the next request.

Solution:
y = atoi(lr_eval_string("{c_sid}"));
z=x+y;
lr_output_message("%d",z);
itoa(z,final, 10);
lr_output_message(final);
lr_save_string(final,"final_balance");

How to use string tokenizer functionality?
Or 
How to split a string into multiple strings?
Solution:
char* abc;
char xyz[100];
--------------------RESPONSE BODY--------------------
strcpy(xyz,lr_eval_string("{c_fno}"));
abc=(char*)strtok(xyz,";");
lr_output_message(abc);
lr_save_string(abc,"final");


How to split a string into multiple strings?
Solution:
char path[100];
char separators[] = ";";
char* token;
---------------------RESPONSE BODY---------------------
strcpy(path,lr_eval_string("{c_fno}"));
token = (char *)strtok(path, separators); // Get the first token
if (!token)
{
lr_output_message ("No tokens found in string!");
return( -1 );
}
while (token != NULL )
{ // While valid tokens are returned
lr_output_message ("%s", token );
token = (char *)strtok(NULL, separators); // Get the next token
}

How to use atoi and itoa functions?

int cnt,x;
char* temp;
char abc[10];
--------------------------RESPONSE BODY-----------------------
cnt=atoi(lr_eval_string("{c_desti_count}"));
x=1+rand()%cnt;
lr_output_message("%d",x);
itoa(x,abc,10);
lr_save_string(abc,"F_dest");
temp=lr_eval_string(lr_eval_string("{c_desti_{F_dest}}"));
lr_save_string(temp,"final");


Working for a banking application. Capture the account holder balance and add 10.25 rs to balance and substitute in the next request.

float x=10.75,y,z;
char final[100];
------------------------RESPONSE BODY--------------------
y = atof(lr_eval_string("{c_sid}"));
lr_output_message("%.2f",y);
z=x+y;
lr_output_message("%.2f",z);
sprintf(final,"%.2f",z);
lr_output_message(final);
lr_save_string(final,"final_balance");


How to download a pdf/doc/xls from an application?


unsigned long paramlen;
char* newparam;
web_save_timestamp_param(“tstamp”,LAST);
file=fopen(lr_eval_string(“D:\\anand_{puser_id}_{p_iteration}_{tstamp}.pdf”),”wb”);
lr_eval_string_ext(“{vinay}”,strlen(“{vinay}”),&newparam,&paramlen,0,0,-1);
fwrite(newparam,paramlen,1,file);

fclose(file);


LR-Functions:LR functions you can use across the protocols.

1. lr_abort(); This function use for script abort purpose .

example:
 if (strcmp(lr_eval_string("{ramana}"), "0") == 0)
{
lr_output_message("Login Failed");
lr_abort();
}
else
 {
lr_output_message("Login PASSSSED");
 }

2. lr_exit(): Exits the iteraion or action.

Arguments:
LR_EXIT_USER
LR_EXIT_ACTION_AND_CONTINUE
LR_EXIT_MAIN_ITERATION_AND_CONTINUE
LR_EXIT_ITERATION_AND_CONTINUE
LR_EXIT_VUSER_AFTER_ITERATION.

Example:

if (strcmp(lr_eval_string("{ramana}"), "0") == 0)
{
lr_output_message("Login Failed");
lr_exit(LR_EXIT_MAIN_ITERATION_AND_CONTINUE, LR_FAIL); // here v
can change the above arguments.......
}
else
 {
lr_output_message("Login PASSSSED");
 }

3. lr_start_transaction()&lr_stop_transaction():  Allow you to measure the response time for a page/request.
lr_start_transaction("launch"); //here launch is txn name. this statement write on top of request
lr_stop_transaction("launch"); //this statement write after the request

4. lr_stop_transaction() &lr_resume_transaction()Transaction will be stopped and resumed based on requirement

5. lr_start_timer() &lr_end_timer():  This function will allow you to calculate wasted time. Nowadays you don’t require to calculate
wasted time which will be measured by LR itself.
 double time_elapsed, waste;
 merc_timer_handle_t timer;
 timer = lr_start_timer(); // this should write after the web function. or after start
transaction
 time_elapsed = lr_end_timer(timer);// this should after the web_reg_find function or
before ending transaction
 waste = time_elapsed * 1000; // Convert to millisecond.s
 lr_wasted_time(time_elapsed); /* Remove the time the checks took from the
transaction. */
 lr_output_message("%lf",time_elapsed);

6. lr_save_string(): It assigns a value to LR variable

Ex: lr_save_string("abc","xyz");

7. lr_save_int(): It assigns integer value in to LR variable.
this also used instead of itoa function.
lr_save_int(x, "xyz"); // here X is a integer

8. lr_eval_string():  It evaluate the value after embedding parameter or it reads the value.

9. lr_paramarr_random(): It generates the random value from an array.
lr_paramarr_random("source");

10. lr_paramarr_idx(): Returns the value of the parameter at a specified location

lr_paramarr_idx("source",10); // it reads 10 th value of source.

11. lr_save_datetime(): Assigns the current date and time to a parameter.

Ex:
lr_save_datetime("%m/%d/%Y %H:%M", DATE_NOW, "currDateTime"); // This statement
write in output message area(after the request)

12. lr_set_debug_message(): Changes the message level for a request

Syntax:
lr_set_debug_message(LR_MSG_CLASS_EXTENDED_LOG |
LR_MSG_CLASS_FULL_TRACE, LR_SWITCH_ON );
web_url()
---
----
lr_set_debug_message(LR_MSG_CLASS_EXTENDED_LOG |
LR_MSG_CLASS_FULL_TRACE, LR_SWITCH_OFF );
Note:Here we need to set standard mode in Runtime Settings.

13. lr_db_connect(): It connects to database with the help of connection statements

14. lr_db_disconnect(): It disconnects from the database

15. lr_db_executeSQLstatements(): Submits SQL statements to database

16. lr_continue_on_error(): On error, scripts use one of these options for continuation:

Syntax:
lr_continue_on_error(0); -------> no option
lr_continue_on_error(1); -------> continue
lr_continue_on_error(2); -------> skip to next Action
lr_continue_on_error(3); -------> skip to next iteration
lr_continue_on_error(4); -------> end user

17. lr_load_dll(): The lr_load_dll function loads a DLL (Windows) or shared object (Linux) allowing you to call an external function when replaying using the C interpreter.
Once you load the DLL, you can call any function defined in the DLL, without having to declare it. You can specify a full path for the DLL.
Syntax:
lr_load_dll("user32.dll");

18. lr_out_message(): It's sends a message to log file,output windows and summary report

19. lr_log_message(): Sends a message to logfile to the application management agent logfile (or) vuser log.

20. lr_message(): Sends a message to the log and o/p window.

21. lr_error_message(): Sends an error message with location details to the output windows, log files, and other test report summaries.

22. lr_get_vuser_ip(): Returns the ip address of the user
Syntax:
char* ip;
Ip= lr_get_vuser_ip();

23. lr_get_host_name(): Returns the name of the host
Syntax:
char* name;
Ip= lr_get_host_name();

24. lr_get_master_host_name(): Retrieve the controller machine name

25. lr_whoami(): Returns the information about vuser

26. lr_vuser_status_message(): Sends a message to vuser status area in controller

27. lr_save_searched_string(): It will captures substring from a main string

Syntax:
ex: for flight number 300;365;05/08/2016
char abc[100];
//this code write after the request
no option
strcpy(abc,lr_eval_string("{outboundFlight}"));
lr_save_searched_string(abc, strlen(abc),
1,";", //Searched for 2nd occurrence of “;”
0, //Indicates no skip after “;”
3, //Captures next 3 characters
"year"); // here year is final value (or )abc saved in year

Web Functions:
1. web_url():
To launch the application or load the specified URL.

2. web_set_max_html_param_length():
Sets the maximum length of any html string that can be retrieve and stored in a variable.
Syntax: web_set_max_html_param_length(“1024”);

3. web_save_timestamp_param():
Save the timestamp to a parameter. It generates a timestamp in milliseconds which is a 13 digit number.

Syntax: web_save_timestamp_param(“tstamp”,LAST);
lr_output_message(“%s”, lr_eval_string(“{tstamp}”));

4. web_reg_save_param():
Allow you to capture dynamic value from response.

5. web_reg_save_param_ex():
Allow you to capture dynamic value which is introduced from 11.0 version. It has different parameters

6. web_reg_find():
For text verification purpose.

Syntax: web_reg_find("Text=Welcome","SaveCount=Welcome_Count", LAST );

7. web_find():
Text verification purpose. It is deprecated.

8. web_image_check():
Image verification purpose.

Syntax: web_image_check("Text=Welcome", "src=D:\\xyz.gif", LAST );

9. web_set_proxy():
Specifies that all requests should be redirected to a specific proxy server.

Syntax: web_set_proxy(10.10.10.10:8080);
Note: Default port number of https request  443
Default port number of http request  8080

10. web_submit_data():
It is an unconditional context less request which will submit data in form of item data.

11. web_submit_form():
It submits the form and context based request. Submit data in the form of item data.
Note: Context based means request will be dependent on previous response.
Note: Usually we are using web_submit_data option to record scenario.

12. web_get_int_property():
Using this function, you can verify response whether it is proper or not based on HTTP status codes and download size

Syntax:
int HttpRetCode = web_get_int_property(HTTP_INFO_RETURN_CODE);
lr_output_message(“%d”, HttpRetCode);
if(HttpRetCode == 200)
{
lr_log_message(“Script passed”);
}else
{
lr_log_message(“Script failed”);
lr_abort();
}


13. web_set_user():
For all NTLM (Native Windows Authentication) Applications, we should submit the credentials
against web_server.

Syntax:
web_set_user(“CA:\\Jojo”,”Bean”, HTTP://webtours.kword.com:80);

14. web_set_certificate():
Causes a script to use a specific certificate that is listed in internet explorer registry

Syntax: web_set_certificate (“2”);
Extension: .prm/.cer/.pem

15. web_set_socket_option():
Setting the socket level option for a request

Syntax:
web_set_socket_option(“SSL_VERSION”, “TSL1.1”);
Instead of using above function, you can execute the script using wininet engine but which is not preferable.

16. web_cleanup_cookies()& web_cache_cleanup():
These functions will allow you to cleanup cookie files and cache files from browser. Have to write these functions at end of the script.

17. web_convert_param():
Which will convert a string html to url and url to plain vice versa.

Syntax:
web_convert_param("HTML", "SourceEncoding=HTML", "TargetEncoding=URL", LAST );
web_convert_param("HTML1","SourceEncoding=HTML", "TargetEncoding=PLAIN", LAST );
web_convert_param("Plaintext", "SourceEncoding=HTML","TargetEncoding=URL", LAST );

18. web_add_header():
Scenario 1: My first/any request keep on failing even after conducting correlation and parameterization
Solution: Write web_add_header() function on top of request.
Step 1: Verify correlation and parameterization.
Step 2: Verify whether the page is opening manually or not. If it is opening, then problem is with
header.
Step 3: Verify whether we need to add any SSL.

19. web_custom_request():
It will submit the data in the form of body.
Scenario 1: Based on my previous input, number of fields are changing in current page.
Scenario 2: When I am accessing application in morning, it reported 10 records. In the evening 15 records, next day 20 records. How to make it work for anytime?
Scenario 3: How to write web_custom_request()
Scenario 4: Client asked me to book random number of tickets for every user but based on random number, number of passenger fields are changing in payment page. How to make my
script work for vary number of passengers?
Sol:
int xyz;
char abc[100], lmn[100];
xyz=atoi(lr_eval_string(“{prandpass}”);
for(i=1;i<=xyz;i++)
{ sprint(abc,”pass%d=”, i); //pass1=
strcat(abc,lr_eval_string(“{ppass}”)); //pass1=anand
strcat(abc,”&”); //pass1=anand&
strcat(lmn,abc); }


lr_save_string(lmn,”r_no_pass”);

C-Functions:

1. strcpy()
Copies one string to another
Syntax:
Char hi[10];
Strcpy(hi,”747”);

2. strcmp()
Compares two strings
Syntax:Strcmp(hi,rao);

3. strcat()
Concatenates two strings
Syntax:Strcat(abc,”&”);

4. strlen()
Returns length of the string
Syntax:Strlen(abc);

5. strstr()
Captures substring from main string

6. strtok()
Tokenize the string based on delimeter
Syntax:
xyz = (char*) strtok(abc,”;”);

7. strncpy()
Copies n number of characters to another

8. sprint()
Writes a formatted output to a string

File Operations:

1. fopen()   : Opens a new/existing file

2. fwrite() : Writes an unformatted data to file

3. fprintf()  :  Prints a formatted value to a file

4. fread() : To read the data from a file

5. fclose() : Closes the file

User Defined Functions:

Function: Set of reusable statements is called function which has to return something.

Syntax:

vuser_init()
{
Return 0;
}

Note: Dividing you script statements into multiple functions is called modular approach.

Recording Options:
Shortcut (Ctrl + F7)



1. Recording mode :

We do have two modes in HTTP/HTML protocol
1) HTML Mode
2) URL Mode

HTML Mode: Generates a separate step for every user action even you can record non HTML
resouces.
HTML Advanced: Using advanced techniques, you can record web_submit_form or
web_submit_data/
Usually we will use web_submit_data along with record within script.

Advantages:
1.Easy to understand the script.
 2.Easy to maintain the script.
3.Very less number of lines of code.
4.Generate script for HTML and non HTML resources.
5. Script never fails for non HTML resources. If any one of non HTML resource is not
    available, it will throw a warning like resource unavailable HTTP status code 403.

URL Mode:
Records not only user actions, even it records server side resources too. It will
generate web_custom_request and web_url.
 You can find huge number of lines of code.
 It’s very difficult to maintain the script.
 It will record non HTML resources in the form of concurrent groups.
 URL mode prefers for non-browser specific applications.
If any one of non HTML resource is not available or failed to download, the same script will be
aborted by throwing an error.
If application having java script files, prefer to use URL mode.

2. Script:
Script option will allow you to generate the auto think time, limits number of lines in a script.

3. Protocols:
Displays opted/chosen protocol.

4. Code generation:
Allow you to conduct auto scan for dynamic values.

5. Configuration:
Dealing with only auto correlation by specifying record scan, replay scan, rules scan, correlation
function, min and max length of dynamic value.

6. Rules or Correlation Studio (till 11.0):
We can create our own rules for common dynamic values. Those rules will be used across the
project.
Step 1: Create new application.
Step 2: Create new rule by providing LB, RB, param.
Note: We have to select boundary based scan type
Step 3: Test the rule.
Step 4: You can export the rule by clicking export button.
Step 5: You can import the rule by clicking import button.
Note: Correlation rule extension is “.cor”

7. Advanced:
We can generate auto text verification function using this option.
We can generate auto headers.

8. Mapping and Filtering:
Q: I am recording a business scenario but I failed to record the events.
Solution:
If you failed to launch the application, then change the DEP (Data Execution Prevention) settings
in my computer properties.
My Computer
Properties
Advanced System Settings
Advanced Performance Settings
DEP
Choose turn on DEP for all programs.

Test Data:Usually you will get test data from DBA’s. While developing the script itself, we have to prepare a test data requirement sheet which contains which required for every use case how much test data you required and segregate which is reusable and which is not.Sometimes you can generate test data using LR script itself.
Example: You can create username and password if the signup functionality is available in the
application. If the functionality is not available to generate test data, we have to request DBA to provide it.
If the test data is not reusable, we have to request DBA to create database restoration point or take the flashback of database.

Scenario 1: Once the test is completed, we have to request DBA to change DB to previous restoration point. So that data will be available for next test.

Scenario 2: Once the test is completed, we have to request DBA, flashback the database or load previous database instance.

Scenario 3:
Q: One of the script is generating purchase order number and second script is processing same purchase order number.

What is your approach to design the script?
Or
How to pass value from one script to another?

Solution 1: Create two actions in one script for both of the scenarios. Capture purchase order number from 1st action and pass into the second action.

Solution 2:
Data Staging:
Execute the first script with multiple users in controller. Write purchase order numbers into local file before starting actual test. Copy purchase order numbers from local file. Load into second
script so that both of the script will execute simultaneously.

Solution 3:
VTS (Virtual Table Server):
Virtual Table Server is a tool that enables sharing of test data and parameters between Load Runner Virtual Users (VUsers). Usually performance testers use parameterization in their


scripts, but in Virtual Table Server it acts as centralized repository to store data which can be shared between VUsers during the test execution.

Controller: Just double click on the controller to open the controller.
Navigate to File and choose new scenario.
Then you can see the following screen on your monitor.


Note: 
Controller extension is “.lrs”.

We can design two types of scenarios in the controller.
those are 1.Manual scenario
                2. Goal oriented scenario.

Manual scenario: Manually we have to design the scenario by providing ramp up, ramp down, duration, number of users to generate the anticipated load against the application.

Percentage mode: It will distribute the load in between use cases in terms of percentage.

Goal oriented scenario: Controller itself will design the scenario as per the goal.

Controller having 3tabs:
1. Design tab.
2. Run tab.
3. Diagnostics tab.

1. Design tab: where you can design the scenario.
Note: scenario extension is “.lrs”.

Ramp up: gradually increasing the load against application.

Duration: indicates test duration which extends ramp up and ramp down time. this is called “duration”, ”standalone”, ”steady time”.

Ramp down: gradually reducing load from application.

 Elapsed time: this is the test duration time which includes ramp up, steady time, ramp down.

Throughput: bits received from server.

Hits per second: per second how many hits happening.

Schedule by scenario: it considers all the scripts like a scenario and configure ramp up, ramp down, duration.
 (or)
Consider as a scenario by sharing ramp up, ramp down, duration.

Schedule by group: every script consider as a different scenario by having their own
ramp up, ramp down, duration.

Real world schedule: allow you to create multiple actions (ramp up, ramp down,
duration).

Basic schedule: you have only basic action under this option (one ramp up, one ramp
down).

Note: See the following screenshot to understand above options.



2. Run tab:
 User status:
Down
Pending
Initialization
Ready
Run
Rendezvous
Passed
Failed
Error
Gradual exiting
Exiting
Stopped

Gradual exiting: whenever test duration completed by the time user are in mid of
iteration. So those users will be moved to gradual exiting once the iteration is finished users will be come out from test.
Note: elapsed time stats whenever you hit the start button.

3. Diagnostics tab: By default web page diagnostics are available at free of cost. We have to buy license for java, Siebel, sap, oracle etc.

Note: See the following screenshot to know about run tab.



Manual scenario:

Check list:
1. Choose manual scenario.
2. Push the script into controller.
3. Choose schedule by scenario (or) schedule by group.
4. Choose real world (or) basic schedule.
5. Assign the quantity.
6. Assign load generators.
7. Verify connectivity with LG’s.
8. Configure SLA’s (if required).
9. Configure runtimes settings for every script.
10. Set the result path.
11. Provide ramp up, ramp down, duration.

Note: whenever situations demands like every script should run for multiple durations with vary ramp up’s then you can choose schedule by group.

Differences between request and hit:
User action is a request.
Successful request is a hit.
Note:One request may contains multiple hits.



 Goal oriented scenario
controller itself will design the scenario according to goal.
Check list:
1. Choose goal oriented scenario.
2. Push the scripts into controller.
3. Click on edit scenario goal.
4. Provide profile name.
5. Provide goal type and threshold point.
6. Provide max and min users.
7. Provide duration once it reaches the goal.
8. Configure notifications if it is not able to reach goal.
9. Distribute load in terms of percentage.
10. Assign LG and check the connectivity.
11. Configure SLA’s (if required).
12. Set the result path.

Note: Goal types
1. Virtual users.
2. Transaction per second.
3. Hits per second.
4. Response time.
5. Pages per minute.

IP Spoofing:
Masking the original IP address and using the different IP address is called IP spoofing.Whenever load balancer is not functioning. Due to the request source of IP address. We
have to mask the original IP address and mask sure that every user has to use different IP address.
Process: In realistic environment every end users using different IP address to access the application but in LR environment all the users are invoking from same LG and same IP which is not realistic.
Step1:Request IT infrastructure guys to provide dynamic IP address.
Step2: Ask them to configure these IP address in DHCP server.
Step3: We have to configure these IP address in load generator using IP wizard option.
Step4: Enable IP spoofing option in controller.

Note: See the following screen shot to know how to enable IP spoof.


Load balancing: Load balancer is a URL, which will distribute load in between web instances.
As part of performance testing you will receive two kinds of URL.
1. Direct URL: It will access web instance directly.
2. Load balancer URL: which will distribute the load in between web instances.
We do have two types of load balancer
1. Hardware load balancer
2. Software load balancer
Among the above, hardware load balancer is accurate and good
Load balancer URL will distribute the load based on below algorithms.
1. IP sticky
2. Least connections
3. Round robin
4. Round passion
5. Least load

Runtime settings:Extension of RTS is “.cfg” & “.usp”.

Note: RTS will be transferred to controller from vugen script but not vice versa.



1. Run Logic: Indicates number of Iterations.
Note1: Test duration setting will override the Run Logic.
Note2: To make our script iterates for specific number of iterations, we have to choose “run until
complete”.

2. Pacing: Time delay between the Iterations
We have 4 types of Pacing.
1. No pacing/ no delay.
2. Fixed Pacing, waiting time.
3. Random Pacing (generate random value and wait for the same).
4. Interval Pacing: Instructs users to finish with in a time, which includes pacing time, iteration time.
Note1: Pacing is the time delay to start new iteration after finishing previous iteration.
Note2: Pacing will allow you to control the number of iteration and number of transactions.
Note3: Pacing calculation is very important while preparing work load model.

3. Log: Logs will help you to debug the script.
 Enable logging: You will receive log messages based on the settings.
 Disable log: You are going to use this option while running the test to avoid unnecessary

4. Think time:
Think Time is the time to choose new action after getting previous response.
 (or)
Time delay b/w the User actions.
Note: Even you can pass float numbers as a think time.

Q: Why think time is required?
A:
In realistic environment end users are taking sometime to choose the new action after receiving previous response.
But in my script virtual users are not waiting for to choose the new action and they are firing back to back request.
To simulate the realistic environment we have to instruct the users to pause in between the request with the help of think time.

Who is going to provide the think time?
A:
As a performance tester we have to calculate the think time. How long a normal user is waiting
to choose the new action on every page.
Note: we should not use recorded think time.
Think time option:
1. Ignore Think time: It is going the function and execute back to back request.
2. As Recorded: It will pause the script execution as per the function time.
3. Multiply think time: Multiplies the think time.
4. Random Think time: it will generate the random number based on minimum and maximum
percentage and passes the same.
5. Limit Think time: It limits the think time.

Q: Where do you place the think time?
A: We should not place the think time in between start and end transaction.

Q: What is the impact of think time on the response time?
A:
Scenario1:
If you reduce the think time you will receive higher response time. Because of less think time
users will perform more iterations and transactions, which will impact the server
performance.
 Lower think time will give less breathing time, which will impact the transaction
response time.
Scenario2:
 Higher think time will give good response times.
 Due to the higher think time server will get more breathing time which will process the request very fast.

Global think time:
Define the variable in global.h
Ex: int X=10;
lr_think_time(x); (Action)
Note: If we forgot to take out the think time from start to end transaction you can filter those response times in lra file with the help of properties.

5. ADDITIONAL ATTRIBUTES:
To declare the Environment variables.

Q: How to create environment variables in LR?
(or)
How to pass a new value in to the script without opening the script?
A:
char * server;
server = lr_get_attrib_string(“host”);
lr_save_string(server,”url”);
 Write the above statement in the script.
 Set the value in the RTS and pass vary arguments in runtime.

6. Miscellaneous:
Continue on Error:
Continue script execution even when an Error Occurs.
Generate snap shot on Error:
It will generate the snap shot for every Error you can verify them in Result file (or) Controller
vuser log (by clicking camera symbol).

Q: Where we can find a screen shot?
A: Go to the vuser log and click on the camera symbol. Navigate to the LG results path and you can find HTML page for every error

Multithreading:
Run vuser as a process:
For all client server apps (SAP GUI or Desktop based apps. EX: SAP GUI/ Calculator) you have to run vuser as a Process.If we are running vuser as a process every vuser required one MDRV (Multi Driver Program) Engine.
Every MDRV engine required 5Mb memory in the LG Machine.

Running Vuser as a Thread:
For all web based applications you have to run vuser as a Thread. If you are running vuser as a thread multiple users will share one MDRV engine.
NOTE: Approximately 50 vusers use one MDRV engine.

Automatic Transaction:
Allow you to generate the automatic transactions to measure the response time.

7. Network:
Speed simulation:
It specifies to use maximum/ predefined/ custom band width for your test.
Usually we are using maximum bandwidth option until or unless there is a requirement, we are not going to use custom or advanced bandwidth.
If you like to test your application with a specific network bandwidth, then use custom or advanced bandwidth.

8. Browser Emulation:
It will allow you to use multiple browsers for test.
Note:
Prerequisites:
We should install the browser in the load generator.
1. Simulate browser cache: Enabling this option instructs the users to use or simulate cache
files from browser.
If disable this option, cache files will be deleted or will not be simulated.
2. Simulate a new user on each iteration: If the users are iterating for multiple times, we have
to make him behave like a new user on every iteration by enabling this option.

9. Internet Protocol:
Content check:
It is a global text verification option. Verifies the text on every page.
Note: web_reg_find is a local verification point.
Steps:
1. Create application by clicking new application.
2. Create a rule under the application.
3. Provide the text and match case.
4. You can export or import the rule and extension is “.xml”.

10. Proxy:
It will allow you to configure proxy settings for all requests. It will redirect all the requests to proxy server.
Options are
1) No proxy
2) Obtain proxy settings from browser
3) Custom proxy

11. Preferences:
1. Enable image and text check:
This option has to be enabled for web_find(), and web_image_check().
2. Wininet replay instead of socket:
For NTLM based applications or SSL based applications, you can use wininet replay.
If you don’t want to use web_set_socket option, then use wininet replay.
Options:
 HTTP request connection time out: A unit time within which request connection
operation should finish. Default is 120 seconds.
 HTTP request receive time out: A time unit within which receive operation should
finish. Default is 120 seconds.
 Step Download time out: A time unit within which entire step has to be finished.
Default is 120 seconds.

12. Download filters:
To exclude or include specific URL, use download filter option.

Q: How to design shared RTS? (or) How to configure RTS for multiple scripts?
A: Two ways we can configure the shared RTS
1. Vugen level: Configure RTS in one script, copy “.cfg” and “.usp” files and paste into
remaining script folders.
2. Controller level: Select all scripts and choose shared RTS and configure the same.
Note: Whenever script having vary number of actions and names, you should not create shared RTS or should not copy “.cfg” and “.usp” files to some other scripts.


SLA configuration:
SLA configuration will allow you to compare derived statistics with expected statistics.
Step 1: Click on new under SLA
Step 2: Choose SLA measurement like total, average, throughput, hits per second, response time
and errors.
Step 3: Provide threshold point and click on finish.

Rendezvous test:
Rendezvous point is the point to instruct the users to wait at a certain location once the specified number of users arrived at that point. It will execute the subsequent request.
Syntax:
lr_rendezvous(“xyz”);
Step 1: Write the function in the script.
Step 2: Go to controller and select rendezvous under scenario.
Step 3: Configure the policy by providing number of users and timeout.

see the following screenshot to better understand.



Types of Testings:

The following are the types of testings.

1. Warm up test/Dry-run test/Discovery test:
This is not the actual test but making ensure that all scripts, test data, environment and
application running fine and stable.
Note: Warm up test will conduct with 10% or 100% of actual load for short duration.

2. Performance test/Baseline test:
Whenever you don’t have SLAs, you have to conduct baseline test with single user, single script, single iteration and execute the script in standalone mode and get the response times, consider as a baseline response time.
Step 1: Choose schedule by group option
Step 2: Choose start scenario begin option to make scripts run one by one.
Note: Application should behave properly under the load how it was behaved with a single user.

3. Load Test:
Load testing is the testing to verify the application behaviour under load.
We are designing the scenario with 100% load.


4. Endurance Test/Soak Test/Longitivity Test:
Verifying whether application is available for longer duration or not.
We have to design endurance test with normal load (50-60% of peak load) for longer duration (12h, 18h, 24h)
Note 1: Objective of this test is to identify the memory leakages.
Note 2: In some cases, we might require to design scenario with normal load by increasing think time and pacing time.

5. Stress Test:
Stress test is the test to identify the breaking point or performance degradation point of
application.
We can stress the application in two ways:
1. By increasing the number of users
2. By reducing the pacing and think time


Note: We can increase the number of transactions by reducing the pacing and think time without adding the users.

6. Failover Test (based on client request):
In the absence of first data cord, verifying whether second data cord can take the load without any failure transactions or performance degradation.
Process:
In one of my test, we designed a failover test for 2 hours duration. After one hour duration, we reported to IT admin and architect people to unplug the first data cord from the network. We verified whether test reported any failure transactions or performance degradations. Monitored second data cord whether it is able to take entire load in the absence of first data cord.
In the above scenario, my role is very minimal. Plugging and unplugging performed by network people.

7. Benchmark Test:
Benchmark test will give a repeatable set of quantifiable results which from current and future releases. These results has to be compared with baseline test results.

8. Capacity Planning Test:
By forecasting the future usage, whatever the sequence of test we are conducting is called capacity planning test.
Process:
We have to conduct load test, stress test to identify application breaking point. Speak with BA people to understand what is the growth of the business and plan for capacity planning.

9. Spike Test:
We have to test the application behavior under abnormal conditions.

10. Volume Test:
Volume test is the test to verify the application behavior under huge amount of load.
Example: Interfaces and Batches

11. Scalability Test:
Scalability Test is the testing of an application to measure its capacity. Scale up or scale down using horizontal and vertical techniques.
We can scale down application in two ways:
1. Vertical scale down: Adding the resources to same node (CPU, memory,cores)
2. Horizontal scaling: We can add multiple nodes to existing system.

12. Network Latency/Wan Emulation Test:
To simulate the network latency (delay) we used HP Shunra (Network Virtualization) and conducting virtualization test.

Memory footprint test: Testing with single user or 20 users and 50 users conducting how many users it can sustain called memory footprint test.Current version of LR will send the notification whenever it reaches the threshold point.
Memory Foot Print in Load Generators:
The no of Load Generators depend on the below items.
1. Ram size of the Load Generator.
2. No of Variables & Memory allocation for variables in LR Script
3. How you are running vuser as a Process or a Thread.
If you are running vuser as a process
1 vuser process1 MDRV Engine5mb
If you are running vuser as a Thread
1 vuser (50) Thread1 MDRV Engine2mb


Analyzer :Analyzer file Extension is “.lra”

1. Cross results option: Allow you to compare two “.lrr” files as part of benchmarking test.

2. Section explorer: Contains “.lrr” path, period, duration, average throughput hits per second, total throughput, hits per second, transaction response time and status code.

3. Graphs: Allow you to add and delete the graphs.

4. Properties: Allow you to exclude/ include think time and generate percentage response time.

5. Controller output message: Controller error message will be displayed which will be help full to analysis.

6. User data: Allow you to write something.

7. Raw data: Based on the request we can pull the raw data and send to architecture people to analysis purpose.

8. Graph data: Will give raw data for graph.

9. Legend: To make you understand which color is indicating which measurement.
 Scale: Indicating number of measurements in graph.

10. Granularity: Time difference b/w two saturation points.
NOTE: minimum Granularity for throughput and Hits per 5 second.
For all remaining graphs 1 second

11. 90th percentile:
90 percent of the transactions are completing with in this limit.
Step1: Write all the response times in ascending order.
Step2: Take out 10% of values from below.
Step3: Which will be the highest value consider as 90% response time.
Note1: We have to report only 90% response time to client.
Note 2: Based on client requirement we can generate 80%, 85%, 90% …etc.

12. Reports:
By default we can generate doc report, Html report, crystal report, PDF report.
Reporting:
Once the test got completed, I will export the response times to excel and I will prepare a comparison report.

Comparison report:
It compares 90th percentile response times with baseline response times of previous test results and I will maintain a RAG (Red Amber Green) status.In some other tab, I will copy merged graph to understand the test results.Apart from comparison report, we will prepare a quick analysis summary which contains objective, scope, how we designed the scenario, test environment, observations in terms of resource utilization, high response times and controller, web server logs.
I will send a mail to get AWR, NMON reports for future analysis.
I will prepare a PPT by analyzing all the supporting files (AWR, NMON …) by mentioning objective, observations, environment comparison, high response transactions, root causes to present to the stake holder.

What is your approach to analyze the statistics?
(or)
What is the process you are following to identify the bottleneck?
A:
Once the test got finished, I am going to compare derived statistics with expected statistics. If both are not comparable, then I will start the process to find out the root cause.
 Client side statistics analysis (analyzer, throughput, Hits per second, Response time).
 Server side statistics analysis (Hardware and OS level statistics).
 Application side statistics (Methods, I/O operations, DB, EJB, Packages etc..).
 Configuration setting analysis (Current limit, Connection limit, Thread limits..etc..).



6 comments: