Software or vulnerability testing that tests an application's internal structures as opposed to its functionality. White-box testing uses an internal perspective on, and knowledge of, the system under test to design test cases. Contrast black box testing and gray box testing.