Open Quality Data

This page lists quality dashboards for our own software products and for selected other projects. The Project Pages links will give you more details about each of these projects.

We welcome feedback! Please let us know what you think at openquality@agitar.com.

More information about this data

Where This Data Comes From

All dashboards in the list are now created by an automated process which uses CruiseControl to check for updates to the source code, and Ant to build the product, run the unit tests, and build the dashboard. The table is created through an automated process, and it is not thoroughly reviewed.

Since we are not experts for most of the products in the table, the results may at times be impacted by our ignorance. For instance, on one product the maintainer pointed out that we had measured test coverage on his tutorial files, which came without unit tests. This was quickly corrected once we were notified of the issue.

What Do the Dashboard Overview Metrics Mean?

These dashboard reports show observable data about unit test results. They cannot interpret the data. However, having used these tools ourselves and for our customers, we see a clear correlation between increased coverage, increased numbers of test points (assertions), and improved overall software quality.

The projects: The table shows some key metrics about each of the projects. If you click on the project name, you'll be able to review the supporting data in the linked dashboards in greater detail.

Number of methods: Java projects consist of packages, which consist of classes, which contain methods. The number of methods is a good indication of the size, scope, and complexity of a project. The full dashboard report also lists the number of classes, the number of executable lines of code, as well as the number of test classes, test methods, and executable lines of test code in the associated JUnit code.

Coverage: Before you can make assertions that will test code, you must be able to execute it. The dashboards report coverage as a combination of both line and condition coverage. Line coverage is a measurement of what percentage of lines of code are executed at least once during test execution. Condition coverage is a measurement of code execution that shows what percentage of all Boolean conditions in a unit of code have occurred at least once during test execution. Condition coverage provides a better measurement of the logical "testing space."

In the detailed dashboards, we present a new statistic called Outcome Coverage. Outcome coverage can only be measured for Agitator assertions, not for JUnit assertions. Outcomes are the results of method calls. For example, a method that can return a value or throw two different exceptions has three possible outcomes. The best coverage result is when all three outcomes occur during testing.

Number of assertions: This is the number of assertions created in either JUnit or Agitator. Assertions define expected behavior of the tested software and pass or fail during test execution. Assertions correspond to test points. You can analyze which of the assertions failed, in what method, and how.

Classes with test points: This number gives the percentage of the total number of classes that have assertions associated with them. The full dashboard report also lists the more granular metrics of percentage of methods with test points and outcomes with test points.

What Other Details Are Available?

In the supporting pages for each project (get there by clicking on the project’s name in the left-hand column of the main table), we present detailed data for each of the items above, plus extra information about the tests and results.

Untested code: The summary page of the dashboard report for each project also lists a set of key indicators about the code that has not been tested.

Targets: For each software project you can specify the minimum acceptable values for certain variables. These variables will be printed on a green background if they are equal to or larger than the threshold, and they'll be on a red background if they fail to meet the threshold.

Overrides: Overrides are a mechanism in Agitator to give developers the ability to exempt certain test results from being measured by the dashboard. Specifically:

  • Override 1 (Bugs): If an assertion failure is the result of an issue that is known to the developer, but will not be immediately fixed, the developer can override the assertion failure and mark it as a bug. This way it does not interfere with the progress of the project.
  • Override 2 (Suppressions): If the developer wants to exclude certain classes or methods from unit testing, (s)he can suppress it, providing a note stating the reason why.
  • Override 3 (Coverage): In some cases, blanket target coverage levels prove to be unrealistic for a particular class or method. In those cases the developer can override them with better coverage targets. The dashboard makes it possible to easily inspect the coverage overrides.
  • Override 4 (Exclusions): Some classes and/or methods may not be easily unit tested. For example, GUI code does not lend itself to unit testing. By marking them as exclusions, the developer avoids having these classes and methods negatively impact the project-level dashboard.
  • Testing trends: Charts on the project summary page show trends in four key metrics (Test Failures, Coverage Percentage, Percentage of Classes with Test Points, and Total Test Points) between consecutive updates to the dashboard. Early in the open quality initiative, these charts may not yet show many data points.
  • Zooming in: The dashboard reports have tabs that let you review the data per package, per class (with details per method), per test, and per developer. In this Open Quality page, the detailed information is only provided for the open source projects. For the other projects, developer names and specific class and method names are not provided (they are of course available to the development teams on these projects).
  • Analysis: The analysis tab lists the highest risk classes (based on complexity and usage) with assertion failures and/or no coverage. It also shows the distribution of complexity and coverage across classes and methods.

Disclaimer

This data is provided by Agitar Software and other contributors on an AS IS basis. The data is believed to be correct at the time of publication, but no warranties or other representations are made regarding the fitness of this data for a particular purpose, merchantability, or non-infringement.

