[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: RE: Issues list: revised with new spec references
Thx
Mike,
Here
is a first cut at more accurate test case outcome definitions (section
7.1):
A Test Case has a final state of "fail"
if: Either: - Any TestAssertion operation in the Test Case workflow evaluates to a result of "false" (fail), and this result is not "interpreted" otherwise (need more precise explanation here.) - or an "exitCondition" attribute was set to.... (expand here)
A Test Case has a final state of "undetermined"
if: The Test case workflow has terminated all its threads, and the last test step that did a verification had a TestPreCondition result of value "false". In case the test case was running several threads concurrently,....? (we can't just say that first thread to generate "undetermined" causes the entire test case to be so: we could argue that
A Test Case has a final state of "pass"
if: The Test case workflow has terminated all its threads, and has not "failed", nor satisfied the conditions for "undetermined outcome". It still appears
to me that due to concurrent paths in the test case, and the possibility to
"interpret" TA results,
the above
definitions can be tricky, and confusing to users.
The point I was trying to make with
item #2 previous mails, is that we need provide means to decouple
the
result of a TestAssertion with the
general outcome of the test case (e.g. T.A. = "true" could
mean
failure of the Test Case, the
opposite could be true as well.) I believe we can do that today, but it
is
not explicit in the
spec.
Also, assume the following test
case:
(1) putMessage
M1
(2) getMessage
M2
(3) getMessage
M3
We may want that TA(M2)=true means
"Fail" for teh test case.
Yet we may also want that any other
result for M2 (precond = "false", TA = "false") to be
inconsequential,
and let step (3) proceed, which
will decide of the test case outcome. How can we script
this?
One
suggestion:
- we could add this
mostly editorial refinement about the outcome of a TA: there
are 3 possible TA outcomes:
"true", "false" and
"non-applicable" in case the precond is
"false".
- We could tag each TA with an
exitCondition attr of 4 possible values:
o "Fail" (on TA value = true or
false or N/A),
o "Pass" (on value = true or false
or N/A),
o "Undetermined" (on value = true
or false or N/A),
o "Continue" (on value = true or
false or N/A) (no actual exit, meaning, we proceed to next test
step). - default is "Fail" for TA=false,
"Continue" for TA=true, "Undetermined" for TA=N/A.
So, unless we use explicit exit
tags to TAs, the following default behavior will apply on a very simple
basis:
- first TA evaluating to "false" or
to "N/A" will exit the test case respectively on "Fail" and
"Undetermined".
- if the entire workflow completes
naturally according to its logic (reaches the "final" state),
it means the test case outocme is
"Pass".
So these exit tags above are not so
much "go to" than exceptions:
The overall exec model is more
like:
try {
...
- test case workflow, that can
raise exceptions "Fail" "Pass" "Undetermined"
...
- execute Pass termination logic
for the test case.
}
catch {
exit="Fail": {...execute Fail
termination logic for the test case...}
exit="Pass": {...execute Pass
termination logic for the test case...}
exit="Undetermined": {...execute
Undetermined logic
...}
}
Opinion?
Jacques
|
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]