The Path Tools Framework
The Path Tools Framework comprises several development tools for supporting typical software maintenance tasks such as debugging, testing, and program comprehension. It realizes among others our test-driven fault navigation, test quality feedback, and model-based source code editing approach.
Our implementation primarily consists of three tools that are built on top of a flexible dynamic analysis framework:
- PathMap is an extended test runner that analysis test case behavior and provides feedback about the entire system under observation. For example, it visualizes suspicious system parts, identifies experienced developers, derives type information, automatically creates contracts from likely invariants, reveals missing test cases and performance bottlenecks, or traces requirements down to program entities.
- PathFinder is a lightweight back-in-time debugger for navigating through specific test case behavior and state. It assists developers not only in understanding entire execution histories but also in localizing root causes by highlighting infection chains and answering questions about corrupted object state.
- PathView is a single-source model-based editor that allows developers to apply a direct round-trip engineering approach-changes in source code are immediately reflected in our UML-like views and vice versa. We automatically create such models based on specific test case executions and harvested type information from the entire test base.
The Path analysis framework provides the basis for our tools. It is an extensible realization of our incremental dynamic analysis for Smalltalk’s SUnit framework. By leveraging unit tests as a basis for dynamic analysis, we can ensure reproducibility and a high degree of automation, scalability, and performance with our tools.
Keywords: Software Maintenance, Testing, Debugging, Program Comprehension, Anomalies, Back-in-time, Test-driven fault navigation, Test Quality Feedback, Path Tools Framework, PathMap, PathFinder, PathView
[24. February 2014] New one-click image with all installed Path tools available. Try it out!
[10. January 2014] We publish the first version of our Path Tools framework (under the MIT license). Have fun!
How to Install
Using Metacello, just run the following code in your workspace:
(Installer mc http: 'http://www.hpi.uni-potsdam.de/hirschfeld/squeaksource/') project: 'PathTools'; install: 'ConfigurationOfPathTools'. (Smalltalk at: #ConfigurationOfPathTools) load.
After installation, please check if all test are passing (category !Path-Tests, some tests can only be run alone in the standard test runner or use our PathMap with the path project instead)
We offer two preinstalled, ready-to-go, all-in-one Squeak images (Version 4.4). Just download, extract, and execute it! These images work for all operating systems (Windows, Unix, Mac OS).
- Complete image with all installed Path tools. (download (~80 MB))
- A prepared tutorial in form of an interactive Squeak image. It explains our test-driven fault navigation by debugging a difficult failure step by step. (download (~90 MB) (Note: This image does not include PathView).
How to Use
In the following two sections, we introduce all features of our tools and present typical applications (including screencasts).
Definition of the system under observation
Extended test runner feedback
Lightweight back-in-time debugger for test cases
Connection of source code and hidden test knowledge
Single-source and round-trip engineering code editor
Test-driven Fault Navigation
integrates anomaly detection into a systematic breadth-first search for debugging failure causes back to defects. We answer important questions such as where to start, who understands failure causes best, what happened before failures, and which state properties are infected?
Test Quality Feedback
guides developers in identifying missing tests and correcting low-quality tests. We provide developers with a tool that analyzes test suites with respect to their effectivity and efficiency.
combines external concerns of a system with test cases and automatically derives corresponding program entities. This allows developers to follow requirements down to their implementation without much effort.
Model-based Source Code Editing
generates UML-like views of classes, methods, and their relationships being involved in a specific test case. Based on such mid-level abstractions, developers can edit these models and the related source code is changed automatically in background.
is a practical approach to obtain type information. Based on unit tests, we automatically derive run-time types and enrich the development environment with it.
To date the following people also contributed to this project:
- Franz Becker
- Tim Felgentreff
- Anton Gulenko
- Markus Güntert
- Michael Haupt
- Robert Hirschfeld
- Vasily Kirilichev
- Stephanie Platz
- Oliver Richter
- Leonhard Schweizer
- Eric Seckler
- Benjamin Siegmund
- Bastian Steinert
- Marcel Taeumel
- Philipp Tessenow
- pathProject.png (13.5 KB) - added by michael.perscheid 3 years ago.
- pathMap.png (24.1 KB) - added by michael.perscheid 3 years ago.
- pathFinder.png (21.2 KB) - added by michael.perscheid 3 years ago.
- pathBrowser.png (21.7 KB) - added by michael.perscheid 3 years ago.
- pathView.png (14.0 KB) - added by michael.perscheid 3 years ago.
- tdfn.png (21.7 KB) - added by michael.perscheid 3 years ago.
- backintime.png (16.7 KB) - added by michael.perscheid 3 years ago.
- modelbasedEditor.png (15.8 KB) - added by michael.perscheid 3 years ago.
- tqf.png (30.9 KB) - added by michael.perscheid 3 years ago.
- traceability.png (15.2 KB) - added by michael.perscheid 3 years ago.
- typeHarvesting.png (5.6 KB) - added by michael.perscheid 3 years ago.
Download all attachments as: .zip