White box testing involves testing the internal structure and code of a software program, allowing testers to see inside the "box". It is used to test for internal security holes, code paths, expected outputs, and functionality of conditional statements. It involves understanding the source code and creating test cases to execute each process individually through manual testing and testing tools. Common techniques include statement, branch, condition coverage, and path testing. White box testing can thoroughly test all code paths but is complex, expensive, time-consuming, and requires professional resources with programming expertise.