← Prev in month ← Prev in thread
Next in thread → Next in month →

Section 7.1 of Test Framework revision

From
Michael Kass <>
Date
2004-09-08T16:00:14+00:00
ID
002101c495bc$d6cb8970$
Thread
Section 7.1 of Test Framework revision
Title: call tomorrow Wed 8th, 3pm PT

Jacques,

 

  I sent this yesterday under a different 
"subject" heading (IIC Conf Call Tomorrow)..so some may have missed it.  
The bottom line with this modified section 7.1(see attached)  is that 
the

default behavior of <TestAssertion> has a 
dramatic effect upon how we must implement our test execution model.  If 
the default behavior of

the Test Driver (when it encounters a 
<TestAssertion>="false") result is to "exit/fail" the Test Case, this 
makes it very suitable for simple 

types of testing (ebMS, ebRegistry) where 
<Thread>s are not used and are not necessary.

 

I call this OPTION A:   

 

It may not be as suitable for BPSS 
testing.

 

OPTION B: (which you are suggesting)

 

 Changing the default behavior of the Test 
Driver to "abort" the current Thread when one of its <TestAssertion>s 
fails means that the subsequent <Join> operation reference that 
<Thread> 

 MUST also "abort" ITS parent 
<Thread> if it is not satisfied ( since we are in essence saying that a failed 
<TestAssertion> "failed/aborted" its container <Thread>.. and that 
the subsequent <Join> may not be possible

..depending upon whether it is an <AndJoin> 
or <OrJoin>). "Aborting" based upon the <Join> result makes 
sense, and would allow for the logic of OPTION A to "bubble up" through 
the

<Thread> hierarchy, ultimately achieving the 
same result.

  

For example, a <Thread> that listens for any 
received Error messages and finds one "aborts" if 
its <TestAssertion> (which verifies any received Error messages) 
fails. 

Therefore the subsequent <AndJoin> 
fails. Expanding upon that, the <AndJoin> could "abort" its container 
<Thread> .. and continue (aborting) up the execution tree until either 
no

<Join> is possible (exit/fail) or 
some possible continuation of execution flow is possible (based upon a 
satisfied  <OrJoin>).  

 

This is very similar to my initial proposal for a 
"cascading boolean chain" of  <Thread> 
results, where the boolean result of a lower <Thread> would 
"bubble" up the <Thread> hierarchy 

and execution would either continue or fail based 
upon logic flow. Here we are using <Join> 
as the determining operation for continued execution.

If we choose this approach, then section 7.1 MUST 
be re-written to show this change in logic.  My latest revision does not 
reflect this approach.

 

Additional rules would be:

 

If a <TestAssertion> fails in the "main" 
<Thread> ( which is <TestCase> ), then final <TestCase> result 
is "fail".. because the implicit <Join> of the main <Thread> is not 
possible.. since

that <Thread> is "aborted".

 

Failure of a <TestAssertion> in a serial 
<Thread> (i.e. a <Thread> declaration with an implied 
<Split><Join>) follows the same logic.  The "serial" 
<Thread> is aborted, and therefore its parent

<Thread> is also aborted ( since the implicit 
<Join> will fail).

 

This means that <Abort> MUST exist as an 
implicit (and therefore, I would guess "explicit" as well) operation for the 
Test Framework.  You had suggested removing it and only keeping 
<Return>.. which is the

symmetric opposite of <Abort>.  We can't 
do any of this without <Abort>.

 

My only concern with option B is based upon 
traceability of conformance/interoperability failure. We MUST be able to 
trace exactly

where the testing failure occured.  By 
eliminating "exit/fail" as the default behavior for a failed 
<TestAssertion> , we MUST be able to trace back to that failed 
<TestAssertion> which triggered the <Abort>.

  In the case of an <OrJoin>.. an 
<Abort> can actually happen in multiple <Thread>s. So there are 
multiple points of test failure.

 

Comments?

Mike

 

 

section7.1-JD1_MK_JD2_MK2.doc
← Prev in month ← Prev in thread
Next in thread → Next in month →