You could have one database and have different prefixes for dev,tes,prod. But then the database will grow quite quickly.
To move objects between databases you can look at:
File -Get External Data -Import
or
Export
or write code with DoCmd.Transferdatabase parameters
or same command in a macro.
But however you do it, I'd set up a table keeping a date/time stamp on each object moved and by whom. And audit it often.
I worked for AT&T during the breakup and we had to rewrite the phone system. The compiled code went to seven centers around the U.S.. When a problem came in, it had to be tracked back to the developer, through testing, recompiling and then where it went. We had a central center through which everything went, requests, changes, linking, compiling and shipping. You have to do this because people will be sneaking in fixes and changes unknown to you.
My opinion.