I’ve just picked up a fault in the AE35 unit. It’s going to go 100% failure in 72 hours.
—HAL 9000, in 2001: A Space Odyssey
Testing is important. All competent programmers know this fact, even if it isn’t always at the forefront of their minds.
Of course, true exhaustive testing is usually impossible. A program or system of any significant size is always going to hold a few surprises as it goes through its life cycle. The best we can do is to test carefully and selectively, and get as wide a coverage as we can.
Historically, programmers don’t always test as adequately as they should. The typical reasons for this are tests that are difficult to set up and run, require manual intervention, or take too long to ...