What Defines a Software Bug?

January 15, 2019
John Kensinger
John Kensinger

A software bug could be something as menial as a misaligned image on a landing page, or as serious as a mobile app spontaneously crashing during use. Here are some explanations:

“A software bug is a problem causing a program to crash or produce invalid output. The problem is caused by insufficient or erroneous logic. A bug can be an error, mistake, defect or fault, which may cause failure or deviation from expected results.” (techopedia)

“A software bug is defined as an error, flaw, failure, or fault in a computer program or system that causes it to produce an incorrect or unexpected result, or to behave in unintended ways.” (steelkiwi)

“A Software DEFECT / BUG is a condition in a software product which does not meet a software requirement (as stated in the requirement specifications) or end-user expectation (which may not be specified but is reasonable). In other words, a defect is an error in coding or logic that causes a program to malfunction or to produce incorrect/unexpected results.” (softwaretestingfundamentals)

While the definition of a bug may vary slightly, one thing is clear: in order to prevent the large variety of issues that can occur before, during, or after a product launch, companies and individuals must be proactive in making sure that their applications are meeting the high standards of consumers today. How can they do this? By running thorough QA tests to find rampant bugs.


How do you categorize the variety of software bugs?

At test IO, we organize our bugs by type (visual, content, usability) and severity (critical, high, low):

  • Critical: Preventing a core function of the app or website, causes a potential loss of income for the company running the app or website - e.g. an app crash or ‘not able to login’
  • High: Serious impact on user experience but doesn’t prevent the function of the app or website
  • Low: Minimal impact on user experience
  • Visual: The user can accomplish a task, but the interface looks wrong, typically because of responsive design, CSS, HTML, or layout framework problems
  • Content: missing data, images, or broken links
  • Usability: Improvements to existing features and functions that would make the product easier and more intuitive to use

How do you find these bugs?

The type of testing you choose depends on what you're looking to find:

Functional Testing: checking that all functions work from a user perspective

  • Smoke Test: testing core functional pieces of the software before moving to the next stage of testing
  • Sanity Test: confirming that code changes have not created new issues
  • Compatibility Test: testing across devices or environments
  • Regression Test: a more in-depth version of a smoke test
  • User Acceptance Test: testing with actual users of an application to ensure that functionality is as expected, without the biases of internal testing

Exploratory Testing: unscripted testing that allows testers the freedom to go down multiple different -- perhaps less common or intuitive -- paths to identify bugs that would otherwise slip through the cracks of a scripted test (test IO provides a variety of exploratory test types, listed below)

  • Rapid Test: a test that is designed to catch only high-priority bugs, and can be completed in as little as (2) hours
  • Focused Test: testing a specific feature of section of an application
  • Coverage Test: testing whether your application will work on devices of varying screen sizes, different browsers, on multiple versions of iOS, or on different Android devices
  • Usability Test: gathering feedback from users on the ease and intuitiveness of an application’s use
  • Custom Test: the most versatile and broad type of test, allowing you to pull in different components from each of the tests we offer in order to offer a broader scope of insight

Beta Testing: testing pre-release

Black Box Testing: testing with zero knowledge of how the software has been put together

Mobile Testing: testing on mobile devices, such as iPhone and Android

Wearables Testing: testing on wearable devices, such as Apple Watches

IoT Testing: Internet of Things; testing a variety of connected devices


As you can see, there are a variety of ways to test software, all useful given the right situation. Matching the proper form of testing to your needs is the first and most important step; after that, it's all about finding the right method to test.

While it will probably never be possible to create the "perfect software," devoid of any kind of software issue, you can certainly get closer to maintaining near-perfect software by making a thorough QA process part of your development routine. We prefer crowdtesting here at test IO, but we may be biased.

Read More

November 25, 2019
iOS testing: TestFlight or Resigner

Here's our guide to which method you should use you to distribute your IOS app to the crowd.

November 15, 2019
Exploratory Testing vs. Test Case Testing

Exploratory testing emphasizes creativity and learning. Test Case testing emphasizes planning and execution. Which one is right for you?

July 19, 2019
Reducing Risk in Agile Development

How can you reduce risk when implementing agile development in your SDLC?

Ship Faster, Sleep Better

Get a Demo
twitterfacebooklinkedin