Dokven

Loading Dokven.
Foundations 9 min read

A map of the types of testing

A friendly orientation map of the whole testing landscape: functional vs non-functional, the four levels, black/white/grey box, and the quick checks (smoke, sanity, regression, re-test).

If you search "types of software testing", you'll drown in a chart with fifty boxes and arrows everywhere. It's overwhelming, and honestly, most of that chart won't matter to you for months. So instead of memorising fifty terms, let's draw a simple map. By the end you'll know the main neighbourhoods of testing and how they relate, and the deeper lessons later will fill in the streets.

Note

This is an orientation, not a deep dive. Each idea below gets its own full lesson later. For now, the goal is a mental map you can hang everything else on.

Split one: functional vs non-functional

The first and biggest split asks a simple question: are you testing what the software does, or how well it does it?

Functional testing

  • Tests WHAT the software does.
  • Checks features against the requirements.
  • "When I click Pay, does the payment go through?"
  • Answer is usually a clear pass or fail.
  • Examples: login works, search returns results, the form saves.

Non-functional testing

  • Tests HOW WELL the software does it.
  • Checks qualities like speed, safety, and ease of use.
  • "When 10,000 people click Pay at once, does it stay fast?"
  • Answer is often a measurement against a target.
  • Examples: performance, security, accessibility, usability.

A handy way to remember it: functional testing asks "does it work?", and non-functional testing asks "is it good?". A button can work perfectly (functional pass) and still take eight seconds to respond (non-functional fail).

Split two: the four levels of testing

Testing also happens at different levels, zooming out from the tiniest piece of code to the whole product in a customer's hands. Picture building a car: you test each bolt, then the assembled engine, then the finished car on a track, and finally let the buyer take a test drive.

LevelWhat's being testedUsually done byCar analogy
UnitOne small piece of code on its ownDevelopersTesting a single bolt or spark plug
IntegrationSeveral pieces working togetherDevelopers / testersChecking the assembled engine
SystemThe whole application end to endTestersDriving the finished car on a track
AcceptanceDoes it meet the user's real needs?Users / business / testersThe buyer's test drive

The levels go from small and technical (unit) to broad and human (acceptance). Bugs caught at the unit level are the cheapest of all, which is exactly why developers write little automated unit tests as they code. It's shift-left in action.

Split three: black box vs white box vs grey box

This split is about how much of the inner workings you can see while testing. The "box" is the software, and the colour describes how transparent it is to you.

ApproachWhat you can seeHow you testEveryday picture
Black boxNothing inside; only inputs and outputsUse the software like a real user, no peeking at codeDriving a car without opening the hood
White boxEverything; the actual code insideDesign tests based on the code's internal pathsA mechanic testing with the hood wide open
Grey boxA bit of both; some inner knowledgeTest like a user, but use inside knowledge to test smarterA driver who also understands engines

Most hands-on QA work, especially when you're starting out, is black box: you use the product the way a customer would and judge it by its behaviour, not its code. White box is more of a developer's tool. Grey box is the sensible middle most experienced testers drift toward.

The quick four: smoke, sanity, regression, re-test

Finally, four short, practical terms you'll hear every single week on a real team. They're easy to mix up, so here they are plainly.

  • Smoke testing: a quick, shallow check that the most important things work at all, before deeper testing begins. "Does the app even open and let me log in?" If smoke fails, don't bother going further yet.
  • Sanity testing: a quick, narrow check that one specific fix or feature behaves, without testing everything. "They fixed the search bug, let me just confirm search works now."
  • Re-testing: running the exact test that found a bug, after it's marked fixed, to confirm it really is fixed. Same steps, same data, checking that specific defect.
  • Regression testing: re-running a broader set of tests to make sure a new change didn't break something that used to work. The word regression means "slipping backward", and it's one of the most important ideas in all of testing.
Tip

Re-testing vs regression trips up nearly every beginner. Re-testing confirms the bug you reported is gone. Regression confirms the fix didn't accidentally break something else. You almost always do both, in that order.

That's the whole map: functional vs non-functional, the four levels, the three boxes, and the quick four. You don't need to master any of them yet. You just need to recognise the neighbourhoods so you don't get lost. As you keep learning, these terms will turn from vocabulary into instinct.

Key takeaways
  • Functional testing asks "does it work?"; non-functional testing asks "is it good?" (speed, security, usability).
  • The four levels zoom out from small to broad: unit, integration, system, acceptance.
  • Black box tests behaviour with no view of the code; white box tests with full code knowledge; grey box mixes the two.
  • Smoke = does it basically work; sanity = is this one fix okay; re-test = is the reported bug gone; regression = did we break anything else.