“Not that I don’t think perfect software is a worthy goal, only that it is economically impractical to achieve. “ |
I always cringe when I hear about “bugs” in software. I know that the term refers to an early computer problem that was traced to a moth trapped between two electrical relays, but it still bugs me. This aversion is aggravated by test product and service advertisements that feature insects or adopt cute acronyms that spell out DDT or the like. As a software tester, it makes me feel uneasy, even embarrassed.
At first I thought it was just an inherent dislike of insects and the obvious association. However, I have since come to realize that there is another, more subtle, but maybe more important reason: Testing and debugging are not the same thing.
Testing vs. debugging
A test, by most dictionary definitions, is the process of subjecting a statement to such conditions as will lead to its proof or disproof. First, you have to have a statement; then, you have to create the conditions that will test it. For a software tester, the “statement” is a requirement, and the “conditions” are the test. Now, we all know that requirements are at best vague and at worst nonexistent, but as a tester I must nevertheless first decide what I am going to test. This implies that I must have defined the requirement, at least to my own satisfaction.
Debugging, on the other hand, is a term that is usually applied to what programmers do when they try to get their software to run the way they expect it to. For some, this means getting it to compile without severe errors; to others, it means assuring that each statement and path is exercised without a failure. In either case, the “statement” is the code itself, and the “conditions” exercise its various aspects to assure they behave as designed.
So, testing is about making sure the software meets its requirements, and debugging is about making sure the code works as designed.
While this may sound like splitting hairs, consider a situation in which I can have bug-free software that utterly fails to meet any useful requirements. Imagine a software module that does absolutely nothing. It comprises only nonexecutable comments. It has no bugs! Is this a worthwhile accomplishment? Now, this is obviously an absurd case. But it illustrates an underlying point: The purpose of software development is not to produce bug-free code, but to satisfy user requirements. We develop systems because we need them to do something for us, not because we want them to be bug-free. Granted, the presence of software bugs may prevent the software from meeting our needs, but the absence of them does not guarantee that the software satisfies those needs.
It may not seem so, but this distinction does matter.
Who cares about bugs?
Many of us know testers who take exceptional pride in being able to ferret out truly obscure bugs. For instance, “Did you know that if you keep deleting the first item in a product order, then add it back, then delete it again, over and over, after 32 times it will lock up the computer?” While the testers are dramatically denouncing this as a “showstopper”–after all, it brought down the system–developers are just as emphatically dismissing it as a nonevent: “Who cares? No one would do that anyway.” Testers end up believing that the developers are in denial, and developers become convinced that the testers are obsessive-compulsive. Who is right?
At the risk of being ostracized by my own profession, I have to take the developers’ side on this one. Unless there is a business reason or foreseeable circumstance that would cause a user to add and delete the same item more than 32 times, this bug is not an issue worthy of identifying, let alone resolving. Not that I don’t think perfect software is a worthy goal, only that it is economically impractical to achieve.
The harsh reality is that, with few exceptions (nuclear and medical devices come to mind) we simply can’t afford to produce perfect products. It may not even be possible, given the infinite variations of interactions between person, software, and computer, to rule out an adverse result from any particular set of circumstances. But, even if it were possible, it would take so long and cost so much that no one would wait for the software, nor could anyone afford it when it was finally ready.
For this reason, I think testers should focus on the value the software brings to the customer, who is ultimately footing the bill. Let programmers worry about bugs. Testers need to worry about requirements. This means focusing on the functionality that is most important and likely to be used, not the most unusual and bizarre set of circumstances imaginable.
If customers, who are often represented internally by product managers, perceive that the test organization is assuring their success by verifying that the software will meet their needs, then they will be willing to invest in the time and resources to support testing efforts. If, on the other hand, customers view the testers as anal-retentive perfectionists who obsess over trivia and generally serve as an impediment to the timely enjoyment of their investment, then they will treat them accordingly.
So the next time you uncover a bug, ask yourself whether it is really an issue. Would the customer be willing to incur additional expense and delay their use of the product, or forego it altogether, if this bug goes uncorrected? Or, knowing about it, would they be willing to live with it as long as it doesn’t prevent them from getting their jobs done?
Said another way, which is a more compelling status report from the test group: “We have two high-severity bugs” or “The product does not correctly calculate the invoice item price, and it does not remove the shipped items from inventory”?
Get the picture? If testers want the time, resources, and budget we need to succeed, then we have to position ourselves as an asset to the business, not a drain-trap to development. This means we are not in the bug business at all, we’re in the requirements business. So lose the insects please. //
Linda Hayes is CEO of WorkSoft Inc. She was one of the founders of AutoTester. She can be reached at linda@worksoft.com .
Ethics and Artificial Intelligence: Driving Greater Equality
FEATURE | By James Maguire,
December 16, 2020
AI vs. Machine Learning vs. Deep Learning
FEATURE | By Cynthia Harvey,
December 11, 2020
Huawei’s AI Update: Things Are Moving Faster Than We Think
FEATURE | By Rob Enderle,
December 04, 2020
Keeping Machine Learning Algorithms Honest in the ‘Ethics-First’ Era
ARTIFICIAL INTELLIGENCE | By Guest Author,
November 18, 2020
Key Trends in Chatbots and RPA
FEATURE | By Guest Author,
November 10, 2020
FEATURE | By Samuel Greengard,
November 05, 2020
ARTIFICIAL INTELLIGENCE | By Guest Author,
November 02, 2020
How Intel’s Work With Autonomous Cars Could Redefine General Purpose AI
ARTIFICIAL INTELLIGENCE | By Rob Enderle,
October 29, 2020
Dell Technologies World: Weaving Together Human And Machine Interaction For AI And Robotics
ARTIFICIAL INTELLIGENCE | By Rob Enderle,
October 23, 2020
The Super Moderator, or How IBM Project Debater Could Save Social Media
FEATURE | By Rob Enderle,
October 16, 2020
FEATURE | By Cynthia Harvey,
October 07, 2020
ARTIFICIAL INTELLIGENCE | By Guest Author,
October 05, 2020
CIOs Discuss the Promise of AI and Data Science
FEATURE | By Guest Author,
September 25, 2020
Microsoft Is Building An AI Product That Could Predict The Future
FEATURE | By Rob Enderle,
September 25, 2020
Top 10 Machine Learning Companies 2021
FEATURE | By Cynthia Harvey,
September 22, 2020
NVIDIA and ARM: Massively Changing The AI Landscape
ARTIFICIAL INTELLIGENCE | By Rob Enderle,
September 18, 2020
Continuous Intelligence: Expert Discussion [Video and Podcast]
ARTIFICIAL INTELLIGENCE | By James Maguire,
September 14, 2020
Artificial Intelligence: Governance and Ethics [Video]
ARTIFICIAL INTELLIGENCE | By James Maguire,
September 13, 2020
IBM Watson At The US Open: Showcasing The Power Of A Mature Enterprise-Class AI
FEATURE | By Rob Enderle,
September 11, 2020
Artificial Intelligence: Perception vs. Reality
FEATURE | By James Maguire,
September 09, 2020
Datamation is the leading industry resource for B2B data professionals and technology buyers. Datamation's focus is on providing insight into the latest trends and innovation in AI, data security, big data, and more, along with in-depth product recommendations and comparisons. More than 1.7M users gain insight and guidance from Datamation every year.
Advertise with TechnologyAdvice on Datamation and our other data and technology-focused platforms.
Advertise with Us
Property of TechnologyAdvice.
© 2025 TechnologyAdvice. All Rights Reserved
Advertiser Disclosure: Some of the products that appear on this
site are from companies from which TechnologyAdvice receives
compensation. This compensation may impact how and where products
appear on this site including, for example, the order in which
they appear. TechnologyAdvice does not include all companies
or all types of products available in the marketplace.