We’re recruiting Senior Testers at the moment and one of the recent candidates said several times during interview that testing is a science. This is not a new topic in testing and his stance on it is not universally shared. Try The Software Entomologist or IM Testy or Randy Rice or consider the title of Myers’ classic, The Art of Software Testing.
For what it’s worth, I probably agree that testing is a science. Primarily, the basic methodology of testers is also the basic methodology of scientists: formulate a model of the subject and then experiment to verify whether the model is a good fit with reality.
It’s indisputable that some testers have a nose for finding bugs, a gut feeling about risky areas, something in their bones that keeps them worrying away at a seemingly minor issue until they expose the major flaw, an intuition about where or how or when to poke the application under test in just the right way to cause it to break, or break in a spectacular way. Some commentators take this to mean that testing is (also) an art, to the extent that anyone can agree on what art is.
And it’s true that testing can be elegant and effective and that it’s possible to admire a piece of work for its form as much as its function. But testing doesn’t have a monopoly on that. One of the reasons science progresses is because scientists have intuition and follow hunches and make lateral leaps to results, only going back to fill in the why once they have the what.
Science isn’t deterministic. When it becomes deterministic and routine it’s not science any more, it’s production. Testing is a science.