WHITE BOX TESTING: The team tests the internal logic's of the code. The code for the application is tested. It typically includes checking with the data flow, exceptions, and errors, how they are handled, comparing if the code produces the expected results. It is also known as the "Glass Box Testing".
BLACK BOX TESTING: The team tests the systems without any knowledge of how the system is being made. The functionalities are checked here. The application is tested here. Test cases merely check if the output is correct for the given input. User is not expected to the internal flow or design of the system.
GRAY BOX TESTING: It's the combination of both white box and black box testing. This is because it involves access to the system; however at an outer level. A little level of system knowledge i expected in Gray box testing.