Gray box testing definition
Gray box testing
Gray-box testing is a combination of white-box testing and black-box testing. The aim of this testing is to search for the defects if any due to improper structure or improper usage of applications. Gray-box testing is also known as translucent testing. [1][2]
Contents[hide] |
[edit] Overview
A black-box tester is unaware of the internal structure of the application to be tested, while a white-box tester knows the internal structure of the application. A gray-box tester partially knows the internal structure, which includes the access to internal structures as well as the algorithms for defining the test cases.[3] Gray-box testers require overall and detailed description of documents with required documents of the application. Gray Box Testing collects the information for defining testcases.[4]
[edit] Need for gray-box testing
This section may be confusing or unclear to readers. Please help clarify the section; suggestions may be found on the talk page. (June 2012) |
Gray-box testing is beneficial because it applies straight forward technique of black-box testing and influences it against the code targeted systems in white-box testing.[5] Gray-box testing is based on requirement test case generation because it presets all the condition before program is tested by using assertion method. Requirement specification language is used to state the requirements which make easy to understand the requirements and verify its correctness too where input for requirement test case generation is the predicates and the verification discussed in requirement specification language.[6]
[edit] Gray-box testing assumptions for object-oriented software
This section may be confusing or unclear to readers. Please help clarify the section; suggestions may be found on the talk page. (February 2012) |
Object-oriented software consists primarily of objects; where objects are single indivisible units having executable code or data. Some assumptions are stated below which are needed for the application of use gray-box testing.
- Activation of Methods[7]
- State Reporting in Class Under Test (CUT).
- Report Testing is inherent in Class Under Test.[6]
[edit] Examples
- Architectural model
- Unified Modeling Language - UML Design Model
- Finite-state machine - State Model.[8][9]
[edit] Techniques
Cem Kanner defines "gray-box testing as involving inputs and outputs, but test design is educated by information about the code or the program operation of a kind that would normally be out of view of the tester".[10] Gray-box testing techniques are:
- Matrix Testing :- states the status report of the project.
- Regression testing :- it implies rerunning of the test cases if new changes are made.
- Pattern Testing :- verify the good application for its design or architecture and patterns.
- Orthogonal array testing:- used as subset of all possible combination. [11]
[edit] Effects
[edit] Positive Effects
- Offers combined benefits: As Gray-box testing is combination of white-box and black-box testing , it serves advantages from both the testings.
- Non Intrusive: It is based on functional specification, architectural view whereas not on source code or binaries which makes it invasive too.
- Intelligent Test Authoring: Gray-box tester handles intelligent test scenario, for example, data type handling, communication protocol, exception handling.
- Unbiased Testing: In spite of all above advantages and functionalities, Gray-box testing maintains boundary for testing between tester and developer.[12]
[edit] Negative Effects
- Partial code coverage: In gray-box testing, source code or binaries are missing because of limited access to internal or structure of the applications which results in limited access for code path traversal.
- Defect Identification: In distributed applications, it is difficult to associate defect identification. Still, Gray-box testing is a boon to find how appropriate these systems throw exceptions and how fine are these exceptions handled in distributed systems having web services environment.[12][13]
[edit] Applications
- Gray-box testing is well suited for web applications.The Web Applications have distributed network or systems; due to absence of source code or binaries it is not possible to use white-box testing. Black-box testing is also not used due to just contract between customer and developer, so it is more efficient to use gray-box testing as significant information is available in Web Services Definition Language (WSDL).[14]
- Gray-box testing is suited for functional or business domain testing. Functional testing is done basically a test of user interactions with may be external systems.As gray-box testing can efficiently suits for functional testing due to its characteristics; it also helps to confirm that software meets the requirements defined for the software.[15][16][17][18]
[edit] Future scope
The distributed nature of Web Services allows gray-box testing to detect defects within SOA. As we know, white-box testing is not suitable for Web Services as it deals directly with the internal structures. White-box testing can be use for state art methods; for e.g message mutation which generates the automatic tests for large arrays to help exception handling states, flow without source code or binaries. Such a strategy is useful to push gray-box testing nearer to the outcomes of white-box testing.