What are best practices on virtual lab/test bed architecture? [closed]

It really depends how the developers will be using this, and how often they are likely to break things. If each of your developers need to deploy their code to eh test environment every day, and are likely to overwrite other developers test setups then you would prob want to consider giving each developer their own test environment. The same goes if a fault with one developers code is likely to affect all the other developers doing there work, is it likely to lock up the whole server etc. If the testers are going to want things in their environment like Exchange and AD setup to their own custom requirements, then again they probably need their own test box.

That said, if each developer is running their own site in IIS, that runs in it's own application pool, and only needs shared access to resource like Exchange and AD, then maybe a single shared environmental. You can partition up AD into OU's so that things like user account creation and deletion do not affect other users etc.