AgitarOne - Putting Java to the Test

Agitator for Interactive Exploratory Testing

Powered by Agitator

AgitarOne Agitator provides a unique interactive understanding of code behavior as a developer writes or modifies Java classes or methods. Agitation helps developers validate the expected behavior of their code and discover unexpected behaviors.

Agitator for Interactive Exploratory Testing

To really unit test code, every line, every branch, and every outcome must be tested. That's a daunting combinatorial problem. It's not practical to create such exhaustive tests manually. Agitator automatically creates dynamic test cases, synthesizes sets of input data, and analyzes the results. When objects depend on other objects, Agitator automatically constructs those objects, enabling full analysis of the possible behaviors of the code, even if it depends on third-party libraries.

Test for the Unexpected:  Software Agitation

Observations and assertions

As Agitation exercises code, it keeps track of all meaningful variables, their relationships, and their pre- and post-values. AgitarOne uses this knowledge to create a set of observations, which are displayed and ranked in order of relevance. Observations tell developers what the code really does, regardless of what the specs or design documents say. Developers are often surprised to discover the unintended behaviors of their code.

With a single click developers can promote an observation that describes the intended code behavior to an assertion. Assertions are durable regression tests. Good assertions describe code behavior that should occur under all circumstances. When code changes over time, the assertions should continue to pass.

Observations and Assertions (click to enlarge)

Bugs — catching unexpected behavior

When observations demonstrate behavior that should not occur, developers can fix the code to remedy the problem. Similarly, assertions that fail can indicate bugs in the code. AgitarOne offers multiple ways of helping developers trace the source of their problems.

Domain experts — capture contextual knowledge

The behavior of an application often depends on its context, such as coding standards, business rules, or behavior of an application framework used by the application. Domain Experts codify knowledge about an application’s context, and can dramatically improve the scope of automated tests. AgitarOne is prepackaged with Domain Experts for coding standards, J2EE, Struts, Log4J, and Hibernate.

Factories — refine the input data

Using its auto-generation process, Agitation synthesizes the necessary test input data most of the time with no user intervention. Developers can extend this capability using factories, which specify how to generate input data for specific object types. Factories are reusable and can be shared across teams of developers, cutting down on the time spent re-inventing test scenarios that others have already created. Domain Experts can be configured to apply factories automatically when specified patterns are observed.

IDE integration — make Agitation part of the routine

As an Eclipse-based application, AgitarOne is fully integrated with the Eclipse development environment. This integration increases developer productivity and eases adoption by providing a familiar look and feel. Information gathered during Agitation, such as assertion failures or code rule violations, automatically appears using standard mechanisms such as code markers and problems views. Developers can easily fix problems identified in the code and rerun tests without leaving the development environment.