wiki:path:pathMap

Version 20 (modified by michael.perscheid, 10 years ago) ( diff )

--

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 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: Test-driven Fault Navigation (Debugging), Test Quality Feedback (Testing), Type Harvesting (Program comprehension), and Requirements Traceability (Program comprehension).

Screenshot

How to Use

  • First, you need a proper Path project that is selected as current. For more information see PathProject.
  • To start PathMap choose the tool either in the world docking bar at the top (Apps -> PathMap) or in the world menu (open... -> PathMap).
  • Depending on the project size, it can take some seconds for computing the static analysis in background.
  • After that, you will see a test runner that looks in parts similar to the original one.
  • You can select tests from the list on the left and run them with the buttons below.
  • Test results are then presented in the middle. At the top, you will see the summarized test results as usual, in the middle a large tree map represents the system under observation (green, yellow, and red rectangles represent the test results and can interactively be explored), at the bottom you will find some static project metrics.
  • On the right side, you will find some flaps that allow PathMap to reveal hidden test knowledge within the next run (for more information see below).

User Interface

PathMap supports several analysis modes that can be activated by selecting and extending the corresponding flap on the right side. After that, running test cases will automatically include the chosen analysis.

Test Runner

With no extended flap, PathMap acts like an ordinary test runner (no analysis in background without any performance slow down). Its main components are the test control panel (left), the tree map in the middle, and its specific flaps on the right.

Left pane (list)
Displays all found test cases (suites) within the current Path project. Developers can select, which of them should be executed by clicking on the Run Selected button.
Left pane (buttons)
  • XXX
Text box (top)
Tree map (middle)

each morph a method -- u for unit test

Interactive elements on tree map (morphs)

labels

click --> buttons

Text box (bottom)

In the following, we will present each flap on its own.

Test Quality Flap

See also Test Quality Tutorial

Profiling Flap

See also Test Quality Tutorial

Fault Localization Flap

See also TDFN Tutorial

Induction Flap

See also TDFN Tutorial and type harvesting

Traceability Flap

See also Traceability Tutorial

Global Options Flap

Attachments (10)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.