Black-box and white-box are two of important and classic testing methods.
In Black-box testing the system is treated as a “black-box“, implying that test does not have any knowledge about the of the internal structure of subject (software under test). Black-box test design is usually described as tests focusing on testing functional requirements from outside. Synonyms for black-box are behavioral, functional, opaque-box, and closed-box.
In case of White-box testing, the design allows one to peek inside the “box“, and it focuses on using internal knowledge of the subject (software under test) to determine the test data and test accordingly. Synonyms for white-box are structural, glass-box and clear-box.
While black-box and white-box are terms that are still in popular use, however many people prefer the terms “behavioral” and “structural” respectively.
Behavioral test design is slightly different from black-box test design because the use of internal knowledge isn’t strictly forbidden, but it’s still discouraged.
Unit testing is usually associated with structural test design and is normally performed at developer level rather than QA level. It focuses it testing smaller components rather than end to end.
In practice, testing single with a single design method is not adequate. One has to use a mixture of these different design methods to make sure the subject is adequately tested. Some tester calls this “gray-box” or “translucent-box” test design.
It is important to understand that these methods are used during the development, integration testing and user acceptance testing.