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

 


Help: OASIS Mailing Lists Help | MarkMail Help

sca-j-comment message

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


Subject: TAB COmments on Test Assertions for SCA_J Common Annotations andAPIs v1.1


comments from Jacques Durand (as a review assignment from the OASIS TAB) on:

Test Assertions for  SCA_J Common Annotations and APIs v1.1

 

 

-------------------------------------------------------------------------------------------

[Comment 1] : weak design: Target is often not well identified, in several TAs.

 

In some TAs, the Target is not exactly what the Predicate is talking about.

For example: in several TAs about runtime behavior it is not clear that

the target (what is being tested and expected to either pass or fail) should be an actual SCA runtime.

 

Example: JCA-TA-2005

Target = a Java class ("Java implementation class marked with "composite scope" and with "eager

initialization")

Predicate = a statement on a runtime behavior ("The Java implementation class instance is created and initialized")

 

The real test Target here is the SCA runtime and its expected behavior, not the Java class.

A rule of thumb is: the target is what should fail or pass a test based on this test assertion.

Also the Predicate should refer to this Target as its main subject:

 

Target = SCA runtime with a Java implementation class marked with "composite scope" and with "eager

initialization".

Predicate = the SCA runtime (Target) creates and initialize the Java implementation class instance.

 

Or it is also OK to use a prerequisite and say:

 

Target = SCA runtime.

Prerequisite = the Java implementation class of the runtime is marked with "composite scope" and with "eager

initialization".

Predicate = the SCA runtime (Target) creates and initialize the Java implementation class instance.

 

(The difference is that when using a Prerequisite, allows a test tool to tell you about those targets that do not

meet the Prerequisite condition , in the test report).

 

Same remark for JCA-TA-2006, JCA-TA-2007 and some others.

 

A TA that is accurately stated is JCA-TA-2003 (target: Stateless scoped Java implementation instance" is clearly

refering to an instance as opposed to a Class, so does the Predicate)

 

-------------------------------------------------------------------------------------------

[Comment 2] : (minor) Target is often too fine-grain, leading to convoluted references.

 

Example: JCA-TA-3005

Target = @remotable attribute on <interface.java/> element

Prerequisite = Java interface class referenced by @interface attribute of interface.java

element contains a @Remotable annotation

Predicate = @remotable attribute has the value "true"

 

Here, it is preferable to target the <interface.java/> element rather than its attribute,

because then the Prerequisite can clearly refer to this target:

 

Target = <interface.java/> element with a @remotable attribute.

Prerequisite = Java interface class referenced by @interface attribute of interface.java element (the Target)

contains a @Remotable annotation

Predicate = @remotable attribute (of Target) has the value "true"

 

-------------------------------------------------------------------------------------------

[Comment 3] : some spec requirements may need more than one TA.

 

For some requiremetns such as JCA30005, two TAs could be written instead of one (say JCA-TA-3005a and JCA-TA-3005b) ,

as this spec requirement is also about class consistency as well as about SCA runtime behavior:

 

JCA-TA-3005a: renaming of current JCA-TA-3005.

 

JCA-TA-3005b:

Target = SCA runtime using a component with <interface.java/> element with a @remotable attribute of value "false".

Prerequisite = Java interface class referenced by @interface attribute of interface.java element

used by the Target contains a @Remotable annotation

Predicate = The SCA runtime (target) raises an error

 

 

[Comment 4] : Target should not be an "event", but an identifiable entity.

 

Maybe that is just a typo, but the Target in some TAs reads like an "event":

For example in JCA-TA-2009:

 

Target = "Client invocation of a method of a service implementation"

 

But what the specification is talking about in 2.3.4, is really an SCA runtime and its behavior:

(Target should always be an entity that is subject to conformance to the specification,

something that pass or fail a test - and not just an "event".)

 

Target = SCA runtime that is invoking a method with input parameters of the remotable service

Prerequisite =

(a) Service method implementation marked "allows pass by reference"

(b) Client reference proxy marked "allows pass by reference"

(c) the client SCA runtime (Target) and remotable service implementation run in the same JVM

Predicate = the client SCA runtime is using pass-by-reference call semantics for the inputs.

 

Note above the narrowing on the *client* SCA runtime (not the invoked component),

so the Predicate only talks about what depends on client behavior: input parameters.

 

The statement in 2.3.4 apparently also applies to the remote component behavior,

so another TA could be written here (JCA-TA-2009b)

because thats not quite the same behavior that is tested

(you could pass JCA-TA-2009a and fail JCA-TA-2009b):

 

Target = SCA runtime that is being invoked by a client on a method with return value.

Prerequisite =

(a) Service method in the service implementation (or Target) marked "allows pass by reference"

(b) Client reference proxy marked "allows pass by reference"

(c) the client runtime and remotable service implementation run in the same JVM

Predicate = the service SCA runtime is using pass-by-reference call semantics for the returned value.

 

 

--------------------------------------------------------------------------

[Comment 5] : stronger use of "tags" might help classify TAs based on targets:

 

Tags seem to be used exclusively as "keywords" in TAs. A suggestion is to use them also

for categorizing the TA based on its target type, as this may help figure which TAs relate to which

conformance target, when creating the test suite.

So one could define general categories of "test targets", e.g.:

- SCA_runtime_component

- SCA_runtime_client

- interface.java_element

- etc.

 

Then one may use a named tags in each TA, for this information:

 

JCA-TA-2005:

...

tag:target_category = "SCA_runtime_component"

 

JCA-TA-3005:

...

tag:target_category = "interface.java_element"

 

 

 



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