JSR 235 TCK Coverage
The technology compliance kit (TCK) for JSR 235, Service Data Objects (SDO), tests 100% of the SDO 2.1.1 interface.
The TCK has been designed and developed alongside the development of the specification and considerable thought has been given to ensuring that all the specified behaviours,
including those raised as issues by the expert group during the course of spec discussions, have been incorporated into the TCK.
Code coverage figures for a TCK exercising an implementation are by their nature somewhat like proof by induction,
in that the TCK has been designed to test the compliance of the implementation, yet the code coverage figures are trying
to indicate the quality of the TCK's completeness of the specification using an implementation.
The potential effects of this inductiveness are reduced when the implementation and TCK are developed independently against the spec by two separate organisations, as has been the case here.
In fact the TCK benefits from the input of the open source community by building on the community test suite developed under Apache Tuscany which was developed to test the SDO 2.1 specification.
The TCK has been tested for coverage against the Codehaus Davos Project SDO (Davos)implementation at http://svn.codehaus.org/davos using the ECL Emma code coverage tool.
A broad measure of the coverage of the Davos SDO implementation by the TCK is misleadingly low because
-
Davos SDO implements extended interfaces
-
a significant proportion of the code in any SDO implementation is devoted to code generation function, the invocation of which is not covered by the specification
-
the Davos implementation contains code associated with deprecated interfaces
One measure that can be extracted from the code coverage figures which, whilst still affected by the above factors, does give an indication of the measure to which the TCK exercises the full range of SDO behaviour is the method coverage (private and public) of the Davos' implementation classes of the API.
These are as follows.
ChangeSummaryImpl method coverage = 73%
DataObjectImpl method coverage 93.8%
DataGraphImpl 0% (deprecated)
PropertyImpl 93.6%
SequenceImpl 91.3%
TypeImpl 95.2%
CopyHelperImpl 68.4%
DataFactory 78.9%
DataHelperImpl 67.3%
EqualityHelperImpl 83.3%
TypeHelperImpl 89.5%
XMLDocumentImpl 100%
XMLHelperImpl 72.7%
XSDHelperImpl 72.7