Greater Toronto Software Symposium 2006
Open Source Tools for Agile Development
Venkat Subramaniam gave an overview of development and testing tools.
He argued that not requiring a TestCase superclass and being able to use annotations instead of the testMethodName() convention were both minor improvements, and in fact that the @Test annotation on its own was just noise. He likes the @Test(timeout = 10) feature and while the expected notation for expected exceptions is much less verbose, it’s also too coarsely grained. Also, JUnit 4.x requires Java 5.
He said that TestNG had marginal benefits over JUnit 4. The xdoclet-style notation allows it to work with pre-Java 5. He was saying that TestNG is worth considering for new projects, but wouldn’t recommend converting from JUnit to TestNG for an existing project.
You can use JUnitPerf for decorating existing tests as Timed Tests (like the @Test(time = 10) in JUnit 4.x), and you can also create load tests, where a specified number of threads are used to call the same test at the same time.
Mock Objects: EasyMock, JMock, and MockRunner
EasyMock looked like a good, lighter-weight alternative to JMock.
Dependency Checking with JDepend
He talked a little about Robert Martin’s Stable Dependency Principle: “The dependee must be more stable than the depender.” He gave examples like these of using JDepend to check the distance of a package from the main sequence. He suggested writing a test to assert that any package had a value of less than .25 for distance from the main sequence.
FindBugs, PMD, JLint
Static code analysis for likely bug patterns. JLint can also analyze code for synchronization problems. JLint keeps track of history so that only new or removed problems are shown each time you run the tool. This helps to reduce intimidation when you find thousands of problems in your code.
Front End Testing Tools: HTTPUnit, Selenium, Watir
Selenium was mentioned, briefly, more than once, and positively during the conference, but no one showed it in action. I’d be interested in hearing more about it.
ArgoUML vs. Jude vs. Violet vs. Pencil and Paper vs. Markers/Whiteboard/Camera
- Cobertura – Test Coverage:
- Jester – Fault Injection or Bebugging or Testing the Tests.
- Simian or PMD’s Copy/Paste Detector – similar code detection
- CruiseControl – Continuous Integration. It was mentioned more than once as a fundamental practice. Surprisingly, not everyone is doing it.
- XPlanner – Agile Project Managment