GUI Capture & Replay Tools

GUI capture & replay tools have been developed as a mechanism for testing the correctness of interactive applications with graphical user interfaces. Using a capture and replay tool, a quality-assurance person can run an application and record the entire interactive session. The tool records all the user's events, such as the keys pressed or the mouse movements, in a log fi le. Given that file, the tool can then automatically replay the exact same interactive session any number of times without requiring a human user. By replaying a given log file on a changed version of the application, capture & replay tools thus support fully-automatic regression testing of graphical user interfaces.

GUI capture & replay tools are usually not used for recording entire interactive sessions: their main goal is to record simple interaction sequences, such as the user clicking on the 'File | Open...' menu, and to verify that this click indeed pops up the application's dialog window to open files.

We studied whether existing GUI capture and replay tools can be used to record entire interactive sessions with complex real-world applications, and whether the tools allow or preclude the accurate measurement of perceptible performance given the overhead they impose on the application.

Table 1: Capture & Replay Tools

Table 1 shows the five capture & replay tools we evaluated in our work. All tools are written in pure Java and are available as open-source. They are all capable of recording and replaying interactive sessions of interactive applications based on Java's standard Swing GUI toolkit.

Abbot is a framework for GUI testing. Its basic functionality allows a developer to write GUI unit tests in the form of Java methods which call into the Abbot framework to drive an application's GUI. Besides tests written in Java, Abbot also allows the specifi cation of tests in the form of XML test scripts. It provides a script editor, Costello, for editing such scripts. Besides the manual editing of test scripts, Costello also supports the recording of scripts by capturing the events occurring in a running application.

Jacareto is a GUI capture & replay tool supporting the creation of animated demonstrations, the analysis of user behavior, as well as GUI test automation. Given this broad spectrum of applications, Jacareto provides a number of extra features, such as the highlighting of specifi c components in the GUI, extension points to capture and replay application-specifi c semantic events, or the embedding of Jacareto into the GUI application for providing macro record and replay functionality. Jacareto comes with two front-ends, CleverPHL, a graphical tool with extensive support for recording, editing, and replaying interaction scripts, and Picorder, the command-line record and replay tool we use in this paper.

Pounder is exclusively focused on capturing and replaying interactions for GUI testing. It stores interaction scripts as XML les and is not intended to be used for manually writing tests. Compared to Abbot and Jacareto, Pounder is a lightweight tool, as can be seen by its narrow focus and its small size (number of classes in the table above). Currently, this tool is the one we use for the automated GUI testing. Our GUI testing suite you may download here

Marathon seems to be an open-source version of a more powerful commercial product. Besides providing a recorder and a player, Marathon also comes with an extensive editor for interaction scripts. Marathon records interaction logs as Python scripts.

JFCUnit is an extension that enables GUI testing based on the JUnit6 testing framework. JFCUnit allows a developer to write Java GUI tests as JUnit test case methods. The main focus of JFCUnit is the manual creation of GUI tests (following JUnit's approach), but a recording feature has been added in a recent version.