This is a very tricky question because in one respect these types of tool are something that can be outsourced quite easily, much more so than central elements of your product, but conversely you might find that it adds understanding of potential core elements of your product if you create them yourselves - for example the test data generator can tell you a lot about your own data integrity rules that might not otherwise come up until you tried to use your outsourced tool, although of course defining the rules is also likely to help.
I guess my core guiding principle is simply this: Is it economical?
- Will it take longer to define the problem, convey the definition to an outsource company and manage the process with them than it would to build the tool?
- Would developing the tool in-house add useful expertise on the behaviour of the existing software?
- Is there a third-party tool that could be used, perhaps with some customisations, to do the job rather than having anything bespoke made at all?
- How are we looking in terms of manpower and deadlines?
Where I work we have successfully outsourced some QA work, but we tend to develop supporting tools in-house ( in fact that is largely my job ) and doing that with the developers of the main product on hand for guidance is very useful.