a software testing technique where the internal workings or code structure of the system being tested are not known to the tester but you test a functionality