QA Environment

What is the best way to setup a WordPress QA environment for development and testing that is separate from the live production environment? Ideally it would be a simple process to push the QA environment into production once it has been tested and verified.

recently discussed here: https://discussion.dreamhost.com/thread-139077-post-169835.html