Skip to content
Bugwise
Menu
Testing Fundamentals

What Is Software Testing?

A friendly introduction to software testing — what it is, why it matters, what a manual tester actually does, and the core ideas every tester should know.

beginner Mobile & web
Short on time? Switch to the quick version.

Imagine you order a pizza through a food delivery app. You pick a large margherita, add extra olives, pay with your card, and wait. Forty minutes later a small pepperoni arrives. Somewhere between your tap and your doorbell, something went wrong.

Now imagine that problem happens to ten thousand customers on a Friday night. That is exactly the kind of mess software testing exists to prevent.

What is software testing?

Software testingSoftware testingChecking that software does what it should, and finding problems before real users do.Open in glossary → is the process of checking that an app or website does what it is supposed to do, and finding the places where it doesn’t — before real users do.

The quick version

Why it matters

Bugs cost money, trust and sometimes much more. A banking app that shows the wrong balance, a shopping cart that charges twice, or a login screen that locks everyone out can turn into angry reviews, support calls and lost customers within hours. Finding a problem early is usually far cheaper than fixing it after launch.

What a manual tester does

A manual tester uses the app the way a real person would — tapping, typing, swiping, clicking — and compares what happens with what should happen. They read requirementsRequirementA statement of what the software must do or how well it must do it.Open in glossary →, write test casesTest caseA written set of steps, data and an expected result used to check one specific behavior.Open in glossary →, run them, and write clear bug reportsBug reportA clear written description of a bug so developers can reproduce and fix it.Open in glossary → when something is wrong.

Three words people mix up

Manual vs automated

Manual testing means a human performs the checks. Automated testing means code performs them. Both are useful: humans are great at spotting confusing screens and odd behavior; scripts are great at repeating the same checks thousands of times. This site focuses on manual testing.

Why testing matters

Software is written by people, and people make mistakes. Testing is how a team catches those mistakes while they are still cheap and private, instead of expensive and public.

Some real failures

A few well-known examples show how far a small mistake can travel:

  • Mars Climate Orbiter (1999). Ground software from one team produced thruster data in imperial units (pound-force seconds), while the navigation software of another team expected metric units (newton-seconds). The mismatch went unnoticed, the spacecraft flew far too close to Mars, and the mission was lost.
  • The CrowdStrike outage (July 2024). A faulty configuration update to a widely used security product made Windows computers crash and get stuck restarting. Microsoft estimated that about 8.5 million devices were affected. Airlines, hospitals, banks and broadcasters were disrupted around the world.

You probably won’t test spacecraft. But the same idea applies at every scale.

Everyday app examples

Each of these costs something: money, support time, app store ratings, and — hardest to win back — trust.

What a manual tester does day to day

There is no single “typical day”, but most manual testers spend their time on a mix of these:

Error, defect, failure: three different things

These words get used interchangeably in casual chat, but in testing they mean different things. They form a chain:

WordWhat it isBanking app example
ErrorErrorA human mistake, such as misunderstanding a requirement, that introduces a defect.Open in glossary →A human mistakeA developer writes “greater than” instead of “greater than or equal to” in the transfer limit rule.
DefectDefectA flaw in the code or documentation that can make the software fail.Open in glossary → / BugBugA problem in the software that makes it behave differently from what is expected.Open in glossary →The flaw that mistake leaves in the code (or document)The app now rejects transfers of exactly $1,000, even though $1,000 is allowed.
FailureFailureWhen the software visibly does something wrong while it is running.Open in glossary →What happens when the defect is triggeredA customer tries to send $1,000 and sees “Amount exceeds daily limit”.

QA vs QC vs testing

You will see these three terms on job ads, often used as if they mean the same thing. They overlap, but they are not identical.

In practice, a “QA tester” job usually involves mostly testing, with some QA work like reviewing requirements and suggesting process improvements.

The seven testing principles

These seven ideas come from the ISTQB (International Software Testing Qualifications Board), whose Foundation Level is one of the most widely recognized testing certifications. The wording below is ours; the ideas are theirs. They sound abstract at first, but each one describes something you will run into on a real project.

  1. Testing shows that defects are present, not that they are absent. Testing can prove a bug exists. It can never prove there are zero bugs. “We tested it and found nothing” means “we didn’t find anything with the tests we ran” — not “it’s perfect”.
  2. Exhaustive testing is impossible. A simple sign-up form with a name, email, password and country could be filled in billions of ways, on hundreds of devices. You can’t test them all, so you choose wisely using risk and techniques like equivalence partitioningEquivalence partitioningSplitting inputs into groups that should behave the same, then testing one value from each group.Open in glossary → and boundary value analysisBoundary value analysisTesting values at and just around the edges of valid ranges, where bugs love to hide.Open in glossary →.
  3. Early testing saves time and money. A missing rule caught while reading a user story costs a five-minute conversation. The same problem found after release can cost a hotfix, an app store review and a lot of unhappy users.
  4. Defects cluster together. Bugs are not spread evenly. A small number of areas — often the most complex ones, like payments or syncing — tend to hold most of the problems. When you find one bug, look around: its friends are often nearby.
  5. Tests wear out (the pesticide paradox). If you run exactly the same tests over and over, they stop finding new bugs — just like insects become resistant to the same pesticide. Keep reviewing and refreshing your tests, and mix in exploratory testing.
  6. Testing depends on context. Testing a banking app is different from testing a casual game. The banking app needs heavy focus on security and accuracy; the game needs more focus on performance and fun. There is no one-size-fits-all approach.
  7. The absence-of-defects fallacy. (Older syllabus versions say “absence-of-errors”.) An app can pass every test and still fail if it solves the wrong problem or is painful to use. A bug-free checkout flow that takes nine screens to buy a T-shirt is still a bad product.

Manual vs automated testing

Both are real, valuable jobs. They are good at different things.

Manual testingAutomated testing
Who runs the checkA humanA script or tool
Great forNew features, usability, exploratory testing, visual checks, “does this feel right?”Repetitive checks, large regression suites, running the same test on many devices, every build
Weak atRepeating the same 500 checks every day without getting tiredNoticing that a button is ugly, confusing or in the wrong place
Setup costLow — you can start todayHigher — someone has to write and maintain the code

Where testing fits in development

Software is built in a sequence of stages called the software development life cycle (SDLC)Software development life cycleThe stages software goes through, from idea and requirements to release and maintenance.Open in glossary →: requirements, design, development, testing, deployment, maintenance. Testing has its own matching life cycle, the STLCSoftware testing life cycleThe phases of testing work, from analyzing requirements to closing the test cycle.Open in glossary →. Both are explained in SDLC and STLC.

In older “waterfall” projects, testing happened near the end. In modern AgileAgileA way of building software in small, frequent increments with constant feedback.Open in glossary → teams, testing happens all the time: testers review stories before a sprintSprintA short, fixed period (often two weeks) in which a team builds and tests a set of work.Open in glossary → starts, test features as soon as they are built, and keep checking until release.

Testing also happens at different levels, from small to large:

We go deeper into each of these in Levels of Testing.

Mobile vs web testing at a glance

The core skills are the same, but each platform brings its own surprises.

Mobile apps run on a huge variety of phones and tablets. Things to think about:

Websites run in many browsers on many screen sizes. Things to think about:

What you will learn on Bugwise

This site takes you from “what is a bug?” to “ready for a junior QA interview”, one practical step at a time:

Check your understanding

Quick quiz

0/5 answered · 0 correct

  1. 1.A developer forgets to handle an empty address field. Later, a customer checks out with no address and the order fails. Which part of that story is the failure?

  2. 2.Your team ran 300 tests and found no bugs. What can you honestly say?

  3. 3.Which activity is the best example of quality assurance (QA) rather than quality control (QC)?

  4. 4.Why can't you test every possible input and device combination?

  5. 5.Which task is a better fit for manual testing than for automation?

Key takeaways

  • Software testing means checking that an app does what it should, and finding problems before real users do.
  • Bugs cost money and trust; finding them early is usually much cheaper.
  • An error (human mistake) causes a defect (flaw in the product), which can cause a failure (what the user sees).
  • QA improves the process, QC checks the product, and testing is the hands-on activity of checking.
  • Testing can’t prove an app is bug-free, and you can’t test everything — so you choose tests wisely.
  • Manual and automated testing complement each other; manual testers bring judgment, curiosity and a user’s eye.

Finished this page?Nice work, this page is complete!

Mark it as done to track your progress. It's saved in this browser, no account needed.

Its review cards are now in Bites ⚡
Esc

Type to search the whole site.