You should absolutely version-control your tests. Alister Scott talks about this in a recent blog post on his WatirMelon blog. He also goes through the steps to easily set up an SVN repository on a shared Windows drive.
I’d go a step further, though. I think it is a no-brainer that the automated tests need to be stored in the same VC system as the code. Here’s why:
So, let’s say you’ve built a set of tests for a build. You’re ready to ship, and the code is branched. If you have your automated tests in a separate place from the code, you also have to branch the tests, and maintain the branch and (hopefully) have everything aligned properly.
However, let’s say in an alternate (happier) universe, you’ve simply created a directory off your /trunk called qa, which is at a peer level with ‘dev’ (or whatever directory your source code is located in). So, your directory would look like this:
trunk
╚ dev
╚ qa
Now, all you do when you do a release is tag and branch everything under \trunk. Then, all the tests appropriate for that version of code will be branched along with the code.