The intervening code is a major cause of test death. That’s especially true when it’s a graphical user interface as opposed to, say, a textual interface or the interface to some standard hardware device. For example, suppose the user interface once required you to type in the phone number. But it’s now changed to provide a visual representation of a phone keypad. You now click on the numbers with a mouse, simulating the use of a real phone. (A really stupid idea, but weirder things have happened.) Both interfaces deliver exactly the same data to the code under test, but the UI change is likely to break an automated test, which no longer has any place to "type" the phone number.