Gray box testing is a combination of white-box and black-box testing techniques. It involves partial knowledge of the internal structure of an application. Gray box testers generate test cases based on requirements and functional specifications rather than source code. Some advantages are that it benefits from both black-box and white-box testing while remaining non-intrusive. Disadvantages include only partial code coverage due to limited internal access. Gray box testing is suitable for web applications and functional/business domain testing.