Projects Analyzed
Projects Number of Methods Executable Lines Number of Assertions Coverage Classes with Test Points Test Failures Date Updated Links
*AgitarOne (latest) 14092 71445 61089 82.2 92% 7 Mar 13, 2007 Project Page
*AgitarOne 4.0.1 14097 70780 45835 81.7 90.9% 8 Apr 18, 2007 Project Page
*AgitarOne 4.1 14050 71282 56746 65.4 91% 1 Apr 26, 2007 Project Page
*AgitarOne 4.2 14241 72967 61935 80.8 91.6% 3 Aug 16, 2007 Project Page
*AgitarOne 5.0 14239 72973 61820 82 91.5% 19 Nov 01, 2007 Project Page
*Agitator 2.5 13264 63635 31494 75.6 89% 3 Jul 07, 2005 Project Page
*Agitator 2.6 13155 67523 29883 78.9 85.9% 4 Aug 17, 2005 Project Page
*Agitator 3.0 13423 68347 30699 79.4 87.3% 0 Sep 28, 2005 Project Page
*Agitator 3.0.5 13553 68990 30998 80.2 87.2% 1 May 11, 2006 Project Page
*Agitator 3.0.6 13548 69111 31011 79.7 87.2% 3 Sep 27, 2006 Project Page
*Agitator 3.0.7 13547 69111 30983 80 87.2% 0 Apr 26, 2007 Project Page
*Management Dashboard (latest) 1466 5360 5383 93.9 98.5% 0 Mar 13, 2007 Project Page
*Management Dashboard 2.5 1309 4934 4863 86.7 99.2% 0 Jul 07, 2005 Project Page
*Management Dashboard 2.6 1364 5370 5475 90.1 100% 0 Aug 17, 2005 Project Page
*Management Dashboard 3.0 1279 5055 5298 90.2 100% 0 Sep 28, 2005 Project Page
*Management Dashboard 3.0.5 1276 5066 5304 90.4 100% 0 May 11, 2006 Project Page
*Management Dashboard 3.0.6 1276 5066 5315 89.7 100% 2 Sep 27, 2006 Project Page
*Management Dashboard 3.0.7 1276 5066 5315 90.1 100% 2 Dec 28, 2006 Project Page
*Management Dashboard 4.0.1 1447 5265 5297 93.8 99.2% 0 Apr 26, 2007 Project Page
*Management Dashboard 4.1 1469 5380 5504 84.3 98.5% 0 Apr 26, 2007 Project Page
*Management Dashboard 4.2 1523 5987 5414 93.8 97.9% 4 Aug 16, 2007 Project Page
*Management Dashboard 5.0 1647 6607 6864 90.9 94.6% 8 Nov 07, 2007 Project Page
Berkeley DB Java Edition 3.0.12 *(preliminary result) 5995 28381 7414 64.4 25.9% 14 Jun 02, 2006 Project Page
Cruise Control 2.2.1 1212 6135 988 51 47% 0 Aug 25, 2005 Project Page
Cruise Control 2.4.1 2015 9894 2126 54.9 54.5% 0 Apr 04, 2006 Project Page
dom4j (latest) 2510 6416 1480 52 27.8% 0 Sep 06, 2006 Project Page
dom4j 1.5.2 2479 7444 1355 36.4 47.1% 96 May 02, 2005 Project Page
dom4j 1.6.1 2475 7700 1480 44.1 48.5% 0 Aug 18, 2005 Project Page
Fitnesse (latest) 2173 0 3265 0 46% 5 Jul 12, 2006 Project Page
Fitnesse 11-05-04 1886 7178 2577 77 44.4% 3 Apr 27, 2006 Project Page
Hibernate 2 (latest) 5047 15673 1116 62.2 4.6% 1 Jul 08, 2005 Project Page
Hibernate 2.1.8 4820 14883 1116 64.1 4.7% 1 May 03, 2005 Project Page
Jakarta-Commons Collections (latest) 3539 10429 5288 77.8 36.8% 0 Apr 03, 2006 Project Page
Jakarta-Commons Collections 3.1 3520 10378 5047 77.7 36.6% 0 Jul 08, 2005 Project Page
Jasper Reports 1476 5556 403 0 7.1% 0 Jun 01, 2006 Project Page
jdom (latest) 839 3426 1014 38.2 21.1% 0 Jun 13, 2006 Project Page
jdom 1.0 beta10 811 3191 1014 39.5 20.3% 0 May 03, 2005 Project Page
Lucene (latest) 1583 7339 1574 67.4 33.2% 0 Nov 16, 2005 Project Page
Lucene 1.4.3 1396 6415 1201 64.1 34.6% 0 May 03, 2005 Project Page
Spring (latest) 9880 32125 11056 23 35.8% 1 Apr 03, 2006 Project Page
Time and Money Code Library (latest) 475 881 719 83.1 83.3% 0 Jul 10, 2006 Project Page
TimeAndMoney 410 1258 743 81.7 68.3% 0 Nov 09, 2006 Project Page