I sometimes consciously split the functionality I'm testing into two parts: general : behaviour that is the same, or similar, regardless of where it appears, how it is invoked and so on; and specific : which differs according to function, context, time, data types etc. I'll tend to do this more on larger projects when the areas are new to me, or to the product, or if they're complex, or I think the test framework will be complex, or the specific is heavily dependent for its delivery on the general, or perhaps when the specific details are certain to change but the general will be stable. I'll be looking to implement automation that concentrates first on general functionality and self-consistency and that will serve as a backstop when I move on to the more specific material. To speed things up, to get wider coverage easily, and to avoid dependencies, I'll try to avoid crafting new test data by looking for data already in the company that can...