[[PageOutline(1-3)]] = !PathMap = !PathMap is an extended unit test runner that provides valuable feedback for software maintenance tasks such as debugging, testing, and program comprehension. This tool that does not only verify test cases but also analyze them in order to provide feedback about test quality, identify failure causes, derive likely invariants, and trace requirements. == Description == Test cases possess a valuable source of information as they implicitly define expected and unexpected behavior all over the system. During the execution of their exemplary assertions, they do not merely cover directly-tested methods but rather large call sequences with corresponding states through internal parts of the system. Based on this idea, we can inductively derive from the specific run-time values of executed test cases more generalized and helpful program properties. For example, our [wiki:path:tutorial:typeHarvesting type harvesting] exploits test cases to obtain type information for a code base automatically. We derive type data from the concrete objects used during test case executions and provide developers this hidden information to assist in navigating source code and using application programming interfaces (APIs) correctly. By making this hidden test knowledge available, developers have additional information for debugging, testing, and understanding their programs. !PathMap is our extended test runner that reveals the hidden knowledge of test cases and presents it to developers. It provides a low overhead analysis framework that computes coverage data, likely invariants, and static metrics and displays the results in form of a scalable tree map visualization representing the system under observation. '''For more specific use cases, see also the following tutorials:''' [wiki:path:tutorial:tdfn Test-driven Fault Navigation (Debugging)], [wiki:path:tutorial:tqf Test Quality Feedback (Testing)], [wiki:path:tutorial:typeHarvesting Type Harvesting (Program comprehension)], and [wiki:path:tutorial:traceability Requirements Traceability (Program comprehension)]. == Screenshot == [[Image(pathMap.png)]] == How to Use == * after selecting project... see [wiki:path:pathProject PathProject] == User Interface == !PathMap supports several analysis modes that can be activated by selecting and extending the corresponding flap on the left-side. After that, running test cases will automatically include the chosen analysis. === Test Runner === The standard behavior - no flap extended test pane, standard buttons, tree map, text boxes [[Image(pathMapMorphButton1.png)]] [[Image(pathMapMorphButton2.png)]] === Test Quality Flap === [[Image(testQualityFlap.png)]] See also Test Quality Tutorial === Profiling Flap === [[Image(profilingFlap.png)]] See also Test Quality Tutorial === Fault Localization Flap === [[Image(faultLocalizationFlap.png)]] See also TDFN Tutorial === Induction Flap === [[Image(inductionFlap.png)]] See also TDFN Tutorial and type harvesting === Traceability Flap === [[Image(traceabilityFlap.png)]] See also Traceability Tutorial === Global Options Flap === [[Image(optionsFlap.png)]]