Software testing can be classified into black box and white box techniques. Black box testing methodology only focuses on the functionality of the application and the underlying details are not considered in this form of testing. The idea is to ensure that the application is functioning as per the defined specifications. Software testers performing black box testing need not possess any coding knowledge. The tester only needs to check that the software delivers the desired output for a given input. S/he will not be concerned about how all this is taking place. In order to carry out black box testing the tester must understand the functionality of the software and not the underneath logic.
Based on the specifications provided by the client the testers will create functional test cases. A set of valid and invalid data is passed as input and the behavior of the application is tested. Whether it is unit, integration, system or acceptance testing, functional test cases are created for all the phases.
White box testing is completely opposite to black box testing techniques. Here the tester has to check the internal structure of the application. The testers have to check the internal logic that is implemented in the application and they have to ensure that the developers have followed the coding standards defined by the company. The tester also tracks how the data moves in the system and on what basis the output is produced. This kind of testing can be carried out at unit, integration and system level.
While black box testing focuses on the functionality of the software, white box testing focuses on the internal logic applied in the system. Black box testing included techniques like equivalence partitioning, boundary value analysis, syntax testing, error guessing etc. whereas white box testing focuses on basic techniques like path testing, control structure testing (Condition and data flow testing), loop testing (involving simple, nested, concatenated and unstructured loops) etc. while a non technical tester can be hired for the process of functional testing, the same cannot be done for White box testing as the latter requires that the tester should be in a position to understand the technical aspects of the application.
Black box testing can be quite useful in testing bigger systems. The tests are conducted from the point of view of the end user. This is the reason why black box testers can be non technical with no knowledge of functionality of the system. Generally, many flaws show up at the time of black box testing. However, since the testers are non-technical the reason behind the failure cannot be found. All properties of the software cannot be thoroughly tested via black box testing as there is no attention paid to the underlying logic. Test cases for black box testing cannot be prepared without proper understanding of the functional specifications. It is difficult to prepare the input data set and generally the tester has to take the help of the developer to create a tricky data to check the functionality of the application. Many people get confused between black box testing and behavioral testing. Black box testing is actually a form of behavioral testing. Behavioral testing can be sometimes different if it is considering the internal design structure of the application.
Ideally a tester must have sound knowledge of both black box testing and white box testing techniques. There is no shortage of testing jobs for those who have mastered both the techniques. Testing companies and IT companies would welcome and value testing professionals who are good in these techniques.