Types of software testing: the complete map

There are dozens of named testing types, but they fall into a few simple groups. Once you see the map, it is easy to pick the right checks for what you are shipping.

By Quality AboveAll · June 1, 2026 · 8 min read

Software team reviewing a testing plan on a whiteboard
TL;DR

Most software testing splits into functional (does it do the right thing) and non-functional (does it do it well), runs at four levels from unit to acceptance, and can be manual or automated. You mix them based on risk.

The two big families: functional and non-functional

Almost every testing type belongs to one of two families. Functional testing checks that features behave correctly: the login works, the total adds up, the order goes through. Non-functional testing checks how well the system behaves: is it fast, secure, usable, and stable under load.

You need both. A checkout that calculates the right total but takes nine seconds to load still loses the sale. Getting the balance right is the heart of a good testing strategy.

Functional testing types

These confirm the product does what it is supposed to do. The common ones:

  • Unit testing, single functions or components in isolation, usually written by developers.
  • Integration testing, checking that modules and services work together, often through their APIs and contracts.
  • System testing, the whole application tested end to end.
  • Smoke testing, a quick check that a new build is stable enough to test further.
  • Sanity testing, a narrow check that one fix or change works as expected.
  • Regression testing, confirming new changes did not break what already worked. Strong regression testing is what lets teams ship often without fear.
  • User acceptance testing (UAT), real users confirming the product meets their needs before release.

Non-functional testing types

These measure quality attributes rather than features. The ones that matter most for most teams:

  • Performance testing, including load and stress, to see how the system holds up under traffic. This is the focus of performance engineering.
  • Security testing, finding the gaps an attacker could use, covered by security and penetration testing.
  • Usability testing, whether real people can actually complete the task.
  • Accessibility testing, whether the product works for everyone, measured against the WCAG 2.2 guidelines and supported by accessibility testing.
  • Compatibility testing, across browsers, devices, and operating systems.
A simple rule: functional testing protects what the product does, non-functional testing protects whether people can stand to use it.

By level: from a single function to the whole product

Testing also stacks by scope, an idea formalised by bodies like the ISTQB. From smallest to largest: unit, integration, system, then acceptance. Most teams put many fast checks low in the stack and fewer broad checks at the top, the shape known as the test pyramid. It keeps the suite fast and stable.

Manual or automated?

Any of these types can be run by a person or by code. Automation wins for repeatable, high-volume checks like regression and smoke, where a good test automation framework pays off fast. Manual and exploratory testing win where judgment matters, such as new features, usability, and the messy edge cases no script was written for.

You do not need every type on every release. The skill is choosing the few that lower your real risk the most. If you want a clear picture of which types your product is missing, a free testing audit is the fastest place to start.

Senior-led QA,embedded in your workflow.

Often less than one full-time hire. Book a free 30-minute testing audit and we'll show you exactly where the risk is hiding.

Let’s Talk
Quick question or project brief, we respond within 24 h.
Message sent! We’ll be in touch shortly.