Open Source Tools for Agile Development

Greater Toronto Software Symposium 2006

Open Source Tools for Agile Development

Venkat Subramaniam gave an overview of development and testing tools.

Unit Testing

JUnit 4.x

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.

TestNG

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.

JUnitPerf

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.

UML Drawing

ArgoUML vs. Jude vs. Violet vs. Pencil and Paper vs. Markers/Whiteboard/Camera

Other tools:

  • 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

It's only fair to share...
Share on FacebookGoogle+Tweet about this on TwitterShare on LinkedIn

Leave a Reply