Black box testing belongs to the "box approach", where a piece of software is regarded as a box and the box contains various functions, methods, classes, and so on. Metaphorically, a "black box" typically means that we cannot see what is inside the box. This means that we implement the test without knowing the internal structure of our program; we take an external perspective of the program, using valid and invalid inputs in order to determine if the output is correct.