Grey-Box Testing is a method of testing software with partial knowledge of the functions and internal structure of the application. It is used as a means to find any weaknesses in the application due to code structure, algorithms, or errors caused by unexpected inputs. This method is a blend of White-Box Testing (full knowledge of the internal structure) and Black-Box Testing (No knowledge of the internal structure), aiming to be the best of both worlds by being straightforward yet still code targeted.
This software testing is typically started off by identifying inputs, expected outputs, and key paths. Next, find the sub-functions and decide inputs and expected outputs for them. Finally, execute the speculated test cases and compare to the expected results.
There are several techniques that are used in Grey-Box Testing to obtain different information.
Some of the reasons to use Grey-Box Testing include advantages from both Black-Box and White-Box Testing, is non-intrusive, combines input of developers and testers, gives intelligent test authoring, and gives unbiased results. Some of the drawbacks are that it has limited access to some of the core structure and testing may be redundant.