Black-box testing or it is sometimes called functional testing verifies the accurate handling of the external functions of the software product, or whether the behavior satisfies the user anticipations or product specifications.
White-box testing or it is sometimes called structural testing verifies the accurate execution of internal units, structures and their relations.
Different methods may be used to create models and test cases to conduct black-box or white-box testing methodically.
When black-box testing is conducted, failures related to specific external functions can be found, leading to corresponding faults being identified and removed.
In this case the main focus is on reducing the probabilities of encountering functional troubles by target clients.
And contrariwise, when white-box testing is conducted failures related to internal executions may be found, leading to corresponding faults being identified and removed.
In this case the main focus is on reducing internal faults so that there is less probability for software bugs o the later stages no matter what type of application environment the software product is subjected to.