What is software testing?
Software testing is the process of checking that software behaves as expected — and hunting for the places where it doesn't. A tester runs the application against requirements, feeds it both normal and hostile inputs, and reports every gap between "what it should do" and "what it actually does".
Testing can never prove software is bug-free. Its real job is to reduce risk: find the important defects before your users do, while they're still cheap to fix.
A tester tries: a 7-char password (should be rejected),
an 8-char one (accepted), an empty field, a 500-char
paste, and an emoji-only password. Three of those
cases are where real bugs hide.
Why testing matters
- Cost: a bug found in design costs minutes; the same bug in production can cost a release, revenue, or reputation.
- Trust: users forgive missing features far more easily than broken ones.
- Speed: teams with solid testing ship faster, because they aren't afraid of their own codebase.
SQA vs QC vs Testing — three layers, one goal
Beginners often use these interchangeably. They're related, but they sit at different altitudes:
| Layer | Focus | Question it answers | Example activity |
|---|---|---|---|
| SQA (Quality Assurance) | The process — preventing defects | "Are we building it the right way?" | Defining coding standards, review checklists, test strategy |
| QC (Quality Control) | The product — detecting defects | "Did we build the right thing?" | Reviewing the finished build against requirements |
| Testing | The execution — finding defects | "Where exactly does it break?" | Running test cases on the login flow and logging bugs |
In short: SQA sets up the system, QC checks the output, testing does the hands-on hunting. A good QA engineer works in all three layers.
The main types of testing
Every testing type you'll ever meet falls into one of two families:
Functional testing
Checks what the system does. Does clicking "Pay" actually charge the card and show a receipt? Includes unit, integration, system, smoke, sanity, regression and acceptance testing.
Non-functional testing
Checks how well it does it. Is checkout fast under Black Friday load? Is it secure, accessible, usable? Includes performance, load, security, usability and compatibility testing.
Functional: does a JPG upload and display correctly?
Non-functional: does a 20MB photo upload within 3s?
Is the upload rejected if the file is a disguised script?
You'll meet the concrete types — smoke, regression, UAT, unit, API and more — in the Manual Testing and Automation Testing modules.