Project Properties

Once a new project is defined using the New Project wizard, certain additional settings specific to Load Test are needed to configure and run your test. This dialog box can also be accessed from the menu: Project -> Properties Editor...

These are the tabs:

Run Settings

Run Duration

You can specify the length of the test in terms of either time duration or number of hits. A 'hit' is defined as one complete request/response cycle. You can define the hit count either on a per user basis or as an aggregate value for the entire test. The minimum value necessary for a time-based test is 1 minute and the maximum you can test for is 9,999 days. The minimum value necessary for a hits-based test is 1 hit and the maximum you can test for is 999,999,999 hits.

NOTE: For a Time-based test, please note that all the tasks in the Ending Group will be mandatorily executed. The Ending Group may contain tasks that will clean up your database, perform log out operations etc. Therefore, it is a possibility that for run duration specified in terms of time, there will be a slight over-run as the tasks which are in the Ending Group are performed.

Generally, for a hits-based test, you would use a large number of hits and then check how much time the specified virtual users will take to hit your application the specified number of time. If you have specified many virtual users (say 100) and few hits (say 20), then your project will over-run the hit count specified as each user will be performing the tasks at least once.

Load Strategy

A number of execution strategies are supported to execute your test. Each strategy and its behavior is described in the dialog box.

  1. Burst: To test application for sudden loads.
  2. Loop: To test application for sequential load a fixed number of times.
  3. Incremental: To test application to reach its breaking point when the load increases gradually. .
  4. Exponential: Also used to test the application to reach its breaking point. But here, the load increases in leaps.
  5. Quadratic: To test application's recovery from a period of increasing loads.
  6. Cyclic: To test application's with cyclic load.

Detailed descriptions for Load Strategies are provided in the Load Strategies chapter.

Machine Settings

Run project simultaneously on multiple machines

Some times you will like to distribute the load over multiple machines. AppPerfect allows you to install product on multiple machines and then start project on all machines simultaneously. Select this option in case you need to execute test on multiple machines simultaneously. This way you can run load test from multiple machines and can control the load test from one central machine. At the end of execution application will present the load testing result of entire load test as well as individual machines. This requires AppPerfect Load Test to be installed on all remote machines and should have the AppPerfect product service running on remote machines. AppPerfect product service is installed and started automatically on all the machines wherever product is installed. This service by default runs on port 8874 and can be accessed as http://HOST_NAME:8874/AppService. You need to configure the remote machine service settings by adding new remote machine for each remote machine where you need to execute the project

Perform System Monitoring during test execution

If you want to monitor system resources of Web or Application server you should select this option. You can configure the target machines settings here.

Operating System: Select the operating system of the machine AppPerfect should monitor. Supported operating systems are Windows 2000/XP/2003, Linux x86, MAC OS X.

Host Name/IP Address: Specify host name or IP Address of the machine AppPerfect should monitor.

Additional properties of the machine needs to be specified. These properties are specific to operating system.

Windows 2000/XP/2003:

Linux x86 / MAC OS X:

Use Service: Remote machine are monitored in an agentless architecture i.e. AppPerfect doesn't interact any of its agents running on the remote machine to monitor the remote machine. In order to monitor a remote machine using agentless architecture, it requires some additional settings for e.g. On Linux x86 operating system, user should have either Telnet or SSH packages installed and should also have rights to use the same. It may not be possible for some users have such additional settings configured on his machine. It is still possible to montior the machine by installing AppPerfect LoadTest on that machine. AppPerfect LoadTest internally runs a product service "AppService" which will interact with host machine to provide the data.

Other Settings

These settings define other properties related to the test.

Save Successful Response Details: While AppPerfect keeps track of basic response information such as response code and response time, it does not save the complete/raw response as that imposes a significant overhead to the system. However, if your testing requires you to save the complete response, select this checkbox. Failed responses are automatically saved.

