[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
RE: [hyades-dev] Some Test Model & UI progress
|
Warning, Flaming expected
I think I'm OK with this, but I need to articulate what I think the
requiremnt is here. I'm sorry that for brevity I will ave to use
terminology defined in my prototype document. I know the Pseudo-SUT
concept doesn't appear the test model... yet.
We are dealing with two types of behaviour, behaviour that is defined in
the Test Model against the interfaces of the Pseudo-SUT and Behaviour
that is defined in the layer between the Pseudo-SUT and the SUT. (i.e.
in the wrapper). In my view of the world the former is part of the test
case, the latter is on the other side of the black box interface that
the test case speaks to. Behaviour in the test and behaviour in the
wrapper are not exclusive. Our Citrix product runs a load test over
multiple copies of executing Visual Test Scripts. We would anticipate
porting this by defining the load test behaviour in the test model and
retaining the script behaviour in the Visual Test script. The
interaction is quite complex, the load test is not just invoking the
Test Script it's sending messages into and out of it. A simpler version
of this might be to run Junit test cases in a load test to check for
functional failure under load.
At the point in the model editor where you see a call to an interface to
a Pseudo-SUT (e.g. a JUnit test case or a Visual test Script) we should
have an extension point which effectively allows you to edit the
wrapper. (i.e. pop across the black box interface to edit the
externally-defined behaviour). You would pop into Java, C, Rational
Visual Test Script, or whatever. This applies even if we have behaviour
in the test case.
We also NEED a Universal test case editor which can handle any behaviour
up to the Psuedo-SUT interface and which provides the extension point to
the wrapper editor. It doesn't have to be very good but it does have to
be universal. Harm talked about being able to provide something by
default from EMF.
Now the concept of behaviour-specific test editors is also important.
In my view these are optional replacements rather than extensions of the
Universal test case editor and offer the same sets of extension points
to the wrapper editors (although there may be some Eclipse issues in
doing it this way).
Finally, we need a point in the Test Model to carry a description of the
interface to the Pseudo-SUT, not just the way we are exercising that
interface in the test. This allows the various test editors to offer
only legal sets of interface calls up through the UI to the tester. I
know most people think they'll just be dealing with arbitrary pieces of
Java as the interface to the SUT, but it aint necessarily so, in most
real environments an IDL and type system will be extremely useful for
bridging, and constraining the test creation logic in the editor. I
think there's a point in the test model which associates the SUT (i.e.
in my terms the Pseudo-SUT) class to the test instance and we can extend
away from this.
Mike
-----Original Message-----
From: jtoomey [mailto:jtoomey@xxxxxxxxxxxx]
Sent: Thursday, April 24, 2003 11:46 PM
To: hyades-dev
Subject: [hyades-dev] Some Test Model & UI progress
Hi all.
Marcelo, Serge and I had a very productive discussion this afternoon,
and I'd like to summarize some conclusions that were drawn:
1) We again debated the ownership of TestCase by TestSuite, and came to
a very nice compromise. While a TestCase is owned by a TestSuite, we
will break the aggregation-by-value of the TestCase's behavior. In
fact, we will model neither the TestSuite's behavior nor the TestCase's
behavior as owned by the TestCase or the TestSuite -- behaviors will be
persisted in their own resources. This solves many of the issues we
have wrestled with in the TestModel group and also in the UI team. When
envisioning the use case where a behavior is not modeled using the test
model, in a JUnit source file, for instance, it is clear that the
behavior is persisted in a separate resource. This works equally well
if the behavior is modeled in the Test Model, as opening the TestCase
behavior requires a new editor to be opened (this is an extension
point), and in Eclipse this would imply that a separate resource is
being opened. Lastly, this will drive a clear separation between our
U2TP Test Model implementation and whatever format the implemented
behavior may take for a given TestCase type. In short (or perhaps in
long), we found many reasons to like this approach.
2) Based on the above, we identified and refined another extension point
for Hyades -- a Behavior Editor Adapter (the name will certainly change
to something better.) When a user gestures to open a TestCase behavior,
the Hyades TestTool will look up the Behavior Editor Adapter that is
registered for this TestCase type (*). It will hand that adapter the
two attributes that will be stored for the behavior of that TestCase --
a URL (relative to the workspace for Hyades 1.0) and a behavior location
(a string that specifies the behavior's location within the resource
referenced by the URL -- can be empty). The adapter is then responsible
for opening the resource and navigating to the specified location. The
same flow will also apply for opening a TestSuite behavior.
Please post any concerns or comments that you have on these issues.
We'll review them in the upcoming Test Model and UI meetings as well.
Thanks,
--Joe
(*) In truth, we will first check the preferences to see if the user has
specified a preferred adapter. It's not clear to me whether we will
expose the Behavior Editor Adapter separately, or incorporate it into a
larger adapter that encompasses other type specific extensibility points
-- it's somewhat of a user experience question as well. But the point
is that we are not mandating that one and only adapter will exist for a
given type. It is expected that some adapters will be shared (such as
the one that knows how to take a java source file and open it, scrolled
to a specified method), and it is also allowed that a given type will be
supported by more than one adapter (in which case we'll observe the
preference if it is specified, and we can choose a strategy for dealing
with the case in which a preference is not specified.) We could also
support an Open With command from the element in this case.
Joe Toomey
Senior Staff Software Engineer
Rational Software
IBM Software Group
tel: (781) 676-7668
fax: (781) 676-7640