As the world continues to deal with COVID-19-related uncertainty and risk, and changes that vary every day with every possible demographic, sources of positivity can seem scarce, or even non-existent at times. Confusion and dead-end paths are causes of worry for many, and I’m reminded that, for medical professionals—and software testers—they are powerful inspirations for the rest of us to keep fighting and exploring all that remains unknown.
In early April, after receiving an email stating that someone at an event I had attended tested positive for COVID-19, I experienced three straight days of fever and chills, and was subsequently tested for the virus. I anxiously awaited my results for five long days while remaining in self-isolation in a locked bedroom in my home. When they were finally posted, I read the following:
Not Detected: Your results do not currently detect the presence of novel coronavirus disease 2019 (COVID-19) in your sample. Negative results for a sample collected while a person has symptoms usually means that COVID-19 did not cause your recent illness.
It is possible for this test to give a negative result that is incorrect (false negative) in some people with COVID-19. This means that you could possibly still have COVID-19 even though the test is negative. If this is the case, your healthcare provider will consider the test result together with your symptoms, possible exposures, and geographical location of places you have recently traveled in deciding how to care for you.
If your result came back as Not Detected, have a follow-up conversation with your healthcare provider to see if any other testing is needed.
After more than a week of worrying if I had contracted COVID-19, and if I’d potentially passed it on to anyone in my family, I was ultimately told, “You…probably don’t have it…but there’s no way to be certain.” While I was obviously thrilled that my results weren’t “Detected,” the “Not Detected” result—and the “Don’t get too excited, pal,” disclaimer that followed—initially failed to deliver the relief and elation that a more definitive “You do not have COVID-19,” result would have provided me.
But, I then remembered something that’s always true, though, often hard to accept. Definitively, “there’s no need to test this further” test results are make-believe. These results are used to appease, not inform. Providing someone with false promises of “You contain zero bugs,” only increases the likelihood of that person unknowingly infecting more people, especially if they’ve been led to believe that it’s impossible for them to do so. This quality of life “assurance” simply isn’t something that any doctor, nurse, or lab tech can attest to, no matter how good it would make their patients feel.
This is a classic software tester dilemma. As the quote from the famous software engineer, Edsger W. Dijkstra, goes, “Program testing can be used to show the presence of bugs, but never to show their absence!” Any good tester, or great testing team, even if they’re given all the time, test environments, and current data sets they could ask for, is still limited in what they, and their tests, can ultimately “prove.” For example:
- No matter how many bugs a tester finds, they cannot prove they found all the bugs.
- A tester can show how they found no bugs, but they cannot prove this means there are no bugs.
- A tester can perform tests that reduce risk, but they cannot eliminate risk.
My COVID-19 test results mirror this honesty.
- “We didn’t detect COVID-19”…does not mean I don’t have COVID-19.
- “It is possible for this test to give a negative result that is incorrect.”
- Even if your result came back as ”Not Detected,” other testing may still be needed.
It wasn’t until my symptoms decreased, and ultimately disappeared completely, that I remembered to leverage the uncertainty of my test results, and not be let down by them. Uncertainty is a motivator, not an annoyance. Uncertainty is a true constant in our lives, a reminder to keep looking for ways to make the health of your body (or your code) a priority, and to uncover new ways of accomplishing this lifelong challenge that can be shared with others so they can do the same.
Great testers, of any discipline, don’t just look for bugs. They don’t just find bugs, and throw them over the wall, or onto a report, with no details about how they found them, or how they might be erased. And, when great testers don’t find any bugs, they don’t just report “No bugs! Ship it!” or “No bugs! Get back out into those heavy crowds of people!”
Great testers point out other things they notice while exploring the test subject. They note things that look like potential bugs to them, even though they might not be a problem to someone else. They point out what’s not a bug today, but very well could be one tomorrow. And, they offer suggestions to reduce the likelihood of those bugs returning in future test subjects and release candidates.
There’s a certain responsibility that all testers—software testers and medical testers alike—all possess. It’s the clear responsibility to not only tell us the truth, but also to tell us what falsities to stop believing as truth, to help us avoid causing ourselves or others further harm. This honesty helps us learn how to start being a lot more comfortable with the truth, whether we believe the news is good or bad. Because once we, like testers, stop believing that good news means we’ve done “enough,” or that bad news means “game over,” we’ll never miss the opportunity to take steps toward improving the quality of our own lives, and the lives of those around us.