Characterizing an XML schema
"Gagnon, Joseph - 0558 - MITLL" <[email protected]> Fri, 14 Mar 2014 11:45:58 -0400
| Newsgroups | gmane.text.xml.xmlbeans.user |
|---|---|
| Message-ID | <[email protected]> |
------=_NextPart_000_0374_01CF3F7A.F78E4590
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_0375_01CF3F7A.F78E4590"
------=_NextPart_001_0375_01CF3F7A.F78E4590
Content-Type: text/plain;
charset="US-ASCII"
Content-Transfer-Encoding: 7bit
I am trying to find a way to characterize an XML schema to potentially
automatically generate test cases to apply to the java API generated from
that schema.
Some examples:
A type has an integer field; I would test setting the value (in the XML) at
Integer.MAX_VALUE and Integer.MIN_VALUE, as well as outside those bounds.
A type has a string field with a max length; I would test setting a value
greater than that length.
A string field has a specific pattern that must be matched; I would test
setting something that does not match that pattern.
A field has minOccurs set > 0; I would test setting the object without that
field set.
Etc.
The schema contains these "rules", so I'm looking for a way to navigate
through a schema to identify the various "types" that are generated and
collect this type of information about the types so that we can then use
this information to generate a set of test cases that will not only test the
"happy case(s)", but also throw some curve balls at it to see how it is
handled.
Is there a tool in XMLBeans that might be used to accomplish this? In the
absence of a tool, has anyone use the XMLBeans API to do anything like this?
I've done some initial experimenting and seems like the information might be
in there somewhere, but I don't know enough about XML schema or the XMLBeans
API to know what to use or the best way to go about it.
If anyone has ideas, suggestions, or sources to point me toward, that would
be greatly appreciated.
------=_NextPart_001_0375_01CF3F7A.F78E4590
Content-Type: text/html;
charset="US-ASCII"
Content-Transfer-Encoding: quoted-printable
<html xmlns:v=3D"urn:schemas-microsoft-com:vml" =
xmlns:o=3D"urn:schemas-microsoft-com:office:office" =
xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" =
xmlns=3D"http://www.w3.org/TR/REC-html40"><head><META =
HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Dus-ascii"><meta name=3DGenerator content=3D"Microsoft Word 12 =
(filtered medium)"><style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Calibri","sans-serif";
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]--></head><body lang=3DEN-US link=3Dblue =
vlink=3Dpurple><div class=3DWordSection1><p class=3DMsoNormal>I am =
trying to find a way to characterize an XML schema to potentially =
automatically generate test cases to apply to the java API generated =
from that schema.<o:p></o:p></p><p =
class=3DMsoNormal><o:p> </o:p></p><p class=3DMsoNormal>Some =
examples:<o:p></o:p></p><p class=3DMsoNormal><o:p> </o:p></p><p =
class=3DMsoNormal>A type has an integer field; I would test setting the =
value (in the XML) at Integer.MAX_VALUE and Integer.MIN_VALUE, as well =
as outside those bounds.<o:p></o:p></p><p class=3DMsoNormal>A type has a =
string field with a max length; I would test setting a value greater =
than that length.<o:p></o:p></p><p class=3DMsoNormal>A string field has =
a specific pattern that must be matched; I would test setting something =
that does not match that pattern.<o:p></o:p></p><p class=3DMsoNormal>A =
field has minOccurs set > 0; I would test setting the object without =
that field set.<o:p></o:p></p><p class=3DMsoNormal>Etc.<o:p></o:p></p><p =
class=3DMsoNormal><o:p> </o:p></p><p class=3DMsoNormal>The schema =
contains these “rules”, so I’m looking for a way to =
navigate through a schema to identify the various “types” =
that are generated and collect this type of information about the types =
so that we can then use this information to generate a set of test cases =
that will not only test the “happy case(s)”, but also throw =
some curve balls at it to see how it is handled.<o:p></o:p></p><p =
class=3DMsoNormal><o:p> </o:p></p><p class=3DMsoNormal>Is there a =
tool in XMLBeans that might be used to accomplish this? In the =
absence of a tool, has anyone use the XMLBeans API to do anything like =
this? I’ve done some initial experimenting and seems like =
the information might be in there somewhere, but I don’t know =
enough about XML schema or the XMLBeans API to know what to use or the =
best way to go about it.<o:p></o:p></p><p =
class=3DMsoNormal><o:p> </o:p></p><p class=3DMsoNormal>If anyone =
has ideas, suggestions, or sources to point me toward, that would be =
greatly appreciated.<o:p></o:p></p><p =
class=3DMsoNormal><o:p> </o:p></p></div></body></html>
------=_NextPart_001_0375_01CF3F7A.F78E4590--
------=_NextPart_000_0374_01CF3F7A.F78E4590
Content-Type: application/x-pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
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
p1SyX3R3MzSa9SDh7L20WjAOBgNVHQ8BAf8EBAMCBsAwHwYDVR0jBBgwFoAUjkp9iaFjFxyBiDRX
NyZFXhmKfiQwMwYDVR0fBCwwKjAooCagJIYiaHR0cDovL2NybC5sbC5taXQuZWR1L2dldGNybC9M
TENBMjBiBggrBgEFBQcBAQRWMFQwLQYIKwYBBQUHMAKGIWh0dHA6Ly9jcmwubGwubWl0LmVkdS9n
ZXR0by9MTENBMjAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AubGwubWl0LmVkdS8wDAYDVR0TAQH/
BAIwADA9BgkrBgEEAYI3FQcEMDAuBiYrBgEEAYI3FQiDg+Udh+ynZoathxWD6vBFhbahHx2Fy94y
h/+KcwIBZAIBBTAiBgNVHSUBAf8EGDAWBggrBgEFBQcDBAYKKwYBBAGCNwoDDDAYBgNVHSAEETAP
MA0GCyqGSIb3EgIBAwEIMCMGA1UdEQQcMBqBGEpvc2VwaC5HYWdub25AbGwubWl0LmVkdTANBgkq
hkiG9w0BAQsFAAOCAQEAaC+txfYa+P37duHRcL7rmRrwpnJVimGX6hyDATeqOaoxKn/B5CZhjMAd
FKIbNjcaLMcw9FgxI9wLTSZT1hkLrAloSZRYRsvqfB+ESwi3J6mj1j/Y02wOrxBLieVEqLELAQlp
qA+AImJlcYn9akzN8dzX3O/hE6yGRWtA5NkFjMHOKodM59VwboWkW3H2RG4XQDZ55jEYDsuJGype
uc5O9z8ZMiQYjEttRWBxiL/C3Y8CvZ0MAatO/tFokmvcpnTdzBaQXkY/FldRcqW0DPYL/6Gif9hc
g7DXcmqQxx2T69PSKXSobt648w3mMD57ls2EqReRaGCZGcZeU1qYqWXBGjCCBNcwggO/oAMCAQIC
CmqyyD4AAAAAjA4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVVMxHzAdBgNVBAoTFk1JVCBM
aW5jb2xuIExhYm9yYXRvcnkxDDAKBgNVBAsTA1BLSTETMBEGA1UEAxMKTUlUTEwgQ0EtMjAeFw0x
MzEyMDUxNDM2MDFaFw0xNDEyMDUxNDM2MDFaMGAxCzAJBgNVBAYTAlVTMR8wHQYDVQQKExZNSVQg
TGluY29sbiBMYWJvcmF0b3J5MQ8wDQYDVQQLEwZQZW9wbGUxHzAdBgNVBAMTFkdhZ25vbi5Kb3Nl
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
------=_NextPart_000_0374_01CF3F7A.F78E4590--