Testing software based on output requirements and without any knowledge of the internal structure or coding in the program. The term is also used to test a website's vulnerability without having any knowledge of the Web server infrastructure (see penetration test). Contrast with white box testing and gray box testing. See testing types and SAGE. See also black box.