Prerequisite – Software Testing | Basics
Gray Box Testing is a software testing technique which is a combination of Black Box Testing technique and White Box Testing technique. In Black Box Testing technique, tester is unknown to the internal structure of the item being tested and in White Box Testing the internal structure is known to tester. The internal structure is partially known in Gray Box Testing. This includes access to internal data structures and algorithms for purpose of designing the test cases.
Gray Box Testing is named so because the software program is like a semitransparent or grey box inside which tester can partially see. It commonly focuses on context-specific errors related to web systems.
Objective of Gray Box Testing:
The objective of Gray Box Testing is:
- To provide combined advantages of both black box testing and white box testing.
- To combine the input of developers as well as testers.
- To improve overall product quality.
- To reduce the overhead of long process of functional and non-functional testings.
- To provide enough free time to developers to fix defects.
- To test from the user point of view rather than a designer point of view.
Gray Box Testing Techniques:
- Matrix Testing:
In matrix testing technique, business and technical risks which are defined by the developers in software programs are examined. Developers define all the variables that exist in the program. Each of the variables has an inherent technical and business risk and can be used with varied frequencies during its life cycle.
- Pattern Testing:
To perform the testing, previous defects are analyzed. It determines the cause of the failure by looking into the code. Analysis template includes reasons for the defect. This helps test cases designed as they are proactive in finding other failures before hitting production.
- Orthogonal Array Testing:
It is mainly a black box testing technique. In orthogonal array testing, test data have n numbers of permutations and combinations. Orthogonal array testing is preferred when maximum coverage is required when there are very few test cases and test data is large. This is very helpful in testing complex applications.
- Regression Testing:
Regression testing is testing the software after every change in the software to make sure that the changes or the new functionalities are not affecting the existing functioning of the system. Regression testing is also carried out to ensure that fixing any defect has not affected other functionality of the software.
Advantages of Gray Box Testing:
- Users and developers have clear goals while doing testing.
- Gray box testing is mostly done by the user perspective.
- Testers are not required to have high programming skills for this testing.
- Gray box testing is non-intrusive.
- Overall quality of the product is improved.
- In gray box testing, developers have more time for defect fixing.
- By doing gray box testing, benefits of both black box and white box testing is obtained.
- Gray box testing is unbiased. It avoids conflicts between a tester and a developer.
- Gray box testing is much more effective in integration testing.
Disadvantages of gray box testing:
- Defect association is difficult when gray testing is performed for distributed systems.
- Limited access to internal structure leads to limited access for code path traversal.
- Because source code cannot be accessed, doing complete white box testing is not possible.
- Gray box testing is not suitable for algorithm testing.
- Most of the test cases are difficult to design.
- Differences between White Box Testing and Gray Box Testing
- Difference between Black Box Testing and Gray Box Testing
- Software Engineering | Differences between Sanity Testing and Smoke Testing
- Software Engineering | Comparison between Regression Testing and Re-Testing
- Software Testing | Static Testing
- Software Testing | Use Case Testing
- Software Testing | Configuration Testing
- Software Testing | Penetration Testing
- Software Testing | Security Testing
- Software Testing | Portability Testing
- Software Testing | Stability Testing
- Software Testing | Spike Testing
- Software Testing | Database Testing
- Software Testing | Fuzz Testing
- Software Testing | Scalability Testing
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.
Improved By : pp_pankaj