How do I Create Single template for custom post type with a custom URL?

Template hierarchy allows you to be specific down to a post name. This then allows a method (which I have used) to test out a newer version of the template on one specific page.

See this page on WP

For example. If you create a virtual-program page called ‘wpse372687’, the file ‘single-virtual-program-wpse372687.php’ is more specific for that particular page. When you visit that page you use the new template, but any other virtual-program page uses the next best match of the old/current template.

It has its limits but its an easy way of testing side by side, if you don’t want to go down the route of a staging server (which is also a good suggestion from Sally).