Honestly, Testability is one of those things I should think on more intentionally than I do.
But having read a few of the excellent responses here, I tend to think of Testability as a dial.
There’s one end of the spectrum where you basically can’t test something well at all (there’s always some way to test a part of an application…or else it really doesn’t matter, because it can’t be observed, right?)
At the other end, there’s an obvious, clear way to test something, and it works well with your toolset.
I find that adding in testability to a program (often times making sure there are hooks to the objects for something like Selenium to grab onto easily) is a trade off for the development team as a whole.
You can also run into issues where a feature is broken down in such a way that individual chunks aren’t very testable (or at least, aren’t worth the effort to test individually), but that it keeps the whole development process moving.