My Development/test environment is a separate domain that runs on my existing web host. I buy a promo priced/on-sale domain (1USD for example). This low price is usually good for a year. When the promo pricing ends I don’t renew the domain, I buy another one that is on promo pricing.
I do this to keep my dev/test environment completely separate (privacy/security) from my existing production environment and subject to the real world production environment of the web. It’s too easy to make a mistake in a subfolder that takes down your production environment and/or opens a security hole.
From a web hosting perspective, having a separate test domain allows me to test new web host technology and software updates. If something were to happen to my production domain, such as a hack, stolen domain, or rogue nation takedown attempt for example (I’ve seen everyone of these happen), I can redirect/upload my site to another domain. I’ve seen web developers make mistakes when testing that blocked them from their own domain.
Preview does not give an accurate representation of the push/pull of data across the web. As a content creator I have to see how my content is affected by bandwidth and link integrity. PHP functions such as forms and search cannot be tested in preview.