Apica ZebraTester is a scripting tool for load testing that offers a range of features.

Recording Tests


With the universally useable HTTP(S) Proxy Recorder, test scenarios can be recorded using any Web Browser –Internet Explorer, Firefox or Safari – and can include AJAX calls and requests made from pop-up windows. Data traffic for HTTP(S)-based web service client programs can also be recorded. Simple test scenarios can be created automatically with an Integrated Web Crawler which discovers all the pages comprising a website. Test scenarios can also be created manually by importing pre-defined URL calls from a definition file.

Universal HTTP/S Proxy-Recorder

screenshot recording

Note: when using Firefox, an Add-On named "Recording Extension" supports even more convenient load test scenario recording. The Add-On is displayed in the "Firefox Toolbar" at the top of the web browser window.

Supported Authentication Methods

Apica ProxySniffer supports the following authentication methods during recording and load test execution processes: HTML Form-Based Login HTTP Basic Authentication HTTP Digest Authentication NTLM Kerberos SSL Authentication using X509 Client Certificates in PKCS#12 format SSL Authentication using Smart Cards and HSMs (PKCS#11 security devices)

test methods

load test methods


tool methods

Automatic Protection from False Positive Measurement Results

To prevent false conclusions from inaccurately executed measurements, such as checking only the HTTP response codes in URL calls, Apica ProxySniffer provides a protective mechanism against "false positive" measurement results. When recording tests. this function automatically analyses all URL response data content and configures most useful text-search fragments in order to automatically check the content of the recorded web pages during the execution of a load test:

Integrated Web Crawler

The Integrated Web Crawler, named "Page Scanner", browses and explores web server pages automatically in a recursive way. Primary Benefits: the scan result can be turned into a "normal" web surfing session, resulting in load test generation. This provides a simplified way to create a web surfing session, instead of recording single web pages manually. However, Page Scanner can only be used to acquire web surfing sessions which do not require HTML form-based authentication. This tool is not a replacement for recording web surfing sessions of real web applications. Other Benefits: Page Scanner allows the detection of broken links inside a web site, and provides statistical data about the largest and slowest web pages. It also supports searching for text fragments over all scanned web pages. Note: Page Scanner does not interpret JavaScript code and does not submit forms. Only hyperlinks are considered. Cookies are automatically supported.

web crawler

crawl web

false postive

integrated web crawler

tool crawler

page scanner

page scanner tool

Definition Files

Definition Files are often used to create tests for Web Services, for example if no client program is available for recording.

Definition File:

-defaultURL -defaultRequestContentDirectory "D:XmlRequestData" -defaultRequestContentType "text/xml" POST /putDataDo?action=addAddress 200 -requestContentFile requestData1.xml -responseContentType "text/xml" POST /putDataDo?action=getAddressList 200 -requestContentFile requestData2.xml -responseContentType "text/xml"

Post-Processing Recording

The values of CGI and HTML form parameters can be extracted and assigned in an easy way by just clicking on the corresponding extract and assign icons.


CGI and HTML Form Parameter and XML, SOAP and JSON data

from Input Files, whose data are read at run-time in sequential or randomized order from HTML form parameters; for example, hidden form fields from CGI parameters contained in hyperlinks, in form actions, or in HTTP redirects from HTTP response header fields from values of received XML and SOAP data from values of received JSON data from any text fragments of received HTML and XML data from User Input Fields (which are arbitrary configurable load test input parameters) from output parameters of Load Test Plugins

A variable can be assigned as follows, irrespective of how it was extracted: to the value of an HTML form field to the value of a CGI Parameter to a value of XML and SOAP data to a any text fragment of a HTTP request (within the HTTP request header as well as within the HTTP request content) to the protocol (http/https), or the host name or the TCP/IP port of one or all URL calls to the path and the name of an uploaded file to the user’s think time of one or all web pages to the response verification algorithm of an URL call (searched text fragment or size of received data) to the number of iterations, and/or the pacing delay, of an inner loop to some HTTP request header fields (most request header fields are automatically handled by Proxy Sniffer) to an input parameter of a Load Test Plugin

Dynamically Exchanged Session Parameters

Dynamically exchanged session parameters such as .NET VIEWSTATE values, or also at runtime created order numbers of a shopping basket, can often be handled automatically in the GUI with just one mouse click the icon in the Var Finder menu. But also – if automatically handling is not possible – only extracting of the variable has to be done manually. The assignments to all succeeding URLs where the variable should be used can be done implicitly by selecting the corresponding check box in the variable extract dialogue:

session parameters

dynamically sessions

exchange session parameter

post processing



post processing tool

processing tool



Input Files

"Input Files" (data files) can be used to extract variables from a text file, such as a username and a password per simulated user – that can then be assigned to a login form. The functionality of input files is generic which means that variables for any purposes can be extracted.

User Input Fields

