[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Unit Test Coverage

On Thu, 15 May 2003, Jerry Jackson wrote:

> In general, the coverage question is addressed by the "try to break the
> app" approach.  When a knowledgeable developer can no longer come up
> with a scenario that breaks the app, declare victory and move on (assuming
> that we're talking about one of these "hard" domains and we can't expect
> to get information from a coverage tool).

On the subject of coverage, I'd like to mention QuickCheck, even though
it's only for haskell (not exactly a lightweight language).  I recently
had occasion to use it, and I was surprised to realize how good it is at
flushing out corner cases that I hadn't considered.

Using QuickCheck feels very different from writing unit tests, because
it's based on checking entire classes of inputs, instead of just
particular ones.  It feels like a very useful, and orthogonal, way of
testing code.  It's also extremely *lightweight* to use -- you don't have 
to think of the corner cases; it does it automatically.

The idea behind QuickCheck would work in any language, as long as there
was some way to automatically generate inputs for a function.  Since most
(all?) "lightweight" languages are dynamically typed, this might be

The QuickCheck home page: http://www.math.chalmers.se/~rjmh/QuickCheck/

I wrote about my experience with QuickCheck here:

Kimberley Burchett