[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Suggestion of how to define tests for ODF 1.2 - part 1 - ODF Schema
Currently the OIC TC is already collecting only test documents and we
all agree the TC will not implement tests.
The test execution is work that might be delegated to the ODFDOM working
group, I am chairing.
What the OIC TC might work on, is to provide test descriptions for ODF
feature.
Let's focus for now on part 1 the schema part feature (e.g. table,
image, hyperlink, etc.).
Previously I had explained that several XML elements (and their
attributes) form such an ODF feature (see
http://lists.oasis-open.org/archives/oic/201001/msg00043.html and
http://lists.oasis-open.org/archives/oic/201002/msg00005.html ).
To summarize an ODF feature, it is just a high level abstraction of its
ODF XML model,
providing all its ODF functionality, but hiding all XML
implementation details.
In the following I would like ot show you how a test is being defined
for such an ODF
feature.
This creation process can be divided into a sequence of several steps,
again to break down complexity.
The first step is to identify the XML of an ODF feature. Let's start an
example with an easy feature, an ODF image.
1) Analyzing the Feature XML
==========================================
The easiest way to get an idea what XML elements are involved is the
empiric way, starting with the most easiest incarnation of the feature.
For an image, it's most likely starting a new text document - in the ODF
implementation of your choice - and
adding a new image to the document. Afterwards take a look into the XML.
[Note: For the XML analysis I recommend the use of the cross-platform JEdit
OpenSource tool with its Archive and XML plugin:
- with the Archive plug-in you open the files within the zip. Before
opening an ODF document in the open file dialog, choose from the menu
plug-ins Archive - browse Archive, to open explicitly an arbitrary
inner package file.
- with the XML plug-in you are able to (highlight &) indent the XML:
I have a key short cut for this frequent task (CTRL-SHIFT-I).
Nice benefit, when using JEdit, you may edit and save the XML directly
into the ZIP.]
In case you used Open Office 3.2 you might get something like this
<draw:frame draw:style-name="fr1" draw:name="graphics1"
text:anchor-type="paragraph" svg:width="16.563cm" svg:height="8.546cm"
draw:z-index="0">
<draw:image
xlink:href="Pictures/1000000000000272000001430108E8B5.jpg"
xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/>
</draw:frame>
To know what this all means you take a look into the element definitions
of the part 1 spec:
http://docs.oasis-open.org/office/v1.2/part1/cd04/OpenDocument-v1.2-part1-cd04.html#element-draw_frame
http://docs.oasis-open.org/office/v1.2/part1/cd04/OpenDocument-v1.2-part1-cd04.html#element-draw_image
Each element definition describes all possible parent elements,
attributes and child elements.
The test should cover all elements & attributes possibly used for the
feature.
The easiest image would be the one with smallest XML set (therefore
remove the optional parts from above XML) to:
<draw:frame>
<draw:image
xlink:href="Pictures/1000000000000272000001430108E8B5.jpg"/>
</draw:frame>
This is the smallest possible image and still valid ODF 1.2 (test your
doc with http://tools.odftoolkit.org/odfvalidator/ )
2) Assigning User Scenario to the XML of the Feature
==========================================
Usually in life you come up first with scenarios and do not have the
model (ODF XML) first.
Still it is worth to add scenarios, when having the XML model already.
The reason is to test if the given XML is capable of the requirements
from the scenarios and even more to reuse the scenario later to hook a
user by offering functionality documentation (his problem) to the
certain XML.
The first (main) scenario would always be to create the minimum feature
(image XML shown above).
Actually it is already the first set of scenarios, as this minimum image
have to be added to all places it is allowed for (see possible parent
elements of draw:frame in spec, for instance it is possible to add an
image to a table cell).
Possibly the second scenario, as the minimum image has in Open Office
only the size of a thumbnail would be to change the width and height of
an image.
This scenarios would be aligned to altering the attributes @svg:width
and @svg:height.
We might start with two rule of thumb when creating scenarios:
a) Add as much scenarios as possible (making them as small as possible)
b) Do not add redundant scenarios, that are already covering by others
(do not have 'change height', 'change widht', 'change both') To keep
your API simple and tidy (Remember —Antoine De Saint-Exupery:
“A designer knows he has achieved perfection not when there is nothing
left to add, but when there is nothing left to take away.”)
By this we would have (aside of the adding scenarios) two scenarios
additional. One to change @svg:width and one for @svg:height.
3) Describing a Test for each User Scenario
==========================================
After the feature is crushed to scenarios - - each explaining common
user functionality -, a test is now described for each scenario. To ease
test description a pseudo method is being invented for each scenario,
providing a method signature, which is the method name, method
parameters (optional) and return value (optional).
There are three things the test definition requires:
a) a precondition (Document status - usually via a test document URL)
b) a modification of the test document via the method (plus arguments)
c) a postcondition (Document status - usually via a test document URL
and/or expected return value)
As usually in testing not everything can be covered by tests (e.g. not
all possible length of an image or colors of a cell), but different
status (and their border values) should be covered. For instance in
terms of a color: no color, black, white, some arbitrary color,
transparent).
The nice thing of the above approach is that each of these three steps
is reviewable for itself by others.
And further, as ODFDOM maps those pseudo method of the test description
to its own Convenient API (see
http://blogs.sun.com/GullFOSS/entry/odfdom_0_8_the_new - esp. text
beyond picture), it is more than likely that these test description will
be readable by a generic test tool, which executes each test description
triggering a method of that Convenient API, using preconditions (test
documents) and compares the expected post conditions (test documents).
Imagine if all ODF XML would be covered by such features and their
scenarios.
The set of all scenarios would define all possible valid modifications
(or state transitions) of an ODF document.
Does this sound interesting to you?
Kind regards,
Svante
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]