I am repeatedly seeing a pattern of us adding automated tests as we add functionality and the code base grows. Unfortunately this doesn't play out well as the "few minutes" test suite turns into 20-30 mins, then an hour, then 2-3 hours and of course development slows down dramatically. Not to mention morale.
What approach can we use to reduce the number of tests and reduce the run time? We'd like to keep the test running as close to the code being changed as possible (i.e. within minutes) if possible.