Have you considered this ? :
Create a new empty TEST DB instance within the the prod server using the same structure as production, then, using the wizard ( don't freak...stay with me here.... ) you populate the smaller tables ( lookups, etc ) until you have everything except the big transaction tables, logs and join tables, ect.
At this point, you back it up, then delete the operational TEST DB.
Next, you restore the backup to DEV/TEST, and again, using the wizard you populate all the other tables ( from PROD ) BUT...you filter for just the data ranges you need. Run BackUp again. You now have a clean TEST Env, restoreable as needed.
When you need a newer set of test data, you go to backup # 1, restore it, and you populate the transaction, join, log tables using the filters as needed. Back that up. You now have a new, restorable Test database.
Once you have the process well defined, you can start writing VB utilities ( C# if you prefer ) to do the filtered copying from PROD to TEST.
First do it the slow manual way, so you have every step defined. Then add automation.