The effective combination of black box (external) and white box (internal or unit) testing.
GregWilkins argues that ExtremeProgramming ensures the right level of grayness through the writing of UnitTests first and the intense code review implied by PairProgramming. This struck him as similar to the situation in OpenSource development, where you have a bunch of users who are also being encouraged to get inside the code and tinker, leading to better, more thorough testing of the final product than the "Bug Report 3925" approach.
This book ' '(What book?? Is "Gray Box Testing" the name of a book??)'' presents gray box testing as being done based on an architectural understanding of a software application and of the failure modes of the various components. It is still black-box, in that it is typically done by non-programming staff (that is: people who do not write production code, even if they know how and write test code), but it does not presume the ignorance of internals that is often a defining feature of black-box testing.
As such, gray box testing is a technique that has been developed within the ContextDrivenTesting school.