According to Jon Kern, the difficulty with "agile development" and "testing" is that they can both be "in the eye of the beholder." This article outlines the different roles that various tests can play in agile development.
Not only are there different types of tests, but there are also different ways to conduct tests. There is no one-size-fits-all strategy. Like everything in agile development, testing also requires you to use your brain! I know, shocking, eh? * Unit tests are good for the developers to build up to ensure the basic functionality of the underlying code works. * Acceptance tests are used to ensure specific functionality works. * Performance tests are good for benchmarking non-functional requirements. If you are practicing test-first development, you can start with an acceptance test for the feature you are implementing. But you will quickly get involved with writing lower-level tests to deal at simpler, more granular levels of the system. Personally, I don't use tests to derive the architecture and major classes involved in the design. But I can see where some people do. Much depends on your habits, and more likely how your brain is wired. Mine is pretty loose :=\, and I tend to visualize objects.
Read the rest of Role of Testing in Agile Projects.