Stop execution of test if number of failed task count exceeds: Specify the maximum number of tasks that can fail before the entire test execution is stopped. You can specify this maximum count either for an individual virtual user or for the entire test as an aggregate value.

Retry on failure: On occasion, you may expect that there will be momentary unavailability of your application. If you anticipate such cases, you can specify AppPerfect to retry the request.

Collect top(n) tasks taking maximum response time: The default value provided is 10 tasks. You can change this to view more tasks that take high . You will be able to see an additional node 'Top Tasks' and see the tasks there that take the maximum time to provide responses.

Collect first(n) failed tasks details: The default value provided is 25 tasks. Use this option to save failed tasks details for first N failed tasks. You will be able to see an additional node 'Failed Tasks' and see the first N tasks there that failed.

Treat Timed-out tasks as failed tasks: This is usually the case and this option is enabled by default.

Save all Task details to a CSV file: While AppPerfect keeps track of basic response information such as response code and response time, it does not save the complete/raw response as that imposes a significant overhead to the system. However, if your testing requires you to save the task details to some CSV file you can select this checkbox.

Record Think Time: Under a normal usage scenario, it is assumed that once a page is downloaded (request is completed), the user will take some amount of time digesting the information. The amount of time it takes a user to digest the information before clicking on any other link on the page is called "Think Time". AppPerfect can either record the actual think time that was used when recording the test, or use a default fixed think time value for all URLs, irrespective of the think time taken while recording.

Ignore Think Time during replaying: On occasion, you may want to run test with/without think time to see how it reacts, in such cases, you can use this option.

Resolve subtasks automatically while recording: By default application tries to resolve all subtasks in the page like images/css/js automatically during recording and record them as subtasks of the Main task. You can disable this subtask resolution by unchecking the checkbox here, doing so will result in recording each image/js/css as main task in the test.

Response time and throughput unit: You can configure the unit application should use to calculate response time and throughput. Response time will be calculated in either Milli seconds or seconds as per the selection. Throughput will be calculated in either Kilobytes or Mega Bytes as per the selection.

Execute complete ActionGroup even if duration of test has completed: During execution its quite possible that when test duration is over, ActionGroup is in its middle of execution. You can select this option in case you want ActionGroup to complete its execution even if duration of test has completed.

Close HTTP connection after each iteration: By default application reuse the HTTP connection created during previous iteration. You can select this option to close the connection after each iteration and create new connection for successive iteration.

Response time range: Here you can specify that if during execution response time of the task is outside of the range specified then should application ignore the hit or should replace the response time for that task with the range specified.

Response Validation

While AppPerfect calculates success or failure of a request based on basic response information such as response code and response time, but some times its not sufficient. Like if your application is handling the error conditions and returns error page with response code of 200 then AppPerfect will declare that as successful request but in actual its a failed case. To overcome this AppPerfect provides option to validate the response received. You can specify a text or word to look for in the response and based on that whether to declare request as success or failure.

Database Settings

AppPerfect can load test a Web application or a Database. In order to load test Database it needs connection information about database (Tools -> Options -> Browsers, JDKs & DBs), whether to use connection pool etc. You can provide required information about database here.

Advanced Settings

Browser Simulation Settings

Here you can provide two types of settings:

Browser Simulation: Select the browser whose behaviour you wish to simulate. You can set the percentage of users that will be simulated for Internet Explorer and Mozilla Firefox. Also decide whether you want to clear the browser cache after each iteration. This will affect the response time from your application.

Network Bandwidth: Select the bandwidth settings you wish to simulate. By default 'throttling' is not applied to the test. If you want to limit the requests fired according to the bandwidth, then you can select the check box 'Throttle test based on Network Bandwidth'. You can then select the bandwidth settings. Default values provided are 56Kbps, 256 Kbps, 1Mps(1024Kbps) and 2Mbps(2048Kbps). If you choose 'Maximum bandwidth' then the maximum available bandwidth will be used per user. You can also choose 'Custom bandwidth' and provide custom per user bandwidth settings.

