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

 


Help: OASIS Mailing Lists Help | MarkMail Help

ebxml-iic message

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


Subject: Re: [ebxml-iic] Use cases for concurrent test cases - Schema and instance examples


Title: Use cases for concurrent test cases
Jacques and all,
 
   Here is an updated set of use case instances based upon our email discussion.  I
hope that this puts us closer to acceptance of a syntax for testing BPSS scenarios.
I still have not run this model through SPIN, but will attempt to do so.
 
   Attached is the JPG image of the schema ( large I know...but necessary to see the "big picture" )
 
Key points about the scripting schema:
 
    1)    Static <Thread>s are placed at the beginning of the <TestSuite>
    2)    <Threads> are generally referenced via their "name" attribute from <ThreadRef>s in <TestCases>
    3)    A <TestCase> and <Thread> implicitly "split" their child <TestStep>s and <Threads>
    4)    <TestStep>s and <Thread>s are executed and evaluated sequentially ( unless specified with an  "asynchronous" qualifier )
    5)    All <TestStep>s and <Thread>s in a parent <Thread> MAY be <Join>ed ( using its "andjoin" or "orjoin" qualifier attribute )
    6)    A <Join> MAY start a series of <TestStep>s and/or <Thread>s   OR may signal a <Pass><Fail><Success> or <Exception> state
    7)    An <Else> operator essentially completes the construction of an <If><Then><ElseIf><Then><Else> logic structure
    8)    An <Else> operatroa MAY start a series of <TestStep>s and/or <Thread>s   OR may signal a <Pass><Fail><Success> or <Exception> state
    9)    At any point in the branching, one can construct a new <Thread> tree.. permitting complex nested <Threads> that are analogous
           to complex processes found in BPSS message transactions.
  10)    The <SetParameter> operation is possible within any <Thread> ( and <TestStep> ) and permits "permutation" of message content and
           response message evaluation, using a static <Thread> template.  ( i.e. defining a parameter value higher in the <Thread> hierarchy,    
           to be used by <Thread>s or <TestStep>s below it.
  12)    "stepDuration" and "stepDelay" are attributes of a <TestStep> that define a <TestStep> "timeout" for the former, and a "sleep" period
           before <TestStep> execution ( for the latter ).
  13)    "matchResult" is an optional  <TestStep> attribute used to set a postive ("true") <TestAssertion> result to "false"... and vice versa
  13)    <TestPrecondition> and <TestAssertion> are "atomic" level operations in the logic tree.  Branching is not possible below this level.  All
            control flow happens at the <Thread> level.
  14)     <Pass><Fail><Success> and <Exception> are additional tags added to set <TestCase> state and act as a GOTO to terminate <TestCase> execution
            without necessarily completing logic flow.
 
I am also adding updated use cases reflecting the schema change... both in XML and HTML form, along with our running <Thread> regarding design issues.
 
Comments welcome,
 
Mike
 
