White box testing involves testing the internal logic and structure of a program's source code. It is conducted by developers on each line of code before the software is passed to testers. The main goals are to test paths through the code, loops, conditions, memory usage, and performance. Techniques include path testing, loop testing, condition testing, memory perspective testing, and performance testing. White box testing helps ensure code quality and catch defects early before the software is given to testers for black box testing.