White-box testing, sometimes called glass-box testing, is a test case design method that uses the control structure of the procedural design to derive test cases. Using white-box testing methods, the software engineer can derive test cases that (1) guarantee that all independent paths within a module have been exercised at least once, (2) exercise all logical decisions on their true and false sides, (3) execute all loops at their boundaries and within their operational bounds, and (4) exercise internal data structures to ensure their validity. This test method 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 determine the appropriate outputs. While white-box testing can be applied at the unit, integration and system levels of the software testing process, it is usually done at the unit level. 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. White-box testing's basic procedures involve the understanding of the source code that is being tested at a deep level to be able to test them. The programmer must have a deep understanding of the application to know what kinds of test cases to create so that every visible path is exercised for testing. Once the source code is understood then the source code can be analyzed for test cases to be created. These are the three basic steps that white-box testing takes in order to create test cases:

  1. Input, involves different types of requirements, functional specifications, detailed designing of documents, proper source code, security specifications. This is the preparation stage of white-box testing to layout all of the basic information.
  2. Processing unit, involves performing risk analysis to guide whole testing process, proper test plan, execute test cases and communicate results. This is the phase of building test cases to make sure they thoroughly test the application the given results are recorded accordingly.
  3. Output, preparing final report that encompasses all of the above preparations and results.

White-box testing is one of the two biggest testing methodologies used today. It primarily has three advantages:

  1. Side effects of having the knowledge of the source code is beneficial to thorough testing.
  2. Optimization of code by revealing hidden errors and being able to remove these possible defects. 
  3. Gives the programmer introspection because developers carefully describe any new implementation.

Although White-box testing has great advantages, it is not perfect and contains some disadvantages. It has two disadvantages:

  1. White-box testing brings complexity to testing because to be able to test every important aspect of the program, one must have great knowledge of the program. White-box testing requires a programmer with a high-level of knowledge due to the complexity of the level of testing that needs to be done.
  2. On some occasions, it is not realistic to be able to test every single existing condition of the application and some conditions will be untested.


Functional testing is a quality assurance (QA) process and a type of black box testing that bases its test cases on the specifications of the software component under test. Functions are tested by feeding them input and examining the output, and internal progras structure is rarely considered. Functional Testing also called Black box testing, focuses on the functional requirements of the software That is, black-box testing enables the software engineer to derive sets of input conditions that will fully exercise all functional requirements for a program. Black-box testing is not an alternative to white-box techniques. Rather, it is a complementary approach that is likely to uncover a different class of errors than white-box methods.

Black-box testing attempts to find errors in the following categories:

  1. incorrect or missing functions
  2. interface errors 
  3. errors in data structures or external data base access
  4. behavior or performance errors 5. initialization and termination errors.

Unlike white-box testing, which is performed early in the testing process, black-box testing tends to be applied during later stages of testing. Because black-box testing purposely disregards control structure, attention is focused on the information domain. Tests are designed to answer the following questions:

  • How is functional validity tested?
  • How is system behavior and performance tested?
  • What classes of input will make good test cases?
  • Is the system particularly sensitive to certain input values?
  • How are the boundaries of a data class isolated?
  • What data rates and data volume can the system tolerate?
  • What effect will specific combinations of data have on system operation?

By applying black-box techniques, we derive a set of test cases that satisfy the following criteria:

  1. Test cases that reduce, by a count that is greater than one, the number of additional test cases that must be designed to achieve reasonable testing and
  2. Test cases that tell us something about the presence of absence of classes of errors, rather than an error associated only with the specific test at hand.

Functional testing typically involves five steps:

  1. The identification of functions that the software is expected to perform.
  2. The creation of input data based on the function's specifications.
  3. The determination of output based on the function's specifications.
  4. A The execution of the test case.
  5. The comparison of actual and expected outputs.


  • Medical Upgrade- The Rise of 3D Printing
  • Reskilling- Upscaling Human's Digital Sophistication
  • Data-Driven Policing- Countering Data Breaches and Cyber-Attacks
  • Autonomous Driving
  • Democratization
  • 5G Technology
  • HyperAutomation
  • Robotic Process Automation (RPA)
  • Artificial Intelligence (AI) and Machine Learning
  • Software Engineering
  • Software Testing