First of all... you NEVER test or execute tests in a Production environment for obvious reasons(unless my understanding of a production env is comletely different to anyone else's [img]/images/graemlins/tongue.gif[/img] ........). You will have two sets of tests in the test env. Your test env however should mirror live but on a smaller scale. Your first test would be the application and then the second would entail the transactional states between the app and your billing (database env)i.e. overall performance.
I have tested in both but had to take a lot of factors into consideration.
1). Type of testing (stress, performance, day in the life etc…)
2). Can you test in production without impacting the end user
3). Are you putting data into the system and can you have it removed without having problems with auditors
4). Is the UAT environment similar to the production environment in regard to type of hardware, number of servers, are they load balanced etc…
5). Is the production site up and running live for the customer and their clients (always a big consideration but not a show stopper)
These are just a few of the things we consider when we test production sites. I personally like to test the production site prior to the system going live to give the client/customer a sense of what kind of performance they can expect.
Just as a hint we often end up doing our testing in live production sites in off hours or during maintenance windows.
As far as possible all the resources involved in the testing environment should be close to the live environment.Should be exact replica of the live environment in all respects with exeception in few cases.