Black-box testing
Black-box testing is a software testing methodology in which the tester evaluates the functionality of an application without any knowledge of, or reference to, its internal code structure, implementation details, or execution paths. The system-under-test is treated as an opaque "black box": the tester supplies inputs and observes outputs, judging correctness entirely on the basis of whether the system behaves as expected, without concerning themselves with how that behavior is produced internally.
Rather than examining source code, black-box testing relies on external descriptions of the system — such as requirements specifications, functional designs, and use cases — to determine what the correct behavior should be.
The primary goal of black-box testing is to verify the software from the user’s perspective, ensuring that all specified requirements are met and that the application behaves predictably and correctly under a range of conditions.
Because it does not require knowledge of the underlying implementation, black-box testing can be performed by testers who are not programmers, and it is well suited to validating that a system meets its agreed functional specification.
Black-box testing is applicable at multiple levels of the testing process, from individual component interfaces through to full system and acceptance testing. Its principal limitation is that, without visibility into the code, it is difficult to assess how thoroughly the internal logic has been exercised — a gap that [white-box testing] is specifically designed to address.
Black-box testing is conceptually similar to [behavioral testing], and the two terms are often used interchangeably.