Testing performed without knowledge about the underlying code and structure of the test object but with an understanding of how the product should be functioning. The term is an analogy of the test object as a black box that you can't see into. Focus on the usage of the product.
Could be a necessity or a choice of technique. If you use it by choice, what would be the benefits?