Our simple instrumentation allows uniform instrumentation of various language dialects, parts of source files or complete source files, multiple language projects, and multiple related or unrelated projects. The instrumentation strategy and instrumentation code are almost identical for all major industrial languages.
A minimal to-the-point instrumentation is used, by inserting general coverage-distribution recording calls at conditional statements. The called distribution-recording function is located in a library and is common for all conditional statements and all programming languages. The projects that use instrumented source files need only link to this library. The instrumentation takes less than 5% of the time it takes to build the original, un-instrumented code.
The time it takes to build the instrumented code is virtually identical to the time it takes to build the original code. The instrumented code could be distributed on multiple machines and tests run in a usual lab setup. The Diversity Analyzer does not need to be installed on each machine where the test is run, only on the machine where the instrumentation and viewing of results are performed.
Place simple zoom statement in the code to delimit the scope of diversity analysis to sections of code that are of particular interest. In order to make the diversity analysis more precise and flexible, comments with the keyword ZOOM_BEGIN and ZOOM_END could be inserted into the code by a tester to delimit the scope of the analysis to the block of code delimited with these keywords.
This allows the testing to zoom into various code segments, and causes the reports to be simpler with less data, resulting in to-the-point quick analyses. This finds its application for example, in cases where only new code (code inserted or modified since the last major version) should be covered.
Flexibility of all-at-once instrument source code belonging to different projects, written in different programming languages and dialects, and comprising various targets, such as exes, dlls, ocxs. Place only the files of interest into target directories selected for analysis. Place files that belong to different projects, different executables, different dlls, and different ocxs.
Place files of different programming languages and dialects in the same directory for all-at-once instrumentation. Use this feature when you need to analyze code that is related but resides in different projects, and potentially runs on different machines. The Diversity Analyzer allows one or more computer software source files, which are part of one or many projects, one or many executables, and/or one or many libraries, written in potentially different programming languages to be selected for diversity analysis.
Flexibility in the time of diversity and coverage analysis. Analyze diversity and coverage at break points in debug mode, as the program is still running, or it has crashed. The permanent true/false distribution record is updated immediately after execution of every conditional expression, keeping up-to-date record of distribution data. This allows great flexibility in the analysis of distribution data, even as the program under test is still running, or it has crashed, or has terminated successfully.
It also allows fine granularity of analysis, where the distribution data could be analyzed per individual test or even anywhere in the middle of a test by using a debugger to interrupt the execution of the program. If the average of 1.4-1.6 increase in run time is too great, the Diversity Analyzer gives you an option of faster run-time by writing data to a permanent record only when the application under tests exits.