Unit testing involves verifying the behavior of individual units of source code, such as functions or classes, in isolation. Because it requires access to the codebase and programming knowledge to write test cases and debug code, it is performed by developers rather than testers, customers, or end users.