Jtest 7.0 passes with honors
Parasoft's feature-rich app-testing tool keeps getting better
Parasoft Jtest 7.0 is like a Java code development assistant on a SoBe Adrenaline Rush intravenous drip. Not only does it do source analysis, perform coverage analysis, and manage unit test production, execution, and tracking, but now it provides on-the-fly generation of functional tests for everything from stand-alone applications to container-supported servlets and EJBs.
In short, Jtest is becoming a one-stop-shopping Java-testing supercenter that copes with just about every Java component you might develop, regardless of its run-time requirements.
Jtest’s analysis of a target application can be divided into two broad categories: static and dynamic. Static analysis examines the application’s actual code, verifying that it adheres to more than 500 rules adopted from various experts and coding standards. Of course, you can alter the test configuration so that your code is graded against a subset of the total rule collection.
When code is found to be in violation, you are provided with not only a description of the broken rule, but also relevant explanatory notes; a Benefits section (which explains why you should adhere to the standard associated with the rule); and code examples that show both improper and proper coding practices. In addition, Jtest includes a bibliography identifying the source from which the rule was drawn.
Jtest’s dynamic side is its automatic unit test generation. Producing JUnit-compatible tests, Jtest creates not only the unit test code, but does so in such a fashion that delivers intelligent coverage testing. For example, suppose that Jtest is in its automatic test-generation phase and creates two tests and -- after running both -- discovers that the second test provides no additional coverage beyond the first. Jtest will automatically drop the second test from its repertoire, generate a new one, execute it, and see if it extends coverage. If so, Jtest keeps the new test and moves on.
Jtest further improves upon its intelligent unit test creation by looking for corner pocket conditions; that is, it tries to produce tests that cause run-time exceptions.
Also, Jtest understands DbC (design by contract), the practice of embedding parameter and result documentation in Javadoc comments preceding each method. Jtest will read that information and use it to guide its test generation; yet one more instance of techniques that Jtest uses to add smarts to its unit tests.
Of course, there’s got to be some human intervention: It’s up to you to tell Jtest whether a given result or a run-time exception is the correct response of the module under test. Happily, that’s easily done with the information that Jtest provides with each reported result and error. Errors link to the source code, and the values of parameters that were passed to the target method (and that caused the exception) are displayed. Jtest also produces (and links to) stack traces, so you’ve got just about all the information -- and them some -- that any decent debugger would provide to diagnose the generated exception.
New with this is the Test Case Sniffer. The Sniffer watches as you exercise a particular module in your app, then creates functional unit tests based on the information it gains “sniffing” out the methods you’ve called and the data. Suppose you’re testing a collection of servlets that take input on the front end via incoming HTTP requests and database I/O on the back end via JDBC. No problem; Sniffer will surround the module, audit the data flowing into and out of it, and use that information to create its tests.
There is also a command line version of Jtest, which means that after you have a reliable stable of tests assembled, you can incorporate them into your project’s build process. You can even configure the CLI to e-mail developers test results.
With the Test Case Sniffer, Jtest really does provide both white-box and black-box testing: white-box testing via the unit tests it creates by scanning the code and creating unit tests accordingly; black-box (functional) testing via the new Sniffer feature. Add new tests that ferret out security vulnerabilities, and Jtest 7.0 is about as close to a Swiss Army knife for Java testing as you’re going to get.