White Box Testing
Introduction
White box testing, also known as clear box testing, transparent box testing, and structural testing, is a method of software testing that tests internal structures or workings of an application, as opposed to its functionality (i.e. black-box testing). In white box testing, an internal perspective of the system, as well as programming skills, are used to design test cases. The tester chooses inputs to exercise paths through the code and determines the appropriate outputs. This is analogous to testing nodes in a circuit, e.g. in-circuit testing (ICT). White box testing can be applied at the unit, integration and system levels of the software testing process. Although traditional testers tended to think of white box testing as being done at the unit level, it is used for integration and system testing more frequently today. It can test paths within a unit, paths between units during integration, and between subsystems during a system–level test. Though this method of test design can uncover many errors or problems, it might not detect unimplemented parts of the specification or missing requirements.
Methodology
White box testing involves the testing of the software code for the following:
- Internal security holes
- Broken or poorly structured paths in the coding processes
- The flow of specific inputs through the code
- Expected outputs
- The functionality of conditional loops
- The functionality of the independent paths (i.e., there is at least one separate path of execution)
- The functionality of logical decisions
- The performance of the software
The white box testing is very thorough as it involves the testing of the code at every level. However, it is primarily a microscopic approach to testing, as it only tests the specific part and not the application as a whole. To overcome this limitation, white box testing is used in conjunction with black box testing.
Techniques
White box testing involves the use of several testing techniques to effectively test the software code. These techniques include:
- Statement coverage: This technique involves the execution of all the executable statements in the source code at least once. It helps in identifying which statements in the code have been executed and which have not been executed.
- Branch coverage: This technique involves the execution of each branch (outcomes from decision points) at least once. It helps in identifying which decision point in the code is not executed.
- Path coverage: This technique involves the execution of all paths in the source code. It helps in identifying which paths in the code have not been executed.
- Data flow testing: This technique involves the selection of test paths according to the locations of definitions and use of variables.
- Loop testing: This technique is used for testing loops in the code.
Advantages and Disadvantages
White box testing has several advantages and disadvantages. The advantages include:
- It helps in identifying the errors and extra lines of code that are not covered by black box testing.
- It helps in optimizing the code.
- It helps in verifying the internal structures and workings of an application.
- It helps in removing the extra lines of code, which can bring in hidden defects.
However, white box testing also has several disadvantages:
- As the tester requires knowledge of the code, it requires skilled testers.
- It is a time-consuming process as it involves testing of the code at every level.
- It cannot identify missing functionalities in the code.
- It cannot be performed for testing graphics.
Conclusion
White box testing is a crucial part of the software testing process. It helps in identifying the errors in the code at an early stage, which can save a lot of time and effort in the later stages of the testing process. However, it requires skilled testers and is a time-consuming process. Therefore, it is used in conjunction with black box testing to ensure the complete testing of the software.