What do you think is the state of the art in 2009?
To write high-quality software, you have to do all of this. There are a lot of excuses, why not to do this, but they are all just excuses. To make you feel worse, this test strategy is even not sufficient, because you also need human testers. They must be really good, they do blackbox testing, find strange wording, unintuitive interfaces, page-as-cage situations, improper avocation at important conversion points, etc. pp. But a good tester is never as cheap as software, also a tester could not be controlled per command (which is good), so the hard problems need to be tackled before.