Software → quality-assurance
Software Testing
The practice of evaluating software behavior to find defects, verify expectations, and increase confidence in changes.
Motivation
Software testing solves the problem of gaining confidence that software behaves as expected as it changes.
Where it fits
Testing belongs to software construction and professional engineering practice. It supports refactoring, deployment, reliability, and maintainability.
Subconcepts
Unit tests
Test a small unit of behavior in isolation.
Integration tests
Test how components work together.
Test doubles, mocks, and stubs
Replace collaborators so tests can control behavior and observe interactions.
Common mistakes
- Testing implementation details instead of behavior.
- Having only end-to-end tests and no fast feedback.
- Treating test coverage as the same thing as confidence.