The definition and provision of metadata has proved helpful in a variety of ways during the test development and test execution processes. This document defines a minimal set of metadata elements that can usefully be applied to tests that are intended for publication within a test suite.
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.
This document is a W3C Working Group Note. It has been produced by the Quality Assurance Working Group, which is part of the Quality Assurance Activity. It has been made available for discussion by W3C members and other interested parties. For more information about the QA Activity, please see the QA Activity statement. Translations of this document may be available.
This is the first published version of this document. It has been written along with the QA Framework by collecting the test development experience of W3C Working Groups and summarizing the work done on the Wiki about tests and metadata.
Publication as a Working Group Note does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
The QA Working Group does not expect this document to become a Recommendation. Rather, after further development, review and refinement, it may be updated and maintained as an Interest Group Note.
You may email comments on this document to firstname.lastname@example.org, the publicly archived list of the QA Interest Group.
To be truly useful, a test suite should consist of more than a simple collection of tests. Additional information is typically required to help users understand how to execute the tests and how to interpret the results. Much of this information should be provided in the test suite documentation but some is more appropriately provided in the form of metadata about the tests themselves. Well-defined metadata can help in:
Most test suites provided by W3C Working Groups make use of some form of metadata. However, the extent of metadata usage and the forms and syntax in which metadata elements are defined varies widely from Group to Group. This document defines a minimal set of metadata elements that have proved useful in practice and attempts to standardize their names, syntax, and usage. If the use of standard metadata elements is adopted within the W3C it is likely that standardized tools will be developed to facilitate the tasks listed above.
Please note that these metadata elements are simply suggestions. Additional elements may be appropriate for your implementation. It is also likely that you will also want to define metadata elements that are associated with the entire test suite rather than with individual tests, and it may even make sense to define metadata about metadata (for example, the Dublin Core elements
Date [DCES] and
Language [DCES] may usefully be applied to several of the elements defined below.)
This document re-uses the Dublin Core elements where it seems appropriate. DCMI Metadata Terms [DCMI] gives an introduction to the use of metadata. For background information on the test development process and additional rationale for the the use of metadata, the QA Working Group has created a Test FAQ [TEST-FAQ]. A practical implementation of some of these principles is available in XML Query Test Suite defined by the XML Query and XSL Working Groups. (Their Guidelines for Test Submission [XQUERY-TEST] and Guidelines for Test Execution [XQUERY-TEST] provide explanations and examples.)
|Description||An unambiguous reference to the test.|
|Rationale||Enables the test to be referenced and identified.|
|Syntax||Free-form (URI recommended).|
|Example||CSS 2.1 Test Suite: Pseudo-elements in Selectors [CSS-TEST]|
|Comments||Most W3C test suites use URIs as identifiers.|
|Description||The name by which the test is formally known.|
|Rationale||It may be advantageous to provide a more human-oriented alternative to the
|Example||The CSS Test Suite [CSS-TEST] uses the term
|Comments||This element is optional because the
|Description||A brief explanation of the reason the test was developed.|
|Rationale||Provides additional context for the test.|
|Syntax||Free-form (hypertext) or constrained plain text|
|Example||The CSS1 test suite [CSS-TEST] provides such explanations. For example: “This page tests the 'text-transform' property of CSS1”.|
|Description||A representation in words of the nature and characteristics of the test.|
|Rationale||A detailed explanation can help reviewers to understand the purpose of a test and may also provide those executing the test with information that will be helpful if the test fails.|
|Example||The WebCGM test suite [WEBCGM-TEST] incorporates detailed descriptions. For example: "Test basic CGM-to-HTML link, from a Application Structure with linkuri APS Attribute within the CGM, to a whole HTML document, with no behaviors or fragments associated with the link."|
|Comments||This element can be used to provide more detailed information than can be provided in the relatively short
|Description||One of an enumerated list of values that can be used to track the state of a test at a given time.|
|Rationale||It can be helpful to track the status of a test during the development process.|
|Syntax||Constrained choice from an enumerated list|
|Example||One of: unconfirmed, new, assigned, pending, accepted, rejected, holding (see Conformance Test Process For WCAG 2.0 [WCAG2-CONF-PROCESS] and their test Status document).|
|Comments||This metadata element may also be useful after test suite publication, when it could be used to record the state of challenges to the validity of the test.|
|Description||Identification of the portion of the specification tested by this test.|
|Rationale||Traceability back to the specification.|
|Syntax||Freeform hypertext or more usefully a link to markup or anchors in the text of the specification.|
|Example||The HTML 4.1 test suite provides a list of Testable Assertions that associates individual tests with assertions in the specification.|
|Comments||The more specific this reference is the better. (Simply pointing to the beginning of a large sub-section of the spec is not helpful. Identifying the exact string containing the requirement to be tested is ideal.)|
|Description||Conditions that must be met before this test is executed.|
|Rationale||Any such conditions must be understood and met before the test can be successfully executed.|
|Example||It might be necessary that a network connection be available or a server process be running before the test is executed.|
|See Also||Test Metadata:
|Description||Parameters or data that are needed for the test execution.|
|Rationale||Must be understood and supplied for test execution.|
|Example||The XML Query Test Suite metadata [XQUERY-TEST] defines an input_file element.|
|See Also||Test Metadata:
The results that a conformant implementation is expected to produce when this test is executed.
|Rationale||If these are not defined, it will be impossible to determine whether the test passed or failed.|
|Example||tests within the CSS Test Suite embed their expected results within the test's output. See this example [CSS-TEST]. The XML Query Test Suite metadata [XQUERY-TEST] defines an output_file element.|
|Description||An identifier that allows one to distinguish between different revisions of test.|
|Rationale||tests often evolve over time, and it is important to maintain a history and to be able to identify and distinguish between different revisions.|
|Example||This will often be generated by a source-code control system such as CVS .|
|Comments||ISSUE: It is unclear whether it is necessary to apply version numbers to individual tests. More common practice is to version the entire test suite. Ideally tests will not need to be revised as the specification evolves. However, this is sometimes necessary, and at a minimum each Working Group should define
|Description||The individual or organization that contributed this test.|
|Rationale||It may be necessary to contact the contributor to ask for information about the test or to request an update.|
|Example||The XML Conformance Test Suite [XML-TEST] encodes the contributor in the directory structure used to store the tests.|
|See Also||Dublin Core:
|Description||Information about rights held in and over the test.|
|Rationale||Publishers and users of the test need to understand the associated Intellectual Property Rights (IPR).|
|Syntax||Ask your lawyer.|
|See Also||Dublin Core:
|Comments||This will often be simply a pointer to a copyright notice contained within the source code.|
|Description||A mechanism for classifying tests into groups.|
|Rationale||To enable the selection of subsets of tests that share certain characteristics.|
|Syntax||Implementation dependent. Possibilities include naming conventions and enumerated lists.|
|Example||Tests may be classified as interactive or automated, positive or negative.|
|Comments||An important use of grouping techniques is to classify tests that belong to particular profiles, modules, or other discretionary groupings (see Variability in Specifications [SPEC-VARIABILITY] for a detailed discussion of these issues). The SVG test suite [SVG-TEST], for example, uses naming conventions to distinguish between tests targeted at different profiles (full, basic, or tiny).|
|Description||A list of references to relevant materials.|
|Rationale||Can help to clarify the intent or usefulness of the test.|
|Example||A pointer to an item in an issue-tracking system such as Bugzilla [BUGZILLA] or to a mailing list thread in which the justification for this test is discussed.|
|See Also||Dublin Core:
The following QA Working Group and Interest Group participants have contributed significantly to this document: