Testing of a software build. Differences between software builds are
tracked by scanning the binaries of a software product to automatically
discover its classes. A detailed dictionary is built that captures static
and dynamic information of that build, including class dependencies. A
comparison may be made with another build, so that selective tests may be
automatically executed on any types, and their dependencies, that have
had a structural or behavioral modification since the last build. Testers
may load a set of constructors for any specific types to further increase
coverage of types (or classes) tested. Detailed reports may also be
provided that may be used to drive future testing work and target
specific areas of the code for additional testing. Code generation from
intermediate code to specified targets may also be performed to aid in
reproducing and fixing bugs.