Well I'd like you to try a large project without design.
Agile, is just about working on the highest priority. No that doesn't mean follow the waterfall documentation avalanche but it does mean that there's a design in terms of components etc. If you have 64 people on a project.. you will need a design..
We had over 13,000 unit tests and over 1,300 system (ie start the system up, test and check) that ran every night. Hygiene is key and having the time to refactor is paramount. Often it's better to run a high level component design, just as a reference point rather than having people leave and then having to spend a month reading code yet again to work out how to change things..
Tests have become:
a) a specification of the requirements - checking that the requirement is fullfilled,
b) then as Jammin has said, the tests then check that the code adheres to the design.
c) finally you get to the point where the cost of testing is too high or can be implied elsewhere with an acceptable degree of risk.
Agile works IF your customer knows what they want. This works if your customer is a business analyst for example that has already gone through the company and dealt with the lies, the politics and the responsibilities for the different parts of the system.
Don't get me wrong - I'm working with a developer now who is agile focused. However when the business has fixed price projects to deliver improvements in the company, if the engineer went directly to parts of the organisation.. then you'd not get anywhere due to politics (yes I'm currently doing the business analyst/solution architect/development manager role so I'm the customer).
Software companies seem to be very cerebral in running with the work rather than getting all political and backstabby.. that's the engineer's love of getting something beautiful built rather than climbing to the top of the mound of corpses.
Sorry I've had a grand day dealing with ****.