IP Address Settings

If you want to test the load balancing feature of your app server, you can do so by providing a list of valid IP addresses here. Please note the following:

You can configure multiple IP addresses in the following ways for different Operating Systems:

NOTE: Please note that it is not possible to use use IP addresses from a DHCP server. IP addresses have to be specified manually for the system.

Windows:

  1. Right click on Network Connections or My Network Places. Select Properties.
  2. From the list, select the network interface for LAN. It is typically named as Local Area Connection
  3. Right click on it and select Properties. You will get a properties dialog.
  4. From the checkbox list of items this connection uses, select Internet Protocol (TCP/IP). Click Properties button below the list.
  5. You will get an Internet Protocol (TCP/IP) properties dialog box. Select the Advanced... button.
  6. In the IP Settings tab, you will see the list of IP addresses assigned to your computer.
  7. Select Add... button to add more IP addresses to your computer.
  8. Add a valid IP address such that your computer is accessible through this IP address on the LAN. It should not conflict with IP address of any other machine on the same network. Consult your system administrator for more details

Linux / Unix

To create a virtual network interface, you need to provide an additional parameter with the ifconfig command.

ifconfig interface add new_ip_address netmask 0xffffffff broadcast xxx.xxx.xxx.255

An example is given below with the additional parameter highlighted.

[root@test root]# ifconfig eth0 add 192.168.0.1 netmask 0xffffffff broadcast 192.168.0.255 <Enter>

You can add multiple interfaces in similar manner. For instance:

[root@test root]# ifconfig eth0 add 192.168.0.2 netmask 0xffffffff broadcast 192.168.0.255 <Enter>

You can check how these interfaces are implemented by using the ifconfig command without any parameters.

[root@test root]# ifconfig <Enter>

eth0 Link encap:Ethernet HWaddr 00:50:BF:51:9D:FE

inet addr:192.168.0.100 Bcast:192.168.0.255 Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:49875 errors:0 dropped:0 overruns:0 frame:0

TX packets:334288 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:100

RX bytes:91873498 (12.2 Mb) TX bytes:31234567 (8.1 Mb)

Interrupt:10 Base address:0xdc00 Memory:ef111000-ef121100

eth0:0 Link encap:Ethernet HWaddr 00:50:BF:51:9D:FE

inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:100

RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

Interrupt:10 Base address:0xdc00 Memory:ef201200-ef201238

eth0:1 Link encap:Ethernet HWaddr 00:50:BF:51:9D:FE

inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:100

RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

Interrupt:10 Base address:0xdc00 Memory:ef201200-ef201238

You can get more information about ifconfig command here: Linux IP Alias mini-HOWTO

Mac OSX:

  1. Open System Preferences dialog and click on Network in the dialog.
  2. In the Network configuration dialog, click on "+" to add another configuration. Select current interface used to connect to internet like "Ethernet" or "AirPort" from the drop down and provide a new service name.
  3. Selected the newly added configuration and select "Manually" from the Configure drop down dialog.
  4. Provide required information like IP address, Subnet Mask, Router etc. and click on Apply.
  5. If all settings are provided correctly you should see connected for newly added configuration.
  6. Add as many IP addresses as you want.

In Load Test Project properties dialog, Select Advanced Properties tab. IP Addresses is the last section in this tab. This option allows you to test multiple application servers to which requests are forwarded based on the IP address range. Select the check box and select Add button. Enter all the IP addresses which should be assigned to virtual users during execution of the test.

Note: Once configured, you can view details of which requests came from which IP address by selecting the option 'Log Requests fired' in Tools->Options->Log Settings.

This option allows you to test multiple application servers to which requests are forwarded based on the IP address range.

Additional Load Test Properties

In addition to the above, there are a few other properties specific to the Load Test that can optionally be set through

Tools -> Options... -> Load Test