Data-driven testing
Peter Hansen
peter at engcorp.com
Thu Apr 24 11:44:39 EDT 2003
Max M wrote:
>
> Peter Hansen wrote:
>
> > For throwaways, I don't write quite so many tests, and in many cases if
> > it's only a "small" throwaway script (e.g. one or two subroutines only,
> > plus a little mainline) I will write a test or two for the subroutines
> > (because I'm doing TDD, not because I want to have unit tests to make
> > sure my script works properly... if you see the distinction) but never
> > for the mainline.
>
> While I do understand the principles of tdd, testing first and all that,
> I have a hard seing why it should be an advantage to do it in the early
> stages of a project.
I think you're leading us in a new direction. Aahz asked about "throwaway
scripts", and to me that has the meaning of "a script with a very clear
and specific but short-lived purpose". In other words, about the farthest
thing from "early stages of a project" that you could imagine. There is
no project: there is a little script, then nothing. Maybe calling them
nihilistic scripts would be better. :-)
> Normaly if a am entering a new domain, where I don't have a clear
> picture of the requirements, I try out different approaches. Each
> approach using a different combination of ideology, objects and functions.
Agreed. As others have pointed out, XP calls this a Spike Solution
(picture driving a spike all the way through the problem in the most
expedient, ugliest manner possible, to explore it, but with no intention
of using that as a the real solution). Maybe Exploratory Surgery would
be another good view of it.
> This is all to get a feel of the best approach in this particular
> domain. Some times I try out a *lot* of approaches before I end up with
> a particular elegant design.
>
> At which point I am ready to "solve the problem". It is at this point I
> can see the point of unit testing.
>
> In tdd do you really use testing for the first "creative" fase also?
Nope, other than, as I said elsewhere in this thread, when I have very
clear ideas about a specific "unit" of code that I want to include even
in my spike, in which case I may well write it test-first in order to
have some confidence that it will work at all. Failing to do that would
mean a higher likelihood of going down the wrong path, or spending way
too long on a fruitless candidate solution, because my code isn't doing
what I think it's doing.
The XP/TDD view of all this would be like this: "Initially, write tests
for *everything*. When you learn when you don't need to write tests
for something, don't do it. When you realize you made a mistake in not
writing a test, back up a little and slow down, writing tests again
until you're back on track."
-Peter
More information about the Python-list
mailing list