Hi Richard, the best practice for testing a tag is to add it to your profile, configure it and then lock it to the dev or qa target which is available in the Advanced Settings of the tag and then publish your profile to the appropriate target.
Alternatively, you could use the Split Segmentation extension to create a test segment of your website visitors and then create a load rule based on the test segment id and only run the tag for your test segment.
In either case, there is not a method for testing a tag without configuring it and publishing the configuration to at least one target environment.
Clint's recommendation, especially locking a tag to a specific publish-environments, is best.
Occasionally I will also create a load rule for a cookie that has to be manually created, such as, "testuser" and have it load this tag only if that cookie contains the value "son.hoang". This ensures that I can test anywhere and it will only load for anyone that is aware of this load rule.
I agree with Son's recommendation although a query parameter is easier and probably just as safe against accidentally being triggered. If you use a query parameter like testpage=confirmation then you can test a tag firing without deploying it on the live site or having to go through the steps to get to the right page. Using a query param allows you to share a link to the page, which is not possible with a cookie.
I do this sometimes, too if it's just for one page. I find the cookie is better if it's to see a tag function across multiple pages/pagetypes (e.g. Criteo) or if testing some kind of pathing logic (e.g. some more complicated attribution scenarios).