Black box testing: Tests are based on requirements and functionality. Not based on any knowledge of internal design or code.
White box testingTests: Are based on coverage of code statements, branches, paths, conditions. Based on knowledge of the internal logic of an application's code.
Gray Box Testing: A Combination of Black and White Box testing methodologies, testing a piece of software against its specification but using some knowledge of its internal workings.