Gray Box Testing: Bridging the Gap Between Black and White Box Testing