
EDITORIALS
Software testing basics to get you started
Software testing is trying to catch your product out before your users do. You interact with your software, try different things, and see what breaks. That's basically all there is to it.

What is unit testing?
Unit testing is (usually) when developers write small, automated tests to check individual pieces of code – like a single function, method, or class – to make sure it behaves as expected.
nit testing is considered a best practice and one of the first testing steps developers take because it helps catch logic errors early in the development process. Essentially, it’s a type of automated testing that checks the smallest pieces of code (functions, methods, or classes) in isolation to check they behave as expected.
While the majority of people doing unit testing will be developers, it has a direct impact on testing work. When it’s done well, it removes a whole category of bugs before they ever reach QA. When it’s missing or poorly maintained, testers tend to find the same basic issues again and again.
You don’t need to write unit tests to benefit from them. But understanding what unit testing does – and just as importantly, what it doesn’t do – helps testers focus their time where it actually adds value. Let’s break it down.
A unit test checks one small, very specific piece of logic in isolation and nothing more. For example, a developer might write a unit test to confirm that:
The test sets up some input, runs the code, and checks the output. If the result matches expectations, the test passes. If not, it fails. Because unit tests are tightly focused, failures are usually very precise. When a test breaks, developers can see exactly which part of the code is responsible, without stepping through unrelated features.
This early feedback is why IBM often positions unit testing as part of a shift-left approach – catching defects as early as possible, when fixes are faster and significantly cheaper than later in the lifecycle.
What unit testing does not do is test how features behave from a user’s point of view. It doesn’t validate workflows, layouts, usability, or whether a feature makes sense in context.
Generally speaking, unit tests are written and maintained by developers. They live alongside the code and usually run automatically as part of the development process.
Testers typically:
And that’s because unit testing exists to protect the code, whereas testing exists to protect the product. How testers influence unit testing is indirect. If the same type of logic bug keeps appearing during testing, that’s often a sign a unit test could prevent it happening in the future. You don’t need to write the test, but spotting the pattern and raising the risk is valuable.
Good unit testing changes the shape of testing work because it catches simple errors early, letting QA concentrate on the issues that really affect users. When unit tests are in place and kept up to date:
Unit tests reduce the number of simple code-level bugs, which means testers can focus on:
Unit testing is powerful, but it has clear boundaries.
Unit tests do not:
A feature can pass every unit test and still be confusing, frustrating, or broken from a user’s point of view. That’s not a failure of unit testing – it’s simply not what unit testing is designed to do.
Rather than thinking in terms of “unit testing vs manual testing”, it’s more useful to see testing as layered, with each type covering different risks.
| Testing type | Who owns it | What it’s good at | What it won’t catch |
|---|---|---|---|
| Unit testing | Developers | Checking small pieces of logic in isolation | User flows, UI issues, integrations |
| Integration testing | Developers / QA | Verifying components work together | Full end-to-end behavior |
| System testing | QA / testers | Testing complete workflows | Internal code logic |
| Manual & exploratory testing | Testers | Finding real-world issues and usability problems | Repeatable low-level checks |
Unit testing supports everything above it by keeping the foundations stable. It doesn’t replace other testing – it makes it more effective.
You may have heard a few persistent and problematic myths about unit testing, so let’s clear them up.
“If we have unit tests, we don’t need manual testing.”
Not true. Unit tests confirm the code behaves as expected. Manual testing confirms the product behaves sensibly.
“Unit tests should cover everything.”
In practice, chasing 100% coverage often creates busywork. Experienced teams focus unit tests on logic that’s complex, risky, or business-critical.
“Unit testing slows development.”
Writing tests does take time upfront, but catching bugs early and providing a safety net for future changes saves time overall. Testers benefit because fewer trivial bugs reach QA.
Testers don’t need to write unit tests to benefit from them. What testers can do is:
If a problem can only be found by thinking like a user, unit tests won’t catch it – and that’s exactly where testers are essential.
Want more practical testing advice?
Subscribe to get straightforward tips on all things testing sent straight to your inbox.

EDITORIALS
Software testing is trying to catch your product out before your users do. You interact with your software, try different things, and see what breaks. That's basically all there is to it.

EDITORIALS
Automated testing uses software to run tests without human involvement. It's faster for repetitive checks than manual, but both approaches have their place in a testing strategy.

EDITORIALS | EXPLORATORY TESTING
Exploratory testing is essential to uncovering hidden issues and improving the quality of real-world usage. This guide covers what it is, when it pays off, and how to make it trackable.