Functional testing only goes so far and stops at the assumption that the code and design are correct.