Grey Box Testing

With having a limited knowledge of the internal workings of an application, grey-box testing is the best technique to test the application. In software testing, the phrase the more you know, the better carries a lot of weight while testing an application.

Mastering the domain of a system always gives the tester an edge over someone with limited domain knowledge. Unlike black-box testing, in grey-box testing, the tester has access to design documents and the database. Having this knowledge, a tester can prepare better test data and test scenarios while making a test plan.

This method of testing is performed by end-users and also by testers and developers. When compared with other two methods, this is partly time-consuming and exhaustive. This method is not suited for algorithm testing and if known data domains and internal boundaries can be tested.

Following are some of the advantages of using this method

  • Offers combined benefits of black-box and white-box testing wherever possible.
  • Grey box testers don’t rely on the source code; instead they rely on interface definition and functional specifications.
  • Based on the limited information available, a grey-box tester can design excellent test scenarios especially around communication protocols and data type handling.
  • The test is done from the point of view of the user and not the designer.

However grey box testing has some disadvantages too.

  • Since the access to source code is not available, the ability to go over the code and test coverage is limited.
  • The tests can be redundant if the software designer has already run a test case.
  • Testing every possible input stream is unrealistic because it would take an unreasonable amount of time; therefore, many program paths will go untested.

Next – Software testing levels

Previous – White box testing

White box testing

White-box testing is the detailed investigation of internal logic and structure of the code. To perform white-box testing on an application, a tester needs to know the internal workings of the code. The tester has to look inside the source code and find out which unit/chunk of the code is behaving inappropriately.

Normally white box testing is performed by testers and developers. This method is he most exhaustive and time-consuming type of testing. This is suited for algorithm testing. Data domains and internal boundaries can be better tested using white box testing.

White-box testing is very advantageous.

  • As the tester know the source code, it becomes very easy to find out which type of data can help in testing the application effectively.
  • It helps in optimizing the code.
  • Extra lines of code can be removed which can bring in hidden defects.
  • Due to the tester’s knowledge about the code, maximum coverage is attained during test scenario writing.

However there are some disadvantages too.

  • Due to the fact that a skilled tester is needed to perform white-box testing, the costs are increased.
  • Sometimes it is impossible to look into every nook and corner to find out hidden errors that may create problems, as many paths will go untested.
  • It is difficult to maintain white-box testing, as it requires specialized tools like code analyzers and debugging tools


Next – Grey box testing

Previous – Black box testing

Black box testing

This method of testing is used when the tester does not have knowledge on the interior working of the application which is to be tested. Here the tester does not have access to the source code. When performing a black-box test, a tester will interact with the system’s user interface by providing inputs and examining outputs without knowing how and where the inputs are worked upon.

Black box testing is performed by end-users and also by testers and developers. It is exhaustive and the least time-consuming. However it is not suited for algorithm testing. This can only be done by trial-and-error method.

  • Black box testing is well suited and efficient for large code segments.
  • Since the code access is not required it is easy to be done
  • This method clearly separates user’s perspective from the developer’s perspective through visibly defined roles.
  • Moderately skilled testers can test the application with no knowledge of implementation, programming language, or operating systems and can be done by a large number of testers.


However there are some disadvantages when using this method of testing.

  • It covers a limited area by testing, since only a selected number of test scenarios is actually performed.
  • This method is inefficient testing, due to the fact that the tester only has limited knowledge about an application.
  • This method performs a blind coverage, since the tester cannot target specific code segments or error-prone areas.
  • The test cases are difficult to design.


Next –  White box testing

Previous – Software Testing Methods