What is the 90th percentile and how is it calculated

The 90th percentile is the value for which 90% of the data points are smaller

The 90th percentile is a measure of statistical distribution, not unlike the median. The median is the middle value. The median is the value for which 50% of the values were bigger, and 50% smaller. The 90th percentile tells you the value for which 90% of the data points are smaller and 10% are bigger.

Statistically, to calculate the 90th percentile value:
1. Sort the transaction instances by their value.
2. Remove the top 10% instances.
3. The highest value left is the 90th percentile.

Example:
There are ten instances of transaction "t1" with the values 1,3,2,4,5,20,7,8,9,6 (in sec).
1. Sort by value — 1,2,3,4,5,6,7,8,9,20.
2. Remove top 10 % — remove the value "20."
3. The highest value left is the 90th percentile — 9 is the 90th percentile value.

The 90th percentile value answers the question, "What percentage of my transactions have a response time less than or equal to the 90th percentile value?" Given the above information, here is how LoadRunner calculates the 90th percentile.

In Analysis 6.5:
The values for the transaction are ordered in a list.
The 90% is taken from the ordered list of values. The place from which it is taken is

Rounding to the small value the number: 0.9 * (Number of Values – 1) + 1

In Analysis 7 and above:
Each value is counted in a range of values. For example, 5 can be counted in a range of 4.95 to 5.05, 7.2 in a range of 7.15 to 7.25. The 90% is taken from the range of values that the number of transaction in it and before it is >= ( 0.9 * Number of Values).

This difference in the methods can lead to different 90% values. Again, both methods lead to correct values as defined by the 90th percentile. However, the algorithm to calculate these figures has changed in LoadRunner 7 and above.

Advertisements

How to parameterize an encrypted value in a LoadRunner script

How to parameterize a value that was recorded into a VuGen script encrypted.

Example:

