TestView is a reverse engineering tool that focuses on test suite exploration. It helps developers to locate test cases in a system's (hierarchical) decomposition, reveals test cases' intent (~ static coverage) and gives insight in test design decisions. As such, it helps to identify strenghts as well as weaknesses of the test suite during a reengineering project.

 TestView visualizes a software system (including its test suite) as a graph, distinguishing production artifacts from test artifacts.

 To compose the graph model from source code (step I. in the image), TestView requires a fact extractor to compose a model of the system from the source code. Currently, we rely on the Fact Extraction Tool CHain (Fetch) to accomplish this step. As a result, we can address C/C++ and Java systems with CppUnit/CxxTest/JUnit test suites. However, any fact extractor that can write to the GDF graph description format can serve as data provider. The GDF format belongs to GUESS, the graph exploration environment TestView is a customization of.

TestView Screenshot

TestView consists of three views (filters) on the overall graph. The System-wide Test View (step 2.) in the image shows the hierarchical decomposition of the system (in terms of packages, namespaces, directories, classes, etc.) by means of the grey edges. White nodes represent packages and test cases, while black nodes represent test cases. The black edges are the static coverage edges between test cases and production classes, i.e. there exist method invocation between the source test case and the target production class.

 Two additional views, the Unit under Test View (see step 3.) and the Test Case View, focus on one particular production/test class. These views provide insight in the use and testing of a particular production class (the unit under test) as well as visualizes design decisions in the test suite.

 For more information about the concept, graph patterns, interpretation and the tool, check out our paper Exploring The Composition of Unit Test Suites.


 Written by Bart Van Rompaey