Black Box Vs White Box

Black-box and white-box are test design methods. Black-box test design
treats the system as a “black-box”, so it doesn’t explicitly use
knowledge of the internal structure. Black-box test design is usually
described as focusing on testing functional requirements. Synonyms for
black-box include: behavioral, functional, opaque-box, and
closed-box. White-box test design allows one to peek inside the “box”,
and it focuses specifically on using internal knowledge of the software
to guide the selection of test data. Synonyms for white-box include:
structural, glass-box and clear-box.

While black-box and white-box are terms that are still in popular use,
many people prefer the terms “behavioral” and “structural”. 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. In practice, it hasn’t proven useful to use a single test
design method. One has to use a mixture of different methods so that
they aren’t hindered by the limitations of a particular one. Some call
this “gray-box” or “translucent-box” test design, but others wish we’d
stop talking about boxes altogether.

It is important to understand that these methods are used during the
test design phase, and their influence is hard to see in the tests once
they’re implemented. Note that any level of testing (unit testing,
system testing, etc.) can use any test design methods. Unit testing is
usually associated with structural test design, but this is because
testers usually don’t have well-defined requirements at the unit level
to validate.