There are three most popular methods that could be used for software testing:-
The black box testing can be used without having any knowledge of the interior workings of the application. The tester is unaware to the system architecture and does not have right to use to the source code..
The following advantages and disadvantages of black-box testing:
- Well suited and efficient for large code segments.
- Code access is not required.
- Large numbers of moderately skilled testers can test the application with no knowledge of programming language.
- Limited coverage, since only a selected number of test scenarios are actually performed.
- Inefficient testing, due to the fact that the tester only has limited knowledge about an application.
- The test cases are difficult to design.
White-box testing used the detailed study of internal logic and structure of the code. this is also called glass testing or open-box testing. In order to perform white-box testing, testers have to know the internal workings of the code.
The following advantages and disadvantages of white-box testing:
- As the tester has knowledge of the source code, it becomes very easy to find out which type of data can help in testing the application efficiently.
- Extra lines of code can be removed which can carry in hidden defects.
- Due to the fact that a skilled tester is needed to perform white-box testing, the costs are increased.
- It is difficult to maintain white-box testing, as it requires specialized tools like code analyzers and debugging tools.
Grey-box testing could be used with having a limited knowledge of the internal workings of an application. Black-box testing, where the tester only tests the application user interface.
- Offers combined benefits of black-box and white-box testing wherever possible.
- A grey-box tester can design excellent test scenarios particularly around communication protocols and data type handling.
- The test is done from the point of view of the user and not the designer.
- Since the access to source code is not available, the ability to go over the code and test coverage is limited.
- Testing every possible input stream is unrealistic because it would take an unreasonable amount of time.