lr_connect("value1", "value2", lr_decrypt("sadbasrjoqwrbqwrlqwrw"); where "sadbasrjoqwrbqwrlqwrw" is an encrypted value.

How can the user parameterize this value?

Parameterizing an encrypted value

To parameterize the value:
1. Create a parameter to store all the encrypted values.
2. Use lr_eval_string to abstract the value of the parameter.

Example:
lr_connect("value1", "value2", lr_decrypt( lr_eval_string("{EncryptedString_param}")));

How to record downloading a file from the server and saving it to a local hard-drive

LoadRunner recording can record retrieving files from the server. However, the action such as clicking on "Open" and "Save as" from the "Download file" window are client side activity that will not be recorded.

If you need to verify if the file is retrieved correctly, you can refer to How to verify download of a file in Web scripts for further detail.

How to verify download of a file in Web scripts

How can the user verify the download of a file in Web scripts? For example, how can the user verify if a .zip file or .pdf file is downloaded correctly?

Solution

1. Text check with web_reg_find.
For example, if you have a .pdf file, you can verify the information by using the regular text check function web_reg_find. Replay the script with extended log option "Data returned by server" to help to identify the piece of information to verify. If you decide to check on the text, the information could be in binary format, not as displayed in the Acrobat reader. If this is the case, then you can use the "/BIN" optioin to specify binary data.

2. Check the size of the download.
You can use the web_get_int_property() function with HTTP_INFO_DOWNLOAD_SIZE to check the size of the download is correct.

Example:
long i;

//Start a transaction to download the file.
lr_start_transaction("file_download");

//HTTP call to the .pdf file
web_url("<HTTP call to the pdf file>");

//Get the download size.
i = web_get_int_property( HTTP_INFO_DOWNLOAD_SIZE );

//Check if the size if empty. If so, fail the transaction. You can set it to a specific number if you know the expected size.
if ( i == 0 ){
//End the transaction
lr_end_transaction("file_download", LR_FAIL);
}

else{
//End the transaction with passed status.
lr_end_transaction("file_download", LR_PASS);
}

3. Output the data to a file.
You can also output the data into a file (i.e., download the file, write it to the hard drive), then open it.

Example: (This is for a .pdf file.)

int fp;
long i;

//Truncate to zero length or create file for writing.
fp = fopen("c://my_file.pdf","wb");

//Start a transaction to time the download time.
lr_start_transaction("file_download");

//Set the parameter size large enough to save the data.
web_set_max_html_param_len("100000");

//Use web_reg_save_param with the correct boundary to capture the data returned by the server.
web_reg_save_param("FILED","LB=","RB=","Search=Body",LAST);

//HTTP call to the .pdf file
web_url("<HTTP call to the pdf file>");

//Get the download size.
i = web_get_int_property( HTTP_INFO_DOWNLOAD_SIZE );

//Write the data saved to an output file.
fwrite(lr_eval_string("{FILED}"),i,1,fp);

//End the transaction
lr_end_transaction("file_download", LR_AUTO);

//Close the file pointer.
fclose(fp);

Error while configuring LoadGenerator over firewall with SSL and client and server side certificates

While configuring LoadGenerator over firewall with SSL and client and server side certificates, below error occurs:

Error: Communication error: Failed to bind socket. A process on the machine is already bound to the same address. [MsgId: MERR-10344]

Error: Two Way Communication Error: Function two_way_comm_create_acceptor failed. [MsgId: MERR-60999]

Warning: Failed to create "web-http router" server. [MsgId: MWAR-29974]

Connection from controller host: workbox-xp is established. [MsgId: MERR-29528]

Error: Communication error: SSL connect error : verify host failed : DNS fail with test [MsgId: MERR-10343]

Error: Two Way Communication Error: Function two_way_comm_resolve_userdata failed. Reason: invalid handle.[MsgId: MERR-60985]

Cause

According to R&D, QA testers have ran some checks & claimed that some configurations e.g. setting Use Server Certificates to High will not work. Explanation given was this was a planned feature that was never implemented, & also it hasn’t been tested by QA in recent versions of LR.

Similarly the use of client certificates might never have been implemented either.

Fix

As a workaround/alternative, R&D recommende to upgrade to LR9.5 to make use of the new feature (secure channel communication) instead of using SSL client and server certificates.

With regards to the new feature in LR9.5, the security implementation uses AES-256 (Advanced Encryption Standard with 256 bit key), and is a symmetric key encryption method.

Error: “10343 : Communication error: Unresolved server name [server name: …” connecting to remote host

When the user tries to connect to a remote host, user receives the following error:

Error:" -10343 : Communication error: Unresolved server name [server name: <remote_host_name>]. (sys error message – WSAHOST_NOT_FOUND) [MsgId: MERR-10343]"

Diagnosis:The host is currently unreachable.

Solution

Make sure that the host is valid

There could be many different reasons that can cause this problem. Among the things you can try is to ping the host to make sure that it is up and running:

From Command Prompt (Start -> Run -> type in cmd.exe):
1. ping with the machine name and take down the returned IP address.
Example: ping mercury
2. ping with the IP address returned from (a) with -a option.
Example: ping -a 111.111.111.111
3. Repeat the same test for the Controller and LoadGenerator machines.

If you have problem on getting the expected information, things you can try includes:

1. Update the host file.
You can try to add the name and the IP address of the Controller/Load Generator machine into the hosts file
a. Go to c:\winnt\system32\drivers\etc\
b. Edit hosts in word editor
c. Add the hostname and IP address to the last line.
Example:
127.0.0.1 localhost
111.111.111.111 mercury

2. Make sure that the hostname does not begin with a number, such as "1_pchost". If so, change the hostname to start with character. For example, "pchost_1"

3. For machines with multiple network card, please refer to Using LoadRunner with machines that have multiple NICs

Using LoadRunner with machines that have multiple NICs

Are there any issues when using LoadRunner with machines that have multiple NICs?

Solution

Multiple NIC can cause communication problems between the Controller and the Load Generator

In general, having multiple NICs in a machine could cause a problem with the Controller-Load Generator connectivity.

The reason is that the communication may not always be tagged with the correct interface when sending a reply to a request from the Controller. If a message is sent out from one NIC to a host machine, but that host knows the Controller by the other interface, then that message will be considered to have come from a different Controller, and is ignored as a Load Generator can only serve one Controller at a time.

Likewise, messages sent from a Load Generator machine to the Controller on an NIC other than the one the Controller knows, will not be marked as comming from the correct host. This may cause the Controller to think the host is not responding. In cases like this, the communication gets "lost" and will result in time-out errors or similar. Removing extra interfaces resolves the problem.

Other possible solutions involve always using the "primary" interface, which is listed under Network and Dial-Up Connections -> Advanced -> Advanced Settings -> Adapters and Bindings in Windows 2000. This dialog allows you to reorder the network interfaces to change their priority. Always reference the top most adapter when connecting with the LoadRunner Controller.