When is unit-testing bad? [was: Re: does lack of type...]

Cameron Laird claird at lairds.com
Wed Jul 2 15:20:33 EDT 2003


In article <bdunoh$1pms$1 at biggoron.nerim.net>,
Aurélien Géron <ageron at HOHOHOHOvideotron.ca> wrote:
>> In article <87of0pno5s.fsf at titan.staselog.com>,
>> Edvard Majakari  <edvard+web at majakari.net> wrote:
>> >
>> >I'm rather interested in (and fond of) unit testing as well as TDD, so I
>> >though to share my opinions. I once discussed TDD with my friend in here,
>> >and the common agreement seemed to be that TDD is not a silver bullet -
>> >often there are types of computational modules that are very hard to unit
>> >test, eg. think of graphical user interfaces or complex systems, where
>> >forking or threading is concerned.
>> .
>> .
>> .
>> While we're all being rational enough to look at bundles of
>> costs and benefits, this observation hints at a different
>> insight:  that it's possible to *design* for testability.
>>
>> Yes, GUIs and forking and threading are hard to test.  SO
>> DON'T DO THEM.  Or, as I prefer, adopt models of GUI and
>> concurrency development that lend themselves to testing.
>>
>> At this point, I should explain what I mean by that.  I
>> haven't yet figured out how to say it in less than a book;
>> therefore, all I can contribute for today are the slogans
>> above.
>>
>> If you're in a situation where unit-testing is bad, you're
>> probably in a bad situation.  Change your situation.
			.
			.
			.
>I think I sort of understand what you mean, Cameron, but IMHO it looks to me
>that you are trying to fit everything into one vision ("Everything looks
>like a nail when you have a hammer").
>
>There are things that are hard to unit test (I'm talking about automated
>unit tests here) and which you just can't do without in some projects.  For
>instance, the database!  I worked in a couple of projects with automatic
>unit tests for the DB related components, and having lived through it, I'm
>not sure that it was worth it at all!  Manual unit tests would have made
>much more sense.  The same goes for GUIs.  I'd be interested to know about
>projects where they automate unit tests for GUIs, but I suspect it would be
>just as cumbersome. And live without threads?  A lot of projects would be
>better off not using them, I agree with that, but some projects just can't
>do without them!  Web sites are also horrible to automatically unit test.
>In all those cases, I much prefer having a human being go out and do the
>unit tests manually.
>
>I guess my point is that though you may be right in some specific contexts,
>I don't think you can generalize.  That's IMHO of course.
>
>I may not have understood exactly what you meant, though.  You may want to
>send me a copy of your book?  ;-)
>
>Aurélien
>
>

David Bolen answers extremely well in his follow-up.

I think that, more than trying to hammer everything, I'm
saying that, if hammering works for you, then make a point
of building things with nails.

As everyone else, I'm trying to get at "the big picture".
Some organizations accept that
A.  TDD helps over-all business goals;
B.  The {GUI,concurrency,...} programming we
    do now is incompatible with TDD;
and conclude
C.  we must abandon TDD.
I propose instead
D.  Over-all business goals will be best
    served by a {GUI,concurrency,...} ap-
    proach that facilitates TDD.
-- 

Cameron Laird <Cameron at Lairds.com>
Business:  http://www.Phaseit.net
Personal:  http://phaseit.net/claird/home.html




More information about the Python-list mailing list