Lab 1: Automatically Executing a Java Application's Features using a Test Suite

The goal of this lab is to find a feature-rich Java application and develop a test suite that exercises (i.e., covers) the features of the application. Specifically, by executing the entire test suite, all of the features of the application should be exercised.

You are encouraged to use a testing tool, such as junit, and a code coverage tool, such as emma, to help with the automation of the test suite's execution. The test suite will be useful for a future assignment that will involve automatically executing your software to gather run time software sensor information (e.g., CPU usage, memory usage, I/O usage).

A feature is an application capability that can be executed by a user. E.g., Save, Print, Check Spelling, are examples of features that are commonly found in text editor applications. Web server features are Send Page, Establish Connection, Close Connection, Send Code, etc. If your application has a GUI, you may need to create an API that mirrors the functionality of the GUI and call the API from your junit testing code. If your application is a web application, you can use a tool like selenium that allows you to record and playback interactions with the GUI. Links to the aforementioned tools are available from the course website.

Create a test suite that executes all of the features of the software. Use the code coverage tool (i.e., emma) to ensure that the source code has close to 100% coverage. If it does not have close to 100% code coverage, you may have missed a few features.