Understanding testing and unit tests
Whenever I was managing or mentoring another developer and they wanted to make a change to a system I’d ask them a question: “How can you be sure your change won’t break things?”
This simple question can be deceptively hard to answer, but every answer I’ve ever heard boils down to a single concept: testing.
I define testing as the process of verifying software functionality and detecting unwanted changes to program behavior.
This testing could be done by a human, such as a developer or a quality assurance analyst, or it could be done via software, depending on the type of test involved.
Types of tests and the testing pyramid
Testing is a broad field that encompasses many different types of activities, including the following:
- Manual testing, which involves a person performing some activity manually and verifying the outcome.
- Exploratory testing, a subset of manual testing that focuses...