Black box testing is based on the software�s specifications or
requirements, without reference to its internal workings. Gray box testing
combines white box techniques with black box input testing [Hoglund 04]. This
method of testing explores paths that are directly accessible from user inputs
or external interfaces to the software.
In a typical case, white box analysis is
used to find vulnerable areas, and black box testing is then used to develop
working attacks against these areas. The use of gray box techniques combines
both white box and black box testing methods in a powerful way.