"User Input Fields" are arbitrary global variables whose values are requested each time a load test is started. The following example uses two User Input Fields: The first User Input Field is used to make the host name of the URL calls variable, in order that the same load test program can be executed against a development system and a test system, without the need to record two web surfing sessions. The second User Input Field is used to make the User’s Think Time of all Web Pages variable.

input file

input files

input tool

load test tool input

input file

input file1

input file 2


XML and SOAP Data


Measurement Results Per Test Run

Results per URL Call (Overview)

test run

Results per URL Call (Details)

results url call

Response Time per Page

response time


url time

time per page

measure page

In-Depth Measurement of HTTP(S) Response-Streams/Detection of Jerky Video Playback

Proxy Sniffer supports the in-depth measurement of HTTP(S) response-streams. This feature is especially useful for Web sites that contain videos and allows you to detect whether jerky video playback occurs during viewing of a video and to then diagnose if enough network bandwidth is available for all users so that the video can be viewed by each user without interruption. Note that Apica ProxySniffer can measure only video streams that are delivered within a single URL response (such as from YouTube). This feature can also be used as a reference for optimizing response data. Colored charts show elapsed times for receiving fragments of user data (in red) and overhead data of the chunked protocol (in blue).

Image 1 of 5: Enabling the option "Resp. Throughput Chart per Call" when starting the load test.

2 of 5: Calling the captured data of the HTTP streams.

http response

response streams

Image 3 of 5: Measured internal throughput of a video on a preset viewing time of 3 minutes (180,000 milliseconds). The linear flow and the flow rate peak at the beginning of receiving the data indicates that the delivery is made by a special video server which prevents on the one hand network peaks and ensures on the other hand that no jerky video playback occurs.

4 of 5: Throughput measurement of a PDF document which should be received in 30 seconds by a linear network throughput, in order that the beginning of the document can already be viewed after some few seconds. The second measured sample does not meet this requirement.

5 of 5: Throughput measurement of a HTML response received from a Web portal server. It is conspicuous that the most response time is spent in the chunked protocol overhead, but that the user data (payload) is received in a relatively short time. One explanation could be that the Web page is "calculated" piece by piece by the portal server (page navigation, page main content, page footer), and that some server internal delay times occurred during the calculations..


Users Waiting for Response

result per test run

TCP Socket Connect Time


SSL Cache Efficiency

per test


Real-Time Monitoring and Real-Time Error Analyses

The screenshot shown above shows the real-time overview window of a single Exec Agent job. For cluster jobs as shown below, a different real-time overview window is displayed. By clicking on the magnifier icon of a cluster member (in the column Job ID), the real-time overview window of the corresponding Exec Agent job can be displayed.


real time

real time2

Real-Time Overview Window

The screenshot show above shows the real-time overview window a single Exec Agent job. For cluster jobs as shown below a different real-time overview window is displayed. By clicking on the magnifier icon of a cluster member (in the column Job ID) the real-time overview window of the corresponding Exec Agent job can be displayed.


Response Times per Web Page

real time 3

Detail per URL

real time 4

Error Overview

real time 5

Error Overview

real time 6

Error Detail

real time 7


real time 7

real time 8

Email and SMS Alert Notifications

Email and SMS Alert Notifications can be released during the execution of a Job. For example if a predefined threshold of the response times is exceeded, or if too many errors (session failures) are measured within a configurable interval. Additionally, informative Email and SMS notifications can also be released when a job cannot be started, when a job starts, when a job crashes (internal error) and when a job has been completed.


Comparison of Test Runs

SSL Cache Efficiency

real time8

Response Time Comparison

real time9

Performance Comparison

real time10

Error Rate Comparison

real time11


Load Curves

Overall Load Curves

load curves

Response Time per Page Load Curves

load curves 2

Response Time per URL Load Curves

load curves 3

Miscellaneous Features

PDF Reports

PDF Reports can be created about Measurement Results per Test Run, about Comparisons of Test Runs, and as well as for measured Load Curves. Additionally, comments related to test measurement results can – from within a Preview Function – be inserted at various points. In this way, it is possible to create fully commented Load Test reports directly within Proxy Sniffer, without the need for any additional text editing. Furthermore the PDF reports can also be branded with the logo of your company.


Load Test Plugin Wizard




Load Test Plugins are enhancements to the Proxy Sniffer product. These Plugins are configured using the "Var Handler", and are called by Proxy Sniffer during the Load Test execution. This is the only functionality where Proxy Sniffer cannot keep its promise of "no programming knowledge required". The core function(s) of a Plugin must be created by a user experienced in Java programming. After the Plugin has been created, it can be used in every Load Test Program, and the use of a Plugin in itself does not require knowledge of Java programming. In order to simplify the process of creating a Proxy Sniffer Plugin, a wizard named "Plugin Template Generator" is available which automatically generates all the Java code necessary for the integration of the Plugin with the Proxy Sniffer product; thereafter, only the core function(s) of the Plugin need to be coded by a programmer.

Command Line Support

The following example of a Shell Script, written on Mac OS X, executes the same load test several times with a different number of users (1, 20, 50, 100, 200 and 500 users) on a load generating cluster.