Olaf,
I've been thinking about this issue lately as well. Tests should be (in
rough priority order):
1) isolated (unaffected by the presence, absence, or results of other
tests)
2) automated
3) quick to write
4) quick to run
5) unique (providing confidence not provided by other tests/uncorrelated
with other tests)
Writing such tests requires my best design skills--i.e. it is not a testing
problem, it is a design problem. Understanding those design skills is why
I've embarked on my study of software design (see my InfoQ London talk or
www.threeriversinstitute.org/EffectiveDesign.pps for a 20 minute narrated
PowerPoint of my results to date).
Regards,
Kent Beck
Three Rivers Institute