Once a team of developers, who created a pretty much complete set of automated functional tests for their application, asked me how they could possibly benefit from writing unit tests too. Some of them claimed that there is no need for any other type of tests as the automated suite they run could perfectly verify if the application matched client’s requirements.
So why should we even bother?
So let’s imagine you’re building a swimming pool in your backyard. You’ve already dug a hole. Now let’s suppose that you use bricks, tiles and some glue to finish the job. You don’t really care about the fact each brick has a different shape. You are also OK with the fact that some tiles are broken and half of them are just a bit thinner the the rest.
So you start building the walls first. It goes quickly. Even though the bricks are not rectangular, you can always fill the opening that tend to appear every now and then with some clay and the stones you found in your garden last week. Then you put the tiles. It’s not that easy any more as apparently the walls are not that flat and smooth. Fortunately, you’ve a lot of glue to to fix this and what’s more important you don’t really care. You want your kids to have fun as soon as possible. And finally, you complete your work. Soon the swimming pool is ready and full of water.
You try it out, and it works!
And it really does, the swimming pool will not leak in 10 years. The walls are a bit curved, but nobody can see it when the pool is filled with water. Job done.
So do you need to check if every single brick has the same dimensions as the other ones. Do you care if their faces are rectangular? Do you need to unit test the tiles too?
I’ll not answer this here. I’ll just ask some more questions instead 🙂
- Would you build your house the same way?
- Would you build a treehouse for your kids in a similar manner?
- Would it be possible to reuse the bricks (used for the swimming pool construction) to pave your drive when you decide to do so?
- And a bonus one: would you build a shed for your tools behind the garage of your summer house?