Types of Testing: An Overview
Testing can be classified in many ways: by what you test (functional vs non-functional), by level (unit to UAT), or by technique (black-box, white-box). This post gives an overview of the main types you will use as a QA professional.
Functional testing
Functional testing checks what the system does: features, user flows, and business rules. Test cases are usually derived from requirements and specs. Examples: login, checkout, search, and report generation. Most manual and automated UI and API tests are functional.
Non-functional testing
Non-functional testing checks how the system behaves: performance, security, usability, reliability, and compatibility.
- Performance: Load, stress, soak; response time and throughput.
- Security: Vulnerabilities, auth, and data protection.
- Usability: Ease of use and accessibility.
- Compatibility: Browsers, devices, OS versions.
Black-box vs white-box
- Black-box: You test without seeing code; you use requirements, UI, and APIs. Most QA testing is black-box.
- White-box: You use code structure (e.g. branches, paths) to design tests. Often done by developers; useful for coverage and edge cases.
Other useful distinctions
- Regression: Re-running tests after changes to ensure nothing broke.
- Smoke: Quick checks that the build is stable enough for deeper testing.
- Exploratory: Unscripted testing; you learn and design tests as you go.
Summary
- Functional = what the system does; non-functional = how it behaves (performance, security, etc.).
- Black-box (no code) vs white-box (with code) helps you choose test design approach.
- Use regression, smoke, and exploratory testing as part of your test strategy.