The UNH-IOL Protocol Testing Software Package - TestMonkeyTM

Test Monkey

To meet the needs of its higher layer protocol based conformance testing, the UNH-IOL has developed a custom software test tool and API, affectionately dubbed, TestMonkey. A modular and cross-platform API with built in packet generating, scheduling, triggering, and filtering capabilities offering fully automated protocol analysis and testing, TestMonkey is used in a number of UNH-IOL Consortiums including EFM, IPv4, and IPv6.

This tool is used by UNH-IOL personnel while performing tests for consortium members in good standing with the UNH-IOL.

Select any screen capture to view a larger version of the image.

Features

Although many of the commonly available test solutions in the market are well suited to specialized functions, the UNH-IOL feels that TestMonkey is a well rounded software package, well versed in a number of areas where often times other test solutions are short sighted.

Scheduling

Many test solutions are limited in their ability to handle multiple concurrent processes. Simultaneous packet transmission and capture is among the most prevalent of these shortcomings. TestMonkey contains a fully threaded scheduling entity that controls all aspects of packet generation and reception.

Filtering

Many test solutions also rely on a byte-offset mechanism in order to separate the packets of interest from other network noise. As a whole this is an effective mechanism, but it does have its limitations.

  • How does one filter on a field when the exact byte location floats as a result of other fields that come before it?
  • How does one filter on a combination of field values?

TestMonkey solved both these issues by allowing the user to specifically call out the field by name and the intended value for all filtering criteria. This offloads the burden of proper filter creation from the user and onto the program.

Triggering

Some test solutions allow the user to monitor the traffic flowing on the network. Some even allow the user to tag certain traffic on the network. But how many allow the user to fire off user-defined events as a result of an observed network situation.

Following is a list of potential user-defined events:

  • Packet generation and injection into the network
  • Automatic report logging mechanisms
  • New process initiation
  • Additional outside programs initiation

This is just one way that TestMonkey distinguishes itself from the other available test tools on the market.

Friendly GUI

TestMonkey comes packaged with a functional and easy-to-use Graphical User Interface that allows users to organize and operate test scripts with the click of a few simple buttons.

The GUI also allows the user to start and operate any number of emulators to mimic router entities, protocols, or even specific protocol processes (such as a keep alive or a handshake mechanism).

And there's no need to remember difficult script syntax, with the use of a built in script creation tool. Simply click a command, input the user defined values and you're on your way. And once the scripts have been created users can both run the script as is or interact directly with the device through an on the fly command insertion mechanism.

Built in Packet Capture Utility

What's the point in having a network traffic generation test tool that can't easily give the user a way to observe what's happening on the network? There isn't, and that's why TestMonkey also comes packaged with a built in packet sniffer.

Modeled after a number of the popular network monitors on the market, TestMonkey's packet capture utility has taken the best features of these instruments and combined them into a single easy-to-use and visually appealing utility. Utilizing the popular yet intuitive 3-pane interface, any user will feel comfortable operating this capture utility.

TestMonkey's Packet Capture Utility is also fully customizable allowing each user a unique experience custom tailored to their particular needs.

Focus on Design

Often off-the-shelf test solutions fall short of giving the user the precise control required by today's high speed and intricate protocols. Whether it's dealing with the lack of precision of byte-offset filtering, limited transmit and reception control, or just an inability to automate nicely, these hindrances often leave the user frustrated or worse questioning their results.

Constructed from the ground up using Object Oriented design practices and a long list of objectives, great care was taken to ensure that TestMonkey would be a suitable test solution for a wide range of applications.

Client / Server Model

TestMonkey utilizes a client/server model in which the server side code can run atop many of industry finest traffic generation tools (which provide a wide rage of port densities and types) or conversely it can run on any off-the-shelf PC. It will even take advantage of any built in filtering capabilities provided by the hardware. Additionally the client side code written in Java is cross-platform and works equally well in Windows, Linux, Solaris, and Unix environments.

The client/server model also provides the tester the ability to connect to the server with any standard TCP/IP connection thus giving the tester the option to work from his or her desk and away from any noisy server closets. This TCP/IP connection affords an additional advantage in that a client may optionally connect to and control any number of servers allowing for diverse test network topologies.

Modular

TestMonkey's modular designs allows for the simple addition or removal of defined protocol types. Simply drop in an Ipv6 module and you're ready to start scripting your tests.

The modular design also goes one step further by automatically extending the built in Packet Capture utility.

One Language Doesn't Fit All

TestMonkey was designed knowing that not all QA personnel come from the same background. Consequently users have the option of either interface with TestMonkey through the use of TCL scripts through a provided GUI or by creating full-fledged Java applications that interface with the API.