Whenever you develop an RIA using Flex, Flash, AJAX or Silverlight, odds are you would need to inspect client/server traffic, understand what goes on the wire and diagnose communication problems. Additionally, any online application must be thoroughly tested to understand its concurrency limits and server capacity. We have received a lot of requests from our customers and the users of WebORB to help out with either load testing of their applications or diagnose client/server communication issues. We engaged in several consulting projects to assist customers with QA and that's how the idea for AppPuncher was born. Today I am happy to announce that AppPuncher Debugger Edition is available for download.
So what is AppPuncher? In short, it is a QA system for RIAs. It can help you debug client/server traffic. It can do stress testing and regression testing. It can record and replay all the requests a client is issuing and report any discrepancies in server responses. The product is available in several editions. (The Debugger Edition is available now). See the
AppPuncher feature comparison chart.
What can the Debugger Edition do?
The product will run next to your RIA browser-based client and register itself as a proxy server. Internet Explorer and Google Chrome should automatically recognize the proxy and will route all the client requests through AppPuncher. Firefox requires
AppPuncher Firefox extension.
When you start AppPuncher, you can choose the type of test you would like to run (it is limited to the 'Debugging Session' for now, but soon you will be able to use the product to run all supported types of tests). The start screen looks as shown below:

AppPuncher also starts one debugging session by default:

Structured or Sequencial View Types
Once the browser makes any request, AppPuncher will visualize it in two formats:
- Structure View - displays all requests in a tree hierarchy ordered by the site they are sent to.
- Sequence View - all requests are shown in the same order they are sent.
Structure view:

Sequence View:

AMF Request/Response Visualization
The example above shows requests for static files - images, JavaScript and flash content. Additionally, AppPuncher will detect remoting requests and display information related to the method invocations as shown below:

Once you select a node in either Structure or Sequence View, the contents of the request and response will show up in the panels on the right. If you select a remoting method as shown above (the selected method is getCustomers from an invocation of the Weborb.Examples.DataBinding class), the Request and Response panels will display the following:
Request/Response Multiple View Type SupportNotice both request and response can be displayed in different views. A view can be selected using the View drop-down list:

Visualization Optimizations
Views can be selected independently for requests and responses, but it is also possible to automatically select the same view type by clicking the "Correlate Response and Request Views" checkbox located above the Request panel. When the check box is selected and you change the view for Request, the Response panel will automatically select the same view type:

AMF Requests and Responses displayed in AppPuncher can be compressed to show just the data from the request body (method arguments) as well as response body (return value) by selecting the "Body Only" checkbox located under Request and Response panels:

Debugging Remoting Requests
Once an invocation is captured by AppPuncher, it can be repeated with altered argument values. Double click an argument value in the Request panel (make sure you use the AMF view) and click the Invoke button to make a new invocation with modified arguments list:

The new invocation will show up in the AppPuncher list and can be inspected using the same Request and Response panels.
Request/Response Search and Filtering
In any debuging session it may be important to find a specific request. AppPuncher has a powerful search and filtering mechanism. Search is dynamic and will locate all matching requests as you type a search query.

Filtering allows display of requests and responses of specific content-types. In addition to well-known content types, AppPuncher automatically adds any new ones to the list of filters.

We are working hard on adding new features to AppPuncher. The plan is to release the remaining editions (Regression, Stress and Ultimate in the next couple of months). We would love to hear your feedback on using the product. Download your copy today and please let us know how you like it and what we could do better.