Good ideas Calvin, for sure.
We have separate everything - sql/ssrs server, docstar server, appservers, epicordate locations, etc. - but they are all on VMs and with the ability to snapshot at will, testing/receovery/testing cycle is super easy.
As for changes inside the DB, I’ve built a script to do the work for me… it can be found attached to this post TestEnvironment on same server as Production - #6 by Ashley
It disables schedules, set’s company names, directories, etc. as you described.
The drawback of totally separate is that you do need to copy report files and stuff between systems to keep everything in sync.