In Version vs. Patch, I talked how a patch does not change intended behavior, a version does. Which brings to mind the next question: What is behavior?
Strictly speaking, behavior is the expected response for a given input and preconditions. For practical purposes, behavior is whatever can be tested. Some might quibble to say that quality-of-service requirements like transactions, performance, and security are also testable, yet aren't really behavior. I prefer a broader view: If you need the application to do it, and you can test to make sure that it does it, then that's part of the behavior of the app.
If you change your application, but there's no way to test whether the change is in place, then you haven't changed its behavior. An example, again, is refactoring: Changing the code to improve its quality without changing its behavior. But as mentioned previously, a patch usually doesn't just change the code, it also changes the behavior. If a patch is supposed to change the behavior of an app, but the tests still pass just the same as before, then either the tests aren't adequately testing that behavior, or the patch hasn't really changed the behavior.