I have *.dev.mydomain.com set to point to 10.0.0.8 which is my local dev box which allows all my devices on my home network to test dev sites.
I have my local dev box running lighttpd set to detect that subdomain and load /var/www/$subdomain so I can easily create a new folder and instantly get working on a new site without having to deal with new conf.
I use SVN to put my code on the testing & live sites. I know people say this is bad but I've done it in a smart way

.
I use a subdomain on each site (eg testing.domain.com) which is password protected in the lighttpd conf and which loads the /var/www/projectname/testing folder.
Once tested by the client, the live folder is updated over SVN which is almost instant.
This way I only need a single server using virtual hosts and no extra domains or dealing with hosts files. If I didn't want to run a local dev server it'd be fairly easy to do that on the live box too. With some sites I have a more complicated SVN setup but that's not really part of this discussion.