For tables like the help desk table that fire stored procedures and triggers to ancillary tables, we use Datatect to create flat files. These flat files are supplied as input to our automated test scripts, which in turn simulate user input to create the data in the database through the browser. This approach takes advantage of the software being tested to create the actual database entries from the generated data. Putting data to work Generated test data can obviously be used to create databases with enough information to approximate real-world conditions for testing capacity and performance. If you need to ensure that your database design can support millions of customers or billions of transactions and still deliver acceptable response times, you need some practical means of creating these volumes.
Functional testing is a different animal, however.
If you are testing business rules, such as whether an overdue account balance may permit additional credit purchases to be posted, then you must know precisely which account number contains the condition and which transactions may be entered against it. It may be easy to generate huge volumes of accounts with balances that are all over the map in terms of their amounts and due dates, but it is not as simple to know exactly which accounts satisfy which business rules. The same issues exist for sampling production data. Even if you are comfortable that your data sample represents the types of conditions to be tested, it's another matter altogether to know which accounts meet which requirements. Not only will this help you evaluate the various products, but it will also add to your education about how your software and its data are designed.