ÿþ<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><head xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:ebTest="http://www.oasis-open.org/tc/ebxml-iic/tests"> <META http-equiv="Content-Type" content="text/html; charset=UTF-16"> <title>ebXML Test Suite Author: Michael Kass Organization: NIST Date: 05/15/2003 Version 1.0 </title><link rel="stylesheet" type="text/css" href="xmlverbatim.css"></head><center xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:ebTest="http://www.oasis-open.org/tc/ebxml-iic/tests"><h2>POC for BPSS testing: Case 1</h2></center><table border="2" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:ebTest="http://www.oasis-open.org/tc/ebxml-iic/tests"><tr><td width="10%" align="center"><h4>Test Object</h4></td><td width="10%" align="center"><h4>ID</h4></td><td width="10%" align="center"><h4>Description</h4></td><td width="10%" align="center"><h4>Mode</h4></td><td width="10%" align="center"><h4>Operation</h4></td><td width="10%" align="center"><h4>Configuration</h4></td><td width="40%" align="center"><h4>Message Expression</h4></td></tr><tr><td width="10%" align="left">Test Suite</td><td width="10%" align="center"></td><td width="10%" align="center"></td><td width="10%" align="center"></td><td width="10%" align="center"></td><td width="10%" align="left"></td><td width="40%" align="center"></td></tr><tr><td><b> Test Case </b></td><td><i><b>testcase_1</b></i></td><td><i><b>POC of exception handling</b></i></td><td></td><td></td><td></td><td></td></tr><tr><td>TestStep</td><td>step_01_01</td><td></td><td></td><td></td><td></td></tr><tr bgcolor="FFFFFF"><td></td><td></td><td>Send a message m1</td><td></td><td>PutMessage</td><td></td><td width="50%"></td></tr><tr bgcolor="FFAA00"><td>ThreadRef</td><td>nameRef='thread_02'</td><td>synchType='asynchronous' </td><td></td><td></td><td></td><td></td></tr><tr bgcolor="FF0000"><td>Thread</td><td>name='thread_02'</td><td>synchType='asynchronous' </td><td></td><td></td><td></td><td></td></tr><tr><td>TestStep</td><td>step_03</td><td>Test that an Error message was NOT received, any time within 300 seconds after step_01</td><td> stepDuration='300' </td><td></td><td></td></tr><tr bgcolor="FFFFFF"><td></td><td></td><td>Filter any ErrorList elements in the MessageStore</td><td></td><td>GetMessage</td><td></td><td width="50%">/MessageStore//Message//[eb:ErrorList]</td></tr><tr bgcolor="FFFFFF"><td>Assertion matchResult='fail' </td><td></td><td>Verify Error is present</td><td></td><td>VerifyContent</td><td></td><td width="50%">//Message[count()&gt;0]</td></tr><tr bgcolor="00FFFF"><td>Join</td><td></td><td>joinType='andjoin'</td><td></td><td></td><td></td><td></td></tr><tr><td><b><font>exception</font></b></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr bgcolor="00FFFF"><td>End Join</td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr bgcolor="FF0000"><td>End Thread</td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr bgcolor="FFAA00"><td>End ThreadRef</td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>TestStep</td><td>step_01_03</td><td></td><td></td><td></td><td></td></tr><tr bgcolor="FFFFFF"><td></td><td></td><td>Retrieve Response message M2</td><td></td><td>GetMessage</td><td></td><td width="50%">/MessageStore/Message//[eb:MessageHeader[eb:ConversationId=$ConversationId and eb:Action="Mute" and eb:MessageData/eb:MessageId='m2']</td></tr><tr bgcolor="FFFFFF"><td>Assertion </td><td></td><td>Verify Response is present</td><td></td><td>VerifyContent</td><td></td><td width="50%">//Message(count()=1)&gt;</td></tr></table>ÿþ<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><head xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:ebTest="http://www.oasis-open.org/tc/ebxml-iic/tests"> <META http-equiv="Content-Type" content="text/html; charset=UTF-16"> <title>ebXML Test Suite Author: Michael Kass Organization: NIST Date: 05/15/2003 Version 1.0 </title><link rel="stylesheet" type="text/css" href="xmlverbatim.css"></head><center xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:ebTest="http://www.oasis-open.org/tc/ebxml-iic/tests"><h2>POC for BPSS testing: Case 2</h2></center><table border="2" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:ebTest="http://www.oasis-open.org/tc/ebxml-iic/tests"><tr><td width="10%" align="center"><h4>Test Object</h4></td><td width="10%" align="center"><h4>ID</h4></td><td width="10%" align="center"><h4>Description</h4></td><td width="10%" align="center"><h4>Mode</h4></td><td width="10%" align="center"><h4>Operation</h4></td><td width="10%" align="center"><h4>Configuration</h4></td><td width="40%" align="center"><h4>Message Expression</h4></td></tr><tr><td width="10%" align="left">Test Suite</td><td width="10%" align="center"></td><td width="10%" align="center"></td><td width="10%" align="center"></td><td width="10%" align="center"></td><td width="10%" align="left"></td><td width="40%" align="center"></td></tr><tr><td><b> Test Case </b></td><td><i><b>testcase_2</b></i></td><td><i><b>Workflow Split</b></i></td><td></td><td></td><td></td><td></td></tr><tr><td>TestStep</td><td>step_01</td><td></td><td></td><td></td><td></td></tr><tr bgcolor="FFFFFF"><td></td><td></td><td>Send a message m1</td><td></td><td>PutMessage</td><td></td><td width="50%"></td></tr><tr bgcolor="FF0000"><td>Thread</td><td>name='split'</td><td>synchType='synchronous' </td><td></td><td></td><td></td><td></td></tr><tr bgcolor="FFAA00"><td>ThreadRef</td><td>nameRef='thread_01'</td><td>synchType='asynchronous' </td><td></td><td></td><td></td><td></td></tr><tr bgcolor="FF0000"><td>Thread</td><td>name='thread_01'</td><td>synchType='asynchronous' </td><td></td><td></td><td></td><td></td></tr><tr><td>TestStep</td><td>step_02_01</td><td></td><td></td><td></td><td></td></tr><tr bgcolor="FFFFFF"><td></td><td></td><td>Retrieve Response message m2a</td><td></td><td>GetMessage</td><td></td><td width="50%">/MessageStore/Message//(eb:MessageHeader(eb:ConversationId=$ConversationId and eb:Action="Mute" and eb:MessageData/eb:MessageId="m2a"))</td></tr><tr bgcolor="FFFFFF"><td>Assertion </td><td></td><td>Verify Response is present</td><td></td><td>VerifyContent</td><td></td><td width="50%">//Message(count()=1)&gt;</td></tr><tr><td>TestStep</td><td>step_02_02</td><td>Verify Response Message m2b</td><td></td><td></td><td></td></tr><tr bgcolor="FFFFFF"><td></td><td></td><td>Retrieve Response message</td><td></td><td>GetMessage</td><td></td><td width="50%">/MessageStore/Message//(eb:MessageHeader(eb:ConversationId=$ConversationId and eb:Action="Mute" and eb:MessageData/eb:MessageId="m2b"))</td></tr><tr bgcolor="FFFFFF"><td>Assertion </td><td></td><td>Verify Response is present</td><td></td><td>VerifyContent</td><td></td><td width="50%">//Message(count()=1)&gt;</td></tr><tr bgcolor="FF0000"><td>End Thread</td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr bgcolor="FFAA00"><td>End ThreadRef</td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr bgcolor="FFAA00"><td>ThreadRef</td><td>nameRef='thread_02'</td><td>synchType='asynchronous' </td><td></td><td></td><td></td><td></td></tr><tr bgcolor="FF0000"><td>Thread</td><td>name='thread_02'</td><td>synchType='asynchronous' </td><td></td><td></td><td></td><td></td></tr><tr><td>TestStep</td><td>step_02_03</td><td></td><td></td><td></td><td></td></tr><tr bgcolor="FFFFFF"><td></td><td></td><td>Retrieve Response message m3</td><td></td><td>GetMessage</td><td></td><td width="50%">/MessageStore/Message//(eb:MessageHeader(eb:ConversationId=$ConversationId and eb:Action="Mute" and eb:MessageData/eb:MessageId="m3"))</td></tr><tr bgcolor="FFFFFF"><td>Assertion </td><td></td><td>Verify Response is present</td><td></td><td>VerifyContent</td><td></td><td width="50%">//Message(count()=1)&gt;</td></tr><tr bgcolor="FF0000"><td>End Thread</td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr bgcolor="FFAA00"><td>End ThreadRef</td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr bgcolor="FF0000"><td>End Thread</td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>TestStep</td><td>step_04</td><td></td><td></td><td></td><td></td></tr><tr bgcolor="FFFFFF"><td></td><td></td><td>Retrieve Response message m4</td><td></td><td>GetMessage</td><td></td><td width="50%">/MessageStore/Message//(eb:MessageHeader(eb:ConversationId=$ConversationId and eb:Action="Mute" and eb:MessageData/eb:MessageId="m4"))</td></tr><tr bgcolor="FFFFFF"><td>Assertion </td><td></td><td>Verify Response is present</td><td></td><td>VerifyContent</td><td></td><td width="50%">//Message(count()=1)&gt;</td></tr></table>ÿþ<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><head xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:ebTest="http://www.oasis-open.org/tc/ebxml-iic/tests"> <META http-equiv="Content-Type" content="text/html; charset=UTF-16"> <title>ebXML Test Suite Author: Michael Kass Organization: NIST Date: 05/15/2003 Version 1.0 </title><link rel="stylesheet" type="text/css" href="xmlverbatim.css"></head><center xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:ebTest="http://www.oasis-open.org/tc/ebxml-iic/tests"><h2>POC for BPSS testing: Case 3</h2></center><table border="2" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:ebTest="http://www.oasis-open.org/tc/ebxml-iic/tests"><tr><td width="10%" align="center"><h4>Test Object</h4></td><td width="10%" align="center"><h4>ID</h4></td><td width="10%" align="center"><h4>Description</h4></td><td width="10%" align="center"><h4>Mode</h4></td><td width="10%" align="center"><h4>Operation</h4></td><td width="10%" align="center"><h4>Configuration</h4></td><td width="40%" align="center"><h4>Message Expression</h4></td></tr><tr><td width="10%" align="left">Test Suite</td><td width="10%" align="center"></td><td width="10%" align="center"></td><td width="10%" align="center"></td><td width="10%" align="center"></td><td width="10%" align="left"></td><td width="40%" align="center"></td></tr><tr><td><b> Test Case </b></td><td><i><b>testcase_3</b></i></td><td><i><b>Conditional Branching</b></i></td><td></td><td></td><td></td><td></td></tr><tr><td>TestStep</td><td>step_01</td><td>Send a message M1</td><td></td><td></td><td></td></tr><tr bgcolor="FFFFFF"><td></td><td></td><td>Send a message</td><td></td><td>PutMessage</td><td></td><td width="50%"></td></tr><tr bgcolor="FF0000"><td>Thread</td><td>name='split'</td><td>synchType='synchronous' </td><td></td><td></td><td></td><td></td></tr><tr bgcolor="FFAA00"><td>ThreadRef</td><td>nameRef='thread_01'</td><td>synchType='synchronous' </td><td></td><td></td><td></td><td></td></tr><tr bgcolor="FF0000"><td>Thread</td><td>name='thread_01'</td><td>synchType='synchronous' </td><td></td><td></td><td></td><td></td></tr><tr><td>TestStep</td><td>step_01_01</td><td></td><td></td><td></td><td></td></tr><tr bgcolor="FFFFFF"><td></td><td></td><td>Retrieve Response message m3 and test if message is an 'Approval' </td><td></td><td>GetMessage</td><td></td><td width="50%">/MessageStore/Message//(eb:MessageHeader(eb:ConversationId=$ConversationId and eb:Action="Mute" and eb:MessageData/eb:MessageId="m3"))</td></tr><tr bgcolor="FFFFFF"><td>Assertion </td><td></td><td>Verify Response is present</td><td></td><td>VerifyContent</td><td></td><td width="50%">//Message(count()=1)&gt;</td></tr><tr><td>TestStep</td><td>step_01_02</td><td></td><td></td><td></td><td></td></tr><tr bgcolor="FFFFFF"><td></td><td></td><td>Send a message m4</td><td></td><td>PutMessage</td><td></td><td width="50%"></td></tr><tr><td>TestStep</td><td>step_01_03</td><td></td><td></td><td></td><td></td></tr><tr bgcolor="FFFFFF"><td></td><td></td><td>Retrieve message m5</td><td></td><td>GetMessage</td><td></td><td width="50%">/MessageStore/Message//(eb:MessageHeader(eb:ConversationId=$ConversationId and eb:Action="Mute" and eb:MessageData/eb:MessageId="m5"))</td></tr><tr bgcolor="FFFFFF"><td>Assertion </td><td></td><td>Verify Response is present</td><td></td><td>VerifyContent</td><td></td><td width="50%">//Message(count()=1)&gt;</td></tr><tr bgcolor="FF0000"><td>End Thread</td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr bgcolor="FFAA00"><td>End ThreadRef</td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr bgcolor="FFAA00"><td>ThreadRef</td><td>nameRef='thread_02'</td><td>synchType='synchronous' </td><td></td><td></td><td></td><td></td></tr><tr bgcolor="FF0000"><td>Thread</td><td>name='thread_02'</td><td>synchType='synchronous' </td><td></td><td></td><td></td><td></td></tr><tr><td>TestStep</td><td>step_02_01</td><td></td><td></td><td></td><td></td></tr><tr bgcolor="FFFFFF"><td></td><td></td><td>Retrieve Response message m2 and test if message is an 'Rejection' </td><td></td><td>GetMessage</td><td></td><td width="50%">/MessageStore/Message//(eb:MessageHeader(eb:ConversationId=$ConversationId and eb:Action="Mute" and eb:MessageData/eb:MessageId="m2"))</td></tr><tr bgcolor="FFFFFF"><td>Precondition </td><td></td><td>Verify Response is present</td><td></td><td>VerifyContent</td><td></td><td width="50%">//Message(count()=1)&gt;</td></tr><tr bgcolor="FFFFFF"><td></td><td></td><td>Get message payload</td><td></td><td>GetPayload Content-Id = 'cid:response'<br></td><td></td><td width="50%"></td></tr><tr bgcolor="FFFFFF"><td>Precondition </td><td></td><td>Verify that message is an 'approval' </td><td></td><td>VerifyContent</td><td></td><td width="50%">//Rejection</td></tr><tr><td>TestStep</td><td>step_02_02</td><td></td><td></td><td></td><td></td></tr><tr bgcolor="FFFFFF"><td></td><td></td><td>Retrieve message m6</td><td></td><td>GetMessage</td><td></td><td width="50%">/MessageStore/Message//(eb:MessageHeader(eb:ConversationId=$ConversationId and eb:Action="Mute" and eb:MessageData/eb:MessageId="m6"))</td></tr><tr bgcolor="FFFFFF"><td>Assertion </td><td></td><td>Verify Response is present</td><td></td><td>VerifyContent</td><td></td><td width="50%">//Message(count()=1)&gt;</td></tr><tr bgcolor="FF0000"><td>End Thread</td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr bgcolor="FFAA00"><td>End ThreadRef</td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr bgcolor="FF0000"><td>End Thread</td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr bgcolor="00FFFF"><td>Join</td><td></td><td>joinType='orjoin'</td><td></td><td></td><td></td><td></td></tr><tr><td><b></b><font color="00FF00">pass</font></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr bgcolor="00FFFF"><td>End Join</td><td></td><td></td><td></td><td></td><td></td><td></td></tr></table>

scripting_issues_jd_mk_mk_mk.doc

scripting_schema.jpg

scripting_poc_01_29_04.ZIP



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