White Box Testing is just like a transparent glass, in which the tester can see both side of the glass clearly.
One type of WhiteBoxTesting is fault injection testing, a technique used to verify fault-tolerant systems. Highly reliable systems will not fail under black-box stimulus. Code written to handle infrequent failure conditions can only be verified by injecting a fault through white-box testing.
Another use of white-box testing is to test interfaces for robustness. This is good practice when you open up that interface to truly external devices that may not properly implement according to an interface specification. Analysis of the code may indicate possible weaknesses related to violations of the spec, guiding the selection of test data to exercise specific cases that might cause an undesirable failure state.
WhiteBoxTesting implies access to the code of the application and the ability to test every line of code within it.
For more on WhiteBoxTesting (also known as GlassBoxTesting):