The Covid and Software Testing Connection: A Pandemic Story

When I look back on the pre-pandemic days, I realize I had been testing software for years without truly understanding what software testing meant. All that changed when the pandemic hit.
Covid was in the news cycle daily, and you couldn’t get away from the constant articles telling you where and how to get tested for the “corona bug”. I was in the shower when I made the connection. The eureka moment was when I realized that the type of testing involving nose swabs and saliva might not be all that different from the testing I did with websites and mobile apps.
In one of the longest showers I ever had, I went down a rabbit hole where I started questioning everything I ever knew about my life and software testing. I asked myself, “If software testing is just like Covid testing—but instead of looking for something wrong with a program, I’m looking for something wrong with a person—then does that idea of testing apply to other kinds of testing? What about the testing my teachers forced on me for years? What about when I’m in the kitchen and I’m testing if the pan-fried chicken is still raw?”
These were some serious questions I was grappling with during the Covid era. Let me tell you my pandemic story.
Before the Pandemic Hit…
I was three years out of college, holding a degree in Computer Science and working as a Testing Manager at a tech startup. You would think that with such a techie background and a focus on testing, I would have already learned the definition of one of the most basic terms in software quality assurance (QA): What is software testing?
Well, I did know how textbooks, online blogs, and YouTube videos define it. But, like those physics problems in school where we just memorized Newton’s equations and then plugged-and-chugged numbers, I only memorized testing jargon without internalizing its concepts. I didn’t really understand the physics behind software testing—yet.
Before making the connection between Covid testing and software testing, I couldn’t explain software testing to a five-year-old. I couldn’t explain why I was performing certain testing activities at work. And I couldn’t come up with innovative solutions to unique testing challenges without Google.
I never grasped how to think critically about software testing until the pandemic hit.
What did Software Testing mean to me before Covid?
Early in my career, while I was learning about software testing on the job and online, I came across many definitions that associated software testing with finding bugs. It was the process of verifying and validating that software behaved as expected. To do this, I would compare actual application behavior with expected behavior based on product and technical requirements.
I liked this definition because it was simple and outlined my testing activities clearly. I knew that before I could test any product, I needed to make sure I had its specifications. It wasn’t until after switching companies that I realized this understanding of software testing pigeonholed how I approached testing software. It was too specific and motivated me to always approach testing as a two-step process: first, get the requirements, and then start testing.
If you’ve been in QA for a while and have been exposed to how different companies test, you know that testing processes come in all forms. There isn’t a “perfect” testing process. We all just do what works for our teams. Back then, I thought I “understood the assignment,” as the kids say. But, really, I was still naïve.
Further along in my career, probably three years in, I heard another definition from a coworker that defined software testing from the perspective of risk. In general terms, he said that software testing was an activity performed to mitigate deploying risky (buggy) software to production.
I also liked this definition because it finally gave my other testing activities purpose. During those past three years, I wasn’t just matching requirements with application behavior daily. I was also writing test cases, communicating with stakeholders, and generating test reports. All of these activities I could finally attribute to helping the team reduce the risk of deploying broken software.
Still, deep down, I hated this definition. It was too “professional”—and by that, I mean it sounded technical and complicated. Without knowing it, I was actually in search of a simple yet accurate definition of software testing that I could relate back to my everyday life.
“Explain software testing like I’m five” is what I wanted.
Explain to me what gravity is without just saying that it’s 9.81 m/s2. Explain to me the concept of gravity so that I can apply it to the hundreds of physics equations out there. Explain to me the physics of software testing.
Connecting the Dots…
My eureka moment came in the shower as I was worrying about the Covid cases rising around me. I had to take a Covid test in a few days, and I was mumbling to myself about how I didn’t want someone poking inside my nose.
I would ask myself silly questions that I knew the answer to:
- What is the nurse even trying to do, sticking a swab up my nose?
- Why will the receptionist need to take my temperature at the door?
- And why will I be asked to take a Covid-19 questionnaire?
Before long, as happens with the magical properties of a long, hot shower, the answer hit me.
Obviously, they want to know if I have Covid or not. But to figure this out, they would first need to know what my temperature is, whether I had been exposed to Covid recently, and even whether the cells in my nose have traces of the virus. Ultimately, they wanted information. Collecting this information and comparing it with the CDC’s guidelines would help them decide if I am a Covid risk.
Sound familiar?
I found the various approaches nurses, receptionists, and others took to collect Covid information about me mind-blowing.
In the world of Covid testing, these nurses search for bugs in people. In my world of software testing, I search for bugs in software.
What does Software Testing mean to me now?
It’s funny how, once we get a really eye-opening shower thought, our minds just go into overdrive. When I connected the dots, I couldn’t stop thinking about how everyday life compared to the software testing world that I knew.
What else in the English language has the word “testing” in it, and how might it relate to collecting information?
The first everyday testing experience that came to mind was my school exams. They are something most students dread, and many experience them growing up.
I remember as a kid not thinking much about why my elementary and middle school teachers were giving us tests. It wasn’t until high school, when I actually started to worry about grades, that I realized what teachers were trying to accomplish. They needed to figure out whether we were absorbing the learning materials. Exams were their method of collecting this information.
To make it easier to visualize the analogies between Covid testing, academic testing, and software testing, I’ll summarize them in a table:
| Covid Testing | Academic Testing | Software Testing | Connecting the Analogy |
|---|---|---|---|
| Nurse | Teacher | Tester | Person or thing administering the test |
| Patient | Student | Software application | Person or thing under test |
| Nasal swab test | Exam | Test plan | Method to collect information |
| Nose fluids | Exam questions | Test cases | Specific information to collect |
| Covid results | Exam grade | Test Pass Rate | Analysis of collected information |
Life after the Covid connection
It’s been two years since I made this Covid connection.
My software testing career has not changed much, but my mindset has changed dramatically. I find myself more confident when I talk with others about testing. When I am confronted with a difficult testing task and confused, I return to the simple concept of information and my role in collecting it. This analogy has simplified many software testing challenges for me in the last couple of years.
For instance, when tasked with conducting performance testing on a simple static website, I initially drew a blank. I had never done this type of testing before.
“I’m not a performance testing expert,” I told myself. But, after overcoming the initial shock of the task, I simplified this foreign testing approach.
What information do my stakeholders want to know about the performance of the website? I started with this simple question and then looked for ways to collect the information others wanted. In the end, I was able to share information—albeit simple website performance data—that satisfied my stakeholders.
I hope that by relating software testing to the simple, everyday testing examples around us, this “techy-sounding” practice is no longer daunting. If you are lost in the world of software testing or intimidated to jump in, then think about this:
Testing is just an activity to collect information. Software testing is just an activity to collect information about software. And, most importantly, this information is used to identify and mitigate software risks.
Just as we understood the concept of apples falling toward the center of the Earth, we can also understand the physics of software testing. After all, we’ve been collecting and sharing information since the day we were born.
What do you think? Do you see similarities between the testing that doctors and software testers perform?
