It is better to test early ('shift left') becuasebecause it is cheaper to do so and because it also:
- Enables greater speed of change which is increasingly critical for many companies
- Enables faster fixes because the context is more recent for the programmer
- Enables higher quality because the context is more recent for the programmer
- Helps brings a testing mindset to developers which improves quality
- Encourages automation - the closer it is to programmers the more they will want to automate
- Encourages conversations up front about design and testing*
Perhaps most critically of all you will *miss out on the benefits of BDD (Behavior Driven Development) and TDD (Test Driven Development).
The advantage of these techniques is NOT just that you have tests that cover your code. The true advantage is that
Tests drive the development of easily testable, high quality application code
A mature developer will have learned over time that when you write the tests first it really affects the application code you then write and you actually end up with application code that is different - for one thing, it's written to be tested and addresses the most common problem with application code - "it's not written to be tested !"
* I've seen weeks of work saved by a 10 minute 'up-front' conversation about testing