Rachel
Davies posts about the idea of an Agile Deployment. In an Agile deployment,
you have unit tests to make sure that the production system on which your
product is installed meets all the required hardware and configuration needed.
That solves you a lot of trouble, especially is there is a different team in
charge on the production server.
There's a definite possibility that people are already doing this, though
personally I never did (just because I didn't think of such a brilliant idea).
What would such unit tests entail? A lot of grudge work, for sure. Especially
for complex systems which demand various configurations to appear. I'd suggest
to implement the tests, not specifically as unit tests, but using existing
automated tools. Here's a list of suggestions:
Create an installer project in VS.NET. An installer can have various
prerequisites pertaining to the operating system involved and so on. Create an
empty installer project with just the prerequisites and no output. If it fails
to run on the production system, you know you forgot something. However,
there's only so much you can check in an installer.
You can use an automated build tool such as FinalBuilder and just create
lots of "IF" tasks inside it that fail if what you expect is not there. This
has the advantage that there are many built in checks in place for you to just
invoke. You can also have various actions taken if something is not well.
Create your own custom tool that checks things. You've got two choices
here: make it generic enough to be easily customizable for any project(longer
time to make, shorter time in the long run) or make one ad-hoc for the
specific project.(short time - but re-inventing the wheel every time).
Use a third party tool made specifically for this purpose.
Preferably one that can be run along with your unit tests from the
command line. Do you know of any?