Her life hung by a thread. It really was a miracle that she lives to tell the story. A few years back, a friend of mine got a stroke. It was just a regular evening run when all of a sudden all went black. She got a second chance only because of a curious twist of faith — a stranger who found her few minutes after the collapse knew CPR and was willing to deploy the skill until the ambulance arrived.
Today my friend follows an entirely new lifestyle. Her new mindset reflects in every action and decision she takes from diet to exercise to work. She keeps a close eye on herself all the time and got the new Apple Watch too to spot signs of a possible attack early enough, just in case a second time would come. Now she knows the signs by heart.
Out of curiosity, I asked her why she goes to such extremes with herself now, and the answer made me stop. “Life is a game of chance,” she said, “I can never be sure that I avoid a second stroke, but I can hack my odds.”
That made the tester-me think. To me, testing is a constant effort to dispel assumptions and excuses. It is to find out new things about the software we develop. We test to produce information, to learn and to increase our understanding. In essense, testing is a tool to tweak the odds to our favor so that the project doesn’t have to suffer a stroke just yet.
Every bug we find is one obstacle less to be found later in the game. One less reason for a customer to leave. One less iceberg in the sea of possibilities. But the sea always extends beyond our line of sight. There just might be more that we don’t know about yet. That’s why I remind myself constantly about what Albert Einstein said.
“No amount of experimentation can ever prove me right; a single experiment can prove me wrong.”
No amount of testing can tell us that the software works, but at the same time, even one test can prove that our software doesn’t work. Stop testing now, and the next test around the corner could have revealed the hairiest showstopper ever. But in the end, we have no way to know, so we have to play the game by the probabilities.
Our job as testers is not to make sure that the software works. Our job as testers is to help the team in building a Vegas-like setting where the house might mostly win.