White box testing involves testing the internal structure and logic of a program. It includes techniques like statement coverage, loop testing, path testing, and branch testing to ensure all statements, paths, and conditional branches are executed. Grey box testing takes a partial view of internal structures and combines white and black box testing approaches. It may use internal program components like SQL queries to help test functionality without fully understanding the underlying code.