If we take the most restrictive requirement for extensions (the requirement that Microsoft considers mandatory for approving your extension for release to AppSource), app and test code should be placed in separate extensions. As such, the test extension should have a dependency on the app extension.
This separation, however, might restrict the parallel development of the app and test code, since any change to an app extension results in its redeployment. This potentially also results in an update and redeployment of the test extension.
Before you realize it, you are continuously juggling your extensions, thereby reducing the productivity of the development team. The best course of action, while developing, is to have the app and test code placed in the same extension. Once it's ready, you can split up the code and create the...