[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: RE: [tag] Notes from 11/7 meeting - Anatomy Version 06
Adding some inline <JD> comments addressing some of
the notes from Paul - last meeting schedule A .
(this NOT a correction of Paul's note ! but
further discussion on these)
Jacques From: Paul.Rank@Sun.COM [mailto:Paul.Rank@Sun.COM] Sent: Friday, November 09, 2007 2:11 PM To: tag@lists.oasis-open.org Subject: [tag] Notes from 11/7 meeting - Anatomy Version 06 Paul
Anatomy of a Test Assertion: What is in a Test Assertion: A test assertion (or TA) must always:
Why is this (IUT)
singled out and level/profile/module are not singled out? Should IUT be in the
conformance clause? < JD> I think there are good reasons to keep the IUT in TA, as mentioned in the meeting: as a "fine-grained" conformance target, it often does not match the target of a conformance clause which usually is a "product" , or a process, or a service (W3C QA framework). For example, a TA may target a "message", or a "signature", or a UDD entry, like in WS-I profiles. But the conformance clause will target the Web service instance that generates this message, or the SOAP stack, or the entire UDDI instance. As for levels of conformance, etc: I believe these have nothing to do with the basic model of a TA. They can always be added in the context of "how this TA must be used". E.g. a conformance clause will define conformance levels, and may always say: "TA 123 applies level 3 and above". This does not affect the definition of the TA itself, w/r to the addressed spec requirement. </JD>
The test outcome is defined by stating some condition(s) under which an IUT can be declared as adhering to (or fulfilling, or consistent with) the addressed specification requirement, or as incompatible (inconsistent) with it. There are two types of test assertion outcomes (or test outcomes):
Do we need to include the case where a test assertion does not apply? Should we say “where” it applies? – Jacques is fine with the change. <JD> "Pass: the condition for adherence is satisfied (or is “true”), assuming this test assertion applies. "Fail: either....or a condition for incompatibility is satisfied (or is “true”), assuming this test assertion applies. ("Applying" having to be defined earlier as the pre-condition being satisfied (if any) as well as pre-requisites.) </JD> Notes:
Negative testing needs more clarification.
Change "inconclusive" to "inconclusive output" In addition, a TA may also:
Everything needed to evaluate test outcome This seems more applicable to a test not a test assertion. Jacques agrees that test flow can be removed. What about test outcome? Lynn/Paul/Patrick/others think this is too close to the test itself. <JD> In all the TAs I have seen used for OASIS specs, WS-I specs and others, there are always clear indications in the TA on what condition (from a testing perspective) must be met by the IUT to be considered as fulfilling the spec requirement, i.e. what "pass" means (and more rarely, what specific conditions must be met for the IUT to be considered as failing to comply). It seems to me that people expect this, and especially the folks who write the test cases. If there is something that could be confused with the test itself, this is rather the "test flow" which describes the test process even if abstractly. The "test outcome" does not have to be expressed using detailed test metadata. Now, if we find it difficult to express a test outcome at a level more abstract than test case, this could be an indication that in fact, there is no need to write a TA for this spec requirement ! (TAs may not be useful in all cases) </JD> In some cases, the conditional expressions associated with the Test Outcome would only make sense within a particular context of actions or events involving the IUT, that need to occur as part of the “testing”. This sequence of actions or events only needs to be described in an abstract way, with only the level of detail necessary to express the Test Outcome conditions. Example: A messaging specification requires that: “…an Error message caused by the reception of a message that is not well-formed always refers to the faulty message using its MessageID.” A test assertion addressing this requirement may be defined as:
Notes:
The above TA does not distinguish very well what actions or events need to occur prior to evaluating the Test Outcome. Some parts of the Test Outcome expression are about the test logistics (ensuring the proper message flow occurs), and some parts are about verifying the specification requirement. It would be better to separate both. This would give to the test expert in charge of deriving a test case from this TA a clearer indication of what actions need be initiated by the test environment in order to obtain a meaningful outcome. In our example, it is clear that if nothing is done to get an “ill-formed message M” to be received by the MSH, the Test Outcome will be meaningless (actually neither Pass nor Fail). This sequence of actions may be specified as the Test Flow that specifies the context for the evaluation of the Test Outcome, now simplified:
What does the test flow add? Doesn't it just say how to test? Also, is the test flow “limiting” the assertion. Spec text can break out into 2 assertions - “derived” assertions. Disagreement concerning the inclusion of test flow in the assertion. <JD> Test flow is introduced as "optional" - does not need to be used. But it could be seen as the behavior / action part, in the "statement of behavior, action, or condition that can be measured or tested" as in the W3C definition of a TA. E.g., when describing an expected behavior / action / condition for an item under test, this often is conditional to some prior behavior / action of the test environment. For example in our present case, regarding the requirement for generating an Error message when receiving a faulty message, the TA will state the expected behavior of generating an Error, but must also describe under which condition (here reception of a bad message). That certainly suggests a sequence of actions, whether we call it "test flow" or not. </JD>
Test Outcome:
Notes:
The above TA (ErrorTA-123) will still have an inconclusive outcome if no Error message is generated: the requirements of the Test Flow would not be met. Patrick views this as a failure. Confusion over "inconclusiveness". <JD> Agree that this should not be seen as inconclusive outcome for ErrorTA-123. If the generation of an error message was a requirement, either it is covered by TA-123 (in which case no Error means a fail outcome) or there should be another TA (say 234) for it - in which case 234 would be a pre-requisite to 123, and if 234 fails then 123 does not even apply. </JD> In order to avoid such an outcome, we could add a pre-requisite to this TA, which would be another TA (say ErrorTA-000) addressing the requirement that an Error message must be generated when a faulty message is received by an MSH. In that case, ErrorTA-123 would only be exercised if its pre-requisite (ErrorTA-000) had a positive outcome. Concretely, this will help execute the test cases related to ErrorTA-123 and ErrorTA-000 in the right order, so that ErrorTA-123 is never exercised uselessly in case the test case for ErrorTA-000 fails on the same IUT. <snip> |
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]