OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

tag message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: [tag] Groups - testAssertionMarkupLanguage (testAssertionMarkupLanguageV02.odt) uploaded


One thing needs changing: When the rule regarding the
composition of TA Set shared parts down to the TAs is
such that TA Set parts are *combined* with decendant
TA parts, that rule would not work with prescription level.
So it makes sense to not have prescription level included
with the TA parts which can be shared. This requires a
change to my proposed updated schema and example.
I attach a version which includes this change (schema and
example) - which I've called version 0.3.
 
The schema uses a common schema type for both the
TA Set 'shared' element and the TA element. The TA
element adds a few further child elements and some attributes
by extension.

There is a 'header' element besides the 'shared' element at
TA Set level. The header is for metadata such as tags
applying to the TA Set as a whole and for variable definitions.

The prescription level has an attribute 'code' which contains
the enumerations ('mandatory', etc). This allows the element
content to be used for textual comment. The example shows
this textual content being used to explain the semantics of
the prescription level generally where it is used in a property
TA.

There is a general rule for the combining of 'shared' elements
at TA Set level with descendant TA elements of the same name.
It is simplified to be the same for all elements in 'shared' and
to further simplify it the rule is one of additive combination. The
is a caveat that exceptions to this rule can be introduced using
an attribute (such as Jacques' @conflict attribute but my proposal
leaves the definition of the attribute to custom implementations
so that there is no requirement to implement this kind of complexity
for conformance to this spec, in case it proves to be tricky).

Every element includes 'anyAttribute' which allows any number
of additional attributes to be included in instances besides those
defined explicitly in the schema.

The only place to include the attribute to indicate that a property
is being defined is at TA Set level, for simplicity (not at individual
TA level). Likewise the normativePropertyTag is just found in the
TA Set 'header'.

The order is child elements within a parent element is such that
multiple occurance children follow after single occurance children
in the sequence order. This required changing the order of some
elements.

---
Stephen D Green



2009/8/7 <stephen.green@documentengineeringservices.com>
This new markup specification draft illustrates some proposed updates
following on from discussions at the last TC meeting (change list to
follow). The appendix widget example and the schema have been updated to
demonstrate how such proposals might work. See also new subsection 'shared'
in section 5.2 explaining some proposed logic to cover the sharing of test
assertion parts between test assertions in a set.

 -- Stephen Green

The document revision named testAssertionMarkupLanguage
(testAssertionMarkupLanguageV02.odt) has been submitted by Stephen Green to
the OASIS Test Assertions Guidelines (TAG) TC document repository.  This
document is revision #1 of testAssertionMarkupLanguageV01.odt.

Document Description:
Specifies a Test Assertion Markup Language

View Document Details:
http://www.oasis-open.org/committees/document.php?document_id=33696

Download Document:
http://www.oasis-open.org/committees/download.php/33696/testAssertionMarkupLanguageV02.odt

Revision:
This document is revision #1 of testAssertionMarkupLanguageV01.odt.  The
document details page referenced above will show the complete revision
history.


PLEASE NOTE:  If the above links do not work for you, your email application
may be breaking the link into two pieces.  You may be able to copy and paste
the entire link address into the address field of your web browser.

-OASIS Open Administration

<?xml version="1.0" encoding="utf-8"?>
<testAssertionSet xmlns="http://docs.oasis-open.org/tag/taml/20090808";
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
 xsi:schemaLocation="http://docs.oasis-open.org/tag/taml/20090808 testAssertionMarkupLanguage-0-3.xsd"
 id="Test Assertions for Dummy Widget Specification 1.1 Sections 100 to 104"
 lg="en-us">
    <shared>
        <normativeSource>
            <refSourceItem>Dummy Widget Specification 1.1 Sections 100 to 104</refSourceItem>
        </normativeSource>
    </shared>
    <testAssertion id="widget-TA100-1">
        <normativeSource>
            <refSourceItem>specification requirement 100</refSourceItem>
        </normativeSource>
        <target>widget</target>
        <predicate>[the widget] is of rectangular shape</predicate>
        <prescriptionLevel code="mandatory"/>
    </testAssertion>
    <testAssertion id="widget-TA101-1a">
        <normativeSource>
            <refSourceItem>specification requirement 101, part 1</refSourceItem>
        </normativeSource>
        <target>medium-size widget</target>
        <predicate>[the widget] uses exactly one AA battery.</predicate>
        <prescriptionLevel code="mandatory"/>
    </testAssertion>
    <testAssertion id="widget-TA101-1b">
        <normativeSource>
            <refSourceItem>specification requirement 101, part 2</refSourceItem>
        </normativeSource>
        <target>medium-size widget</target>
        <predicate>[the widget] has a red button on top.</predicate>
        <prescriptionLevel code="mandatory"/>
    </testAssertion>
    <testAssertion id="widget-TA102-1">
        <normativeSource>
            <refSourceItem>specification statement 102, part 1</refSourceItem>
        </normativeSource>
        <target>widget</target>
        <predicate>[the widget] is waterproof.</predicate>
        <prescriptionLevel code="preferred"/>
    </testAssertion>
    <testAssertion id="widget-TA102-2">
        <normativeSource>
            <refSourceItem>specification statement 102, part 2</refSourceItem>
        </normativeSource>
        <target>widget</target>
        <prerequisite>(widget-TA102-1 = false)</prerequisite>
        <predicate> [the widget] has a label warning that it is not waterproof. </predicate>
        <prescriptionLevel code="mandatory"/>
    </testAssertion>
    <testAssertion id="widget-TA103-1">
        <normativeSource>
            <refSourceItem>specification statement 103, part 1</refSourceItem>
        </normativeSource>
        <target>widget</target>
        <predicate>[the widget] has a metallic casing.</predicate>
        <prescriptionLevel code="permitted"/>
    </testAssertion>
    <testAssertion id="widget-TA103-2">
        <normativeSource>
            <refSourceItem>specification statement 103, part 2</refSourceItem>
        </normativeSource>
        <target>widget</target>
        <prerequisite>widget-TA103-1</prerequisite>
        <predicate> [the widget] has a waterproof coating over its metallic casing. </predicate>
        <prescriptionLevel code="mandatory"/>
    </testAssertion>
    <testAssertionSet definesNormativeProperty="true">
        <header>
            <normativePropertyTag>medium-sized</normativePropertyTag>
            <var name="GEOPOLITICAL-LOCATION"> the geopolitical location of use of the widget,
                allowed values being strings enumerated in country code list ...</var>
            <var name="WEIGHT-A"> a weight and its units. If GEOPOLITICAL-LOCATION is 'US' then
                WEIGHT-A is 4oz. If GEOPOLITICAL-LOCATION is 'EU' then WEIGHT-A is 100g.</var>
            <var name="WEIGHT-B">a weight and its units. If GEOPOLITICAL-LOCATION is 'US' then
                WEIGHT-B is 12oz. If GEOPOLITICAL-LOCATION is 'EU' then WEIGHT-B is 300g.</var>
            <var name="LENGTH-A">a length and its units. If GEOPOLITICAL-LOCATION is 'US' then
                LENGTH-A is 2 inches. If GEOPOLITICAL-LOCATION is 'EU' then LENGTH-B is 5cm.</var>
            <var name="LENGTH-B">a length and its units. If GEOPOLITICAL-LOCATION is 'US' then
                LENGTH-B is 6 inches. If GEOPOLITICAL-LOCATION is 'EU' then LENGTH-B is 15cm.</var>
        </header>
        <shared>
            <normativeSource>
                <refSourceItem>specification requirement 104</refSourceItem>
            </normativeSource>
            <target>widget</target>
        </shared>
        <testAssertion id="widget-TA104-1">
            <predicate> [the widget] weighs between WEIGHT-A and WEIGHT-B. </predicate>
            <prescriptionLevel code="mandatory">in order that the target be qualified as conforming to property named in the the normativePropertyTag</prescriptionLevel>
        </testAssertion>
        <testAssertion id="widget-TA104-2">
            <predicate> [the widget] is from LENGTH-A to LENGTH-B long in its longer </predicate>
            <prescriptionLevel code="mandatory">in order that the target be qualified as conforming to property named in the the normativePropertyTag</prescriptionLevel>
        </testAssertion>
    </testAssertionSet>
</testAssertionSet>

testAssertionMarkupLanguage-0-3.xsd



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]