What is gray box? - Definition from Whatis.com

A gray box is a device, program or system whose workings are partially understood. Gray box testing, also called gray box analysis, is a strategy for software debugging based on limited knowledge of the internal details of the program. The tester may know how system components interact but lacks detailed knowledge of internal program functions and operation.

With respect to internal processes, gray box testing treats a

program as a black box that must be analyzed from the outside. Gray box testing is commonly used with Web services applications because the Internet has relatively stable interfaces even though the applications are complex, variable and evolving.

Gray box testing is non-intrusive and unbiased because it does not require that the tester have access to the source code. A clear distinction exists between the developer and the tester, minimizing the risk of personnel conflicts. However, it is more difficult to detect and resolve potential problems, especially in a single application, with gray box testing than with white box testing, in which the internal particulars are fully known.

This was last updated in February 2007

Dig Deeper

  • Professionalism and discipline in software development: Q&A with Bob Martin

    What is the role of QA when developers are automating more and more of the test efforts? What’s the best way to give code estimates? Software guru “Uncle Bob” Martin answers these questions in this first part of a two-part interview about his new book.

  • ALM: Managing offshore test teams

    This tip emphasizes expressing clear expectations throughout the application life cycle. Learn how to choose the most effective means of communication for the situation, how to motivate team members across the miles and how to show appreciation to offshore teams.

  • Automation testing: Seven tips for functional test design

    In this tip, Chris McMahon describes seven tips for testing leaders that will ensure you are designing your automation tests correctly so that they will be maintainable and catch the bugs before the code hits production.

Do you have something to add to this definition? Let us know.

Send your comments to techterms@whatis.com