2.4 Test Types: Functional, Non-Functional, White-Box, and Change-Related
Key Takeaways
- A test type groups testing by objective, such as functional behavior, quality characteristics, structure, or effects of changes.
- Functional testing checks what the test object does according to specified or implied behavior.
- Non-functional testing evaluates quality characteristics such as performance, usability, reliability, security, portability, and maintainability.
- White-box testing derives tests from internal structure or implementation.
- Change-related testing includes confirmation testing and regression testing.
Type Is About Objective
A test type is a group of test activities with a specific objective. The main CTFL categories are functional testing, non-functional testing, white-box testing, and change-related testing. These types can occur at more than one test level.
Functional testing checks what the test object does. It is based on functions, features, business rules, user stories, use cases, workflows, and requirements. Examples include checking whether a discount is calculated correctly, a search returns matching results, or a user can submit a claim.
Non-functional testing checks how well the test object behaves or which quality characteristics it has. This includes performance efficiency, reliability, usability, accessibility, security, compatibility, portability, and maintainability. A feature can be functionally correct but non-functionally unacceptable if it is too slow or hard to use.
| Test type | Primary basis | Example question |
|---|---|---|
| Functional | Requirements, behavior, business rules | Does the tax calculation produce the right amount? |
| Non-functional | Quality characteristics and constraints | Does the page load within the target time? |
| White-box | Internal structure or implementation | Have important branches or paths been covered? |
| Change-related | Changes and defect fixes | Did the fix work and did it break anything else? |
White-box testing derives tests from internal structure. The structure may be code, architecture, data flow, control flow, configuration, or model structure. Coverage measures such as statement coverage and branch coverage are white-box ideas because they depend on internal structure.
Change-related testing addresses changes. Confirmation testing checks whether a reported defect has been fixed. Regression testing checks whether unchanged areas still work after a change. These are not the same, although they often happen together after a fix.
The same test can sometimes support more than one type, but CTFL questions usually have a best answer. For example, a test that checks whether a screen reader can navigate a form is non-functional because accessibility is the quality characteristic. A test that checks whether the submit button stores the correct form data is functional.
A common trap is to treat non-functional as less important or only late-stage. Non-functional requirements can drive architecture and should be considered early. Performance, security, accessibility, and reliability defects can be expensive to fix late.
Another trap is to confuse white-box with developer-only testing. Developers often perform white-box testing, but the defining feature is use of internal structure, not the person's job title. A tester who designs tests from code coverage data is performing white-box testing.
For exam answers, first ask: what objective is being evaluated? Correct behavior points to functional. Quality attributes point to non-functional. Internal structure points to white-box. A fix or side effect of change points to change-related testing.
A test checks whether a report page loads within two seconds for 1,000 concurrent users. Which test type is most directly represented?
Which statements correctly describe test types?
Select all that apply