[TIP] Interface vs Implementation Testing
kumar.mcmillan at gmail.com
Tue Apr 24 07:28:28 PDT 2007
On 4/24/07, Max Ischenko <ischenko at gmail.com> wrote:
> > So, isn't this kind of an argument for functional and regression tests
> > only?
yes! and ... no. OK, maybe
> > (I'm honestly curious. I haven't found much of a need for unit tests in
> > my own code.)
> Functional tests work great when testing "base path" through the system.
> But they don't work that great testing corner cases, unexpected conditions
> and branch logic.
In addition to what Max says here I think he also hit the nail on the
head earlier in the thread explaining how functional tests deliver
binary answers: it worked vs. it didn't work. Unit tests often give
you better answers, like "it didn't work because the message queue
isn't saving messages when you send it more than 5 at a time."
The bottom line for me is still that functional tests have the most
value when a project is young and in a growth spurt; they are also the
easiest to maintain. I have a project at work now that has grown
beyond that stage. Making changes is still easy because it has a
large suite of tests. However, the test suite is about 85% functional
so is slow to run (hurts when I'm on a slower machine, heh) and it's a
little difficult to develop with the failing tests because you have to
dig in deeper. In other words, I would love to have more unit tests
for it. In fact, it would be ideal if I had enough unit tests so that
I could just run those while developing and let the slower functional
tests run in buildbot.
More information about the testing-in-python