Great post. Some additions …
The time it takes to write the test is the least important. It only happens once and in general the more thought and quality a test has the greater the reduction in the long-term costs.
The time it takes to write a test is the most visible time, so this where deadlines and pressure strike first. It can be really difficult to have enough time to think about and write good tests.
All the negative effects of bad tests are insidious. Their effects quietly build in the background. A suite of bad tests gives the impression that everything is great when in fact the opposite is true.
The easiest tests to write are low value, high runtime cost. Conversely writing high value, low runtime tests is really hard.
High value tests are really innocuous. They don’t break of their own accord, they help you write code that breaks less, they have a low runtime so they don’t impede development very much, they are simple and easy to read, and finally when they fail they give really good error messages so fixing their failures tends to be really easy. Consequently they are completely undervalued!