White box testing involves testing internal coding and infrastructure by executing different lines of code. It is done by developers who have knowledge of the internal structure. Black box testing treats the system as a "black box" and tests it without knowledge of internal structures by validating inputs and outputs. Unit testing validates individual units of source code and is done by developers to ensure each part is correct before integration. Both white box and unit testing can be done earlier and be more thorough than black box testing, but require more skilled testers and knowledge of internal structures. Black box testing can be done by non-technical testers and from an end user perspective.
Related topics: