What Is Software Testing?

A plain language guide to what software testing is, why it exists, and what types there are.

Software testing is the process of evaluating software to find defects, verify it works correctly, and confirm it meets quality standards before it reaches users. Every app, website, and piece of software you use has been tested before release. When it has not been tested properly, the results for users can range from annoying to catastrophic.

The Official Definition of Software Testing

The American Software Testing Qualifications Board (ASTQB) defines software testing as "the process of assessing software quality and mitigating its risk of failure in operation."

The International Software Testing Qualifications Board (ISTQB) defines quality assurance as "activities focused on providing confidence that quality requirements will be fulfilled."

Testing is a specific activity within the broader umbrella of quality assurance. Testing finds defects in a specific piece of software. Quality assurance is the set of processes designed to prevent defects across everything a team produces. For a deeper look at the distinction, see our guide on what ISTQB is and how it standardizes testing globally.

Why Software Testing Exists

Software failures have real consequences. A register malfunction forced Starbucks to give away free drinks. A radar failure caused the F-35 fighter jet to be unable to detect targets. These are documented events, not hypothetical risks. Real software failures have cost organizations sizeable amounts of money and, in some cases, endangered people. Source: AltexSoft

The purpose of testing is to find problems before they reach users. A defect found during development costs a fraction of what the same defect costs if it reaches production. Software testers are essential to making sure all the technology around us works as intended.

ASTQB and AT*SQA maintain the globally recognized standard for software testing knowledge through the ISTQB certification scheme. Register for ISTQB through AT*SQA and get free practice exams, a free micro-credential, and 365 days to schedule your exam from anywhere in the world.

Key Software Testing Terms

The ISTQB glossary gives the field a precise global vocabulary. These are the four terms most commonly confused:

Error
A human action that produces an incorrect result. A developer writes incorrect code. The error happens in the person's mind.
Defect
A flaw in a software component that can cause it to fail. The incorrect code the developer wrote is a defect in the software.
Failure
When software behaves differently from what was expected. The defect causes the software to produce the wrong output at runtime.
Root Cause
The fundamental reason the defect exists. Understanding root causes helps prevent the same class of defect from recurring.

The full ISTQB software testing glossary is available free from ASTQB and covers every defined term that appears on the ISTQB exam. Understanding these terms precisely is one of the most valuable things a tester can do, both for the exam and for communicating clearly on the job. If you want to see how that foundation turns into actual work, read How to Become a Software Tester.

What Are the Main Types of Software Testing?

Software testing covers a range of activities that each evaluate different aspects of a system. Here are the main types:

  • Functional testing Verifies that software does what it is supposed to do according to its requirements. This is the foundation of most testing work and is covered in depth by the ISTQB Foundation Level syllabus.
  • Non-functional testing Covers how well software performs: speed, security, usability, and compatibility. Performance testing and security testing are specialist ISTQB certifications in this area.
  • Manual testing A human tester interacts with software the way a real user would. Strong for exploratory testing and usability evaluation where human judgment is needed.
  • Automated testing Uses tools and scripts to run tests without human execution. Particularly valuable for regression testing and for integrating testing into CI/CD pipelines. ISTQB offers a Test Automation Engineer certification for testers who specialize in this area. For the bigger picture, see What Is Test Automation?.
  • Regression testing Confirms that new changes have not broken existing functionality. Run after every change to the software and one of the most common uses of test automation. Covered in the ISTQB glossary with a precise definition.
  • Integration testing Verifies that different components of the system work together correctly. Especially important in modern applications built on multiple services and APIs.
  • User Acceptance Testing (UAT) Conducted by end users or stakeholders to confirm that software meets their actual needs before release. The last check before a product reaches the public.
  • Static testing Reviewing documents, requirements, and code without running the software. ISTQB covers this in Chapter 3 of the Foundation Level syllabus and it is an area many candidates under-prepare for.

Who Does Software Testing?

In smaller organizations, developers often test their own code alongside a small QA team. In larger organizations, software testing is a specialized function with dedicated roles:

ISTQB certifications cover the full range of these roles. Foundation Level applies to everyone involved in testing. Advanced Level certifications cover Test Management, Test Analyst, and Technical Test Analyst specifically. Specialist paths also branch into Security Testing and Performance Testing. The ISTQB scheme has issued more than one million certifications across more than 130 countries. If you are trying to work out where you fit, use Which ISTQB Certification Should I Take?.

Thinking about a career in software testing? See our full guide at How to Become a Software Tester. Already interested in certification? See Is ISTQB Worth It? and How Hard Is the ISTQB Foundation Level Exam?

Frequently Asked Questions

  • What is the difference between software testing and quality assurance?
    Software testing evaluates a specific product to find defects. Quality assurance is the broader set of processes designed to prevent defects from occurring in the first place. Testing is a component of quality assurance. ASTQB and ISTQB both publish precise definitions of each.
  • What is the difference between a bug, a defect, and a failure?
    In ISTQB terminology, a defect (or bug) is a flaw in the code. A failure is when that defect causes the software to behave incorrectly. An error is the human action that created the defect. The full definitions are in the ISTQB glossary, available free from ASTQB.
  • What is regression testing?
    Regression testing verifies that changes to software have not broken existing functionality. It is run after every code change and is one of the most common uses of test automation. Covered in detail in the ISTQB Foundation Level syllabus.
  • What is the most important type of software testing?
    There is no single most important type. Functional testing verifies that the basics work. Security Testing and Performance Testing matter when the product carries security or performance risk. The appropriate mix depends on the software being built and the risks involved.
  • How do I learn software testing?
    Start with the ISTQB Foundation Level syllabus, available free from ASTQB. It covers the core concepts, terminology, and techniques that underpin all software testing work. When ready, register for the ISTQB Foundation Level exam through AT*SQA to earn a globally recognized credential. After that, use How to Pass ISTQB Foundation Level to study with a clear plan.

Ready to Get ISTQB Certified?

ISTQB Foundation Level is the globally recognized credential for software testers. Register through AT*SQA for free practice exams, a free micro-credential, and 365 days to schedule.