I remember having a discussion some years ago with my boss, the head of advanced systems development for a company developing embedded system products. I had spent a couple of years convincing him that design was, in principle, a good idea. So one day, he came up to me in the hallway and said, “OK, I’m convinced. Thinking about what you’re going to do before doing it is a good idea. But then, since you’ve thought about it, you don’t need to test it.”
The kicker of that story is that the projects we were designing were cardiac pacemakers for implantation in humans.
But the question—had it been phrased as one—is a good one. Why do we test software? One of the premises throughout this book is that the best way not to ...