JWalk is a unit testing toolkit for the Java programming language. Created by Anthony Simons, JWalk supports a testing paradigm called Lazy Systematic Unit Testing. This is based on the two notions of lazy specification, the ability to infer the evolving specification of a class on the fly by dynamic analysis, and systematic testing, the ability to explore and test the class's state space exhaustively to bounded depths.
JWalk is used to test single, compiled classes in the Java programming language (so far, the only supported language). It can be directed to explore all method protocols systematically, printing a lengthy test report, or to perform automated testing according to a state-based model of the class under test. The specification is constructed interactively, as the programmer confirms or rejects test outcomes, and adapts itself quickly to changes in the evolving code. JWalk is therefore well-suited to test-driven development, as used in the Extreme Programming approach to software development.
JWalk is efficient in helping a programmer to generate unit tests that adequately cover the test class's state space. Using JWalk compares favourably against expert manual testing (using JUnit). This is because the tool explores the test class systematically, suggesting test-cases that a programmer usually forgets, and focuses the programmer's attention on the subset of unique test cases that require manual confirmation.
- The JWalk Home Page, http://www.dcs.shef.ac.uk/~ajhs/jwalk/
- A J H Simons, JWalk: Lazy systematic unit testing of Java classes by design introspection and user interaction, Automated Software Engineering, 14 (4), December, ed. B. Nuseibeh, (Boston: Springer, 2007), 369-418.
- A J H Simons and C D Thomson, Lazy systematic unit testing: JWalk versus JUnit, Proc. 2nd. Testing in Academia and Industry Conference: Practice and Research Techniques, (Windsor: IEEE Computer Society, 2007), 138.