As part of a larger project, we are creating (or rather updating an existing) compiler that translates a Domain Specific Language (DSL) into a proprietary bytecode.
The bytecode then gets loaded into and interpreted by the appliance that we are creating.
Due to time constraints and the fact that testability was not taken into account in the design of the compiler, we will be doing almost exclusively end-to-end (sub-)product tests on the compiler, meaning that the compiler will be tested as a single, black-box, unit.
The question that keeps nagging me is how we can get some confidence that our tests are covering the likely areas of problems to the extent that we deem necessary.
What (formal) testing techniques can be employed in the testing of a compiler to gain confidence that we haven't overlooked an important area in designing our test cases?