| <HTML><HEAD><SCRIPT language="JavaScript" src="resources/script.js" type="text/javascript"></SCRIPT><TITLE>Testing Design/Standards</TITLE></HEAD><BODY alink="#ff0000" bgcolor="#ffffff" leftmargin="4" link="#0000ff" marginheight="4" marginwidth="4" text="#000000" topmargin="4" vlink="#0000aa"><TABLE border="0" cellpadding="0" cellspacing="0" width="620"><TR><TD align="left" height="60" rowspan="3" valign="top" width="135"><IMG alt="logo" border="0" height="60" hspace="0" src="resources/logo.gif" vspace="0" width="135"></TD><TD align="left" colspan="4" height="5" valign="top" width="456"><IMG alt="line" border="0" height="5" hspace="0" src="resources/line.gif" vspace="0" width="456"></TD><TD align="left" height="60" rowspan="3" valign="top" width="29"><IMG alt="right" border="0" height="60" hspace="0" src="resources/right.gif" vspace="0" width="29"></TD></TR><TR><TD align="left" bgcolor="#0086b2" colspan="4" height="35" valign="top" width="456"><IMG alt="" border="0" height="35" hspace="0" src="graphics/design-header.jpg" vspace="0" width="456"></TD></TR><TR><TD align="left" height="20" valign="top" width="168"><IMG alt="bottom" border="0" height="20" hspace="0" src="resources/bottom.gif" vspace="0" width="168"></TD><TD align="left" height="20" valign="top" width="96"><A href="http://xml.apache.org/" onMouseOut="rolloverOff('xml');" onMouseOver="rolloverOn('xml');" target="new"><IMG alt="http://xml.apache.org/" border="0" height="20" hspace="0" name="xml" onLoad="rolloverLoad('xml','resources/button-xml-hi.gif','resources/button-xml-lo.gif');" src="resources/button-xml-lo.gif" vspace="0" width="96"></A></TD><TD align="left" height="20" valign="top" width="96"><A href="http://www.apache.org/" onMouseOut="rolloverOff('asf');" onMouseOver="rolloverOn('asf');" target="new"><IMG alt="http://www.apache.org/" border="0" height="20" hspace="0" name="asf" onLoad="rolloverLoad('asf','resources/button-asf-hi.gif','resources/button-asf-lo.gif');" src="resources/button-asf-lo.gif" vspace="0" width="96"></A></TD><TD align="left" height="20" valign="top" width="96"><A href="http://www.w3.org/" onMouseOut="rolloverOff('w3c');" onMouseOver="rolloverOn('w3c');" target="new"><IMG alt="http://www.w3.org/" border="0" height="20" hspace="0" name="w3c" onLoad="rolloverLoad('w3c','resources/button-w3c-hi.gif','resources/button-w3c-lo.gif');" src="resources/button-w3c-lo.gif" vspace="0" width="96"></A></TD></TR></TABLE><TABLE border="0" cellpadding="0" cellspacing="0" width="620"><TR><TD align="left" valign="top" width="120"><IMG alt="join" border="0" height="14" hspace="0" src="resources/join.gif" vspace="0" width="120"><BR> |
| |
| |
| |
| <A href="overview.html" onMouseOut="rolloverOff('side-overview');" onMouseOver="rolloverOn('side-overview');"><IMG alt="Overview" border="0" height="12" hspace="0" name="side-overview" onLoad="rolloverLoad('side-overview','graphics/overview-label-2.jpg','graphics/overview-label-3.jpg');" src="graphics/overview-label-3.jpg" vspace="0" width="120"></A><BR> |
| |
| <A href="getstarted.html" onMouseOut="rolloverOff('side-getstarted');" onMouseOver="rolloverOn('side-getstarted');"><IMG alt="Getting Started" border="0" height="12" hspace="0" name="side-getstarted" onLoad="rolloverLoad('side-getstarted','graphics/getstarted-label-2.jpg','graphics/getstarted-label-3.jpg');" src="graphics/getstarted-label-3.jpg" vspace="0" width="120"></A><BR> |
| |
| <IMG alt="separator" border="0" height="6" hspace="0" src="resources/separator.gif" vspace="0" width="120"><BR> |
| |
| <A href="apidocs/index.html" onMouseOut="rolloverOff('side-ext-10');" onMouseOver="rolloverOn('side-ext-10');"><IMG alt="Java API" border="0" height="12" hspace="0" name="side-ext-10" onLoad="rolloverLoad('side-ext-10','graphics/ext-10-label-2.jpg','graphics/ext-10-label-3.jpg');" src="graphics/ext-10-label-3.jpg" vspace="0" width="120"></A><BR> |
| |
| <IMG alt="separator" border="0" height="6" hspace="0" src="resources/separator.gif" vspace="0" width="120"><BR> |
| |
| <A href="faq.html" onMouseOut="rolloverOff('side-faq');" onMouseOver="rolloverOn('side-faq');"><IMG alt="FAQ" border="0" height="12" hspace="0" name="side-faq" onLoad="rolloverLoad('side-faq','graphics/faq-label-2.jpg','graphics/faq-label-3.jpg');" src="graphics/faq-label-3.jpg" vspace="0" width="120"></A><BR> |
| |
| <A href="run.html" onMouseOut="rolloverOff('side-run');" onMouseOver="rolloverOn('side-run');"><IMG alt="Running Tests" border="0" height="12" hspace="0" name="side-run" onLoad="rolloverLoad('side-run','graphics/run-label-2.jpg','graphics/run-label-3.jpg');" src="graphics/run-label-3.jpg" vspace="0" width="120"></A><BR> |
| |
| <A href="submit.html" onMouseOut="rolloverOff('side-submit');" onMouseOver="rolloverOn('side-submit');"><IMG alt="Writing New Tests" border="0" height="12" hspace="0" name="side-submit" onLoad="rolloverLoad('side-submit','graphics/submit-label-2.jpg','graphics/submit-label-3.jpg');" src="graphics/submit-label-3.jpg" vspace="0" width="120"></A><BR> |
| |
| <IMG alt="Test Standards" border="0" height="12" hspace="0" src="graphics/design-label-1.jpg" vspace="0" width="120"><BR> |
| |
| <A href="xalanc.html" onMouseOut="rolloverOff('side-xalanc');" onMouseOver="rolloverOn('side-xalanc');"><IMG alt="Xalan-C Tests" border="0" height="12" hspace="0" name="side-xalanc" onLoad="rolloverLoad('side-xalanc','graphics/xalanc-label-2.jpg','graphics/xalanc-label-3.jpg');" src="graphics/xalanc-label-3.jpg" vspace="0" width="120"></A><BR> |
| <IMG alt="separator" border="0" height="6" hspace="0" src="resources/separator.gif" vspace="0" width="120"><BR> |
| |
| <A href="http://xml.apache.org/xalan-j" onMouseOut="rolloverOff('side-ext-28');" onMouseOver="rolloverOn('side-ext-28');"><IMG alt="Xalan-J 2.x" border="0" height="12" hspace="0" name="side-ext-28" onLoad="rolloverLoad('side-ext-28','graphics/ext-28-label-2.jpg','graphics/ext-28-label-3.jpg');" src="graphics/ext-28-label-3.jpg" vspace="0" width="120"></A><BR> |
| <A href="http://xml.apache.org/xalan" onMouseOut="rolloverOff('side-ext-30');" onMouseOver="rolloverOn('side-ext-30');"><IMG alt="Xalan-J 1.x" border="0" height="12" hspace="0" name="side-ext-30" onLoad="rolloverLoad('side-ext-30','graphics/ext-30-label-2.jpg','graphics/ext-30-label-3.jpg');" src="graphics/ext-30-label-3.jpg" vspace="0" width="120"></A><BR> |
| <A href="http://xml.apache.org/xalan-c" onMouseOut="rolloverOff('side-ext-32');" onMouseOver="rolloverOn('side-ext-32');"><IMG alt="Xalan-C 1.x" border="0" height="12" hspace="0" name="side-ext-32" onLoad="rolloverLoad('side-ext-32','graphics/ext-32-label-2.jpg','graphics/ext-32-label-3.jpg');" src="graphics/ext-32-label-3.jpg" vspace="0" width="120"></A><BR> |
| |
| <IMG alt="close" border="0" height="14" hspace="0" src="resources/close.gif" vspace="0" width="120"><BR></TD><TD align="left" valign="top" width="500"><TABLE border="0" cellpadding="3" cellspacing="0"><TR><TD> |
| <UL> |
| <LI><A href="#overview-tests">Overview of Testing concepts</A></LI> |
| <LI><A href="#standards-api-tests">Standards for API Tests</A></LI> |
| <LI><A href="#standards-xsl-tests">Standards for Stylesheet Tests</A></LI> |
| <LI><A href="#testing-links">Links to other testing sites</A></LI> |
| </UL> |
| |
| <A name="overview-tests"><!--anchor--></A> |
| <TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="666699" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG alt="" border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Overview of Testing concepts</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10"> </TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif"> |
| <P>While an overview of software testing in general is outside |
| the scope we can address in this document, here are some of the |
| concepts and background behind the Xalan testing effort.</P> |
| <DL> |
| <DT>A quick glossary of Xalan testing terms:</DT><DD></DD> |
| <DT>What is a test?</DT> |
| <DD>The word 'test' is overused, and can refer to a number |
| of things. It can be an API test, which will usually be a Java |
| class that verifies the behavior of Xalan by calling it's API's. |
| It can be a stylesheet test, which is normally an .xsl stylesheet |
| file with a matching .xml data file, and often has an expected |
| output file with a .out extension.</DD> |
| <DT>What kinds of tests does Xalan have?</DT> |
| <DD>There are several different ways to categorize the |
| tests currently used in Xalan: API tests and testlets, specific tests |
| for detailed areas of the API in Xalan; Conformance Tests, |
| with stylesheets in the tests\conf directory that each test |
| conformance with a specific part of the XSLT spec, and are |
| run automatically by a test driver; performance tests, which |
| are a set of stylesheets specifically designed to show the |
| performance of a processor in various ways, that are run |
| automatically by a test driver; contributed tests, which are |
| stored in tests\contrib, where anyone is invited to submit their |
| own favorite stylesheets that we can use to test future Xalan |
| releases. There are also a few specific tests of extensions, as well |
| as a small but growing suite of individual Bugzilla bug regression tests. |
| We are working on better documentation and |
| structure for the tests.</DD> |
| <DT>What is a test result?</DT> |
| <DD>While most people view tests as having a simple boolean |
| pass/fail result, I've found it more useful to have a range of |
| results from our tests. Briefly, they include INCP or incomplete |
| tests; PASS tests, where everything went correctly; FAIL tests, |
| where something obviously didn't go correctly; ERRR tests, where |
| something failed in an unexpected way, and AMBG or ambiguous tests, |
| where the test appears to have completed but the output results |
| haven't been verified to be correct yet. |
| <A href="#overview-tests-results">See a full description of test results.</A></DD> |
| <DT>How are test results stored/displayed?</DT> |
| <DD>Xalan tests all use |
| <A href="apidocs/org/apache/qetest/Reporter.html">Reporter</A>s and |
| <A href="apidocs/org/apache/qetest/Logger.html">Logger</A>s to store their results. |
| By default, most Reporters send output to a ConsoleLogger (so you |
| can see what's happening as the test runs) and to an XMLFileLogger |
| (which stores it's results on disk). The logFile input to a test |
| (generally on the command line or in a .properties file) |
| determines where it will produce it's MyTestResults.xml file, which |
| are the complete report of what the test did, as saved to disk by |
| it's XMLFileLogger. You can |
| then use <A href="run.html#how-to-view-results">viewResults.xsl</A> |
| to pretty-print the results into a MyTestResults.html |
| file that you can view in your browser. We are working on other |
| stylesheets to output results in different formats. |
| </DD> |
| <DT>What are your file/test naming conventions?</DT> |
| <DD>See the sections below for <A href="#standards-api-tests">API test naming</A> and |
| <A href="#standards-xsl-tests">stylesheet file naming</A> conventions.</DD> |
| </DL> |
| |
| <A name="overview-tests-results"><!--anchor--></A> |
| <P>Xalan tests will report one of several results, as detailed below. |
| Note that the framework automatically rolls-up the results for |
| any individual test file: a testCase's result is calculated from |
| any test points or <CODE><FONT face="courier, monospaced">check*()</FONT></CODE> calls within that testCase; |
| a testFile's result is calculated from the results of it's testCases.</P> |
| <UL> |
| <LI>INCP/incomplete: all tests start out as incomplete. If a test never calls |
| a <CODE><FONT face="courier, monospaced">check*()</FONT></CODE> method (i.e. never officially verifies a test |
| point), then it's result will be incomplete. This is important for cases |
| where a test file begins running, and then causes some unexpected |
| error that exits the test. |
| <BR>Some other test harnesses will erroneously |
| report this test as passing, since it never actually reported that |
| anything failed. For Xalan, this may also be reported if a test |
| calls <CODE><FONT face="courier, monospaced">testFileInit</FONT></CODE> or <CODE><FONT face="courier, monospaced">testCaseInit</FONT></CODE>, but |
| never calls the corresponding <CODE><FONT face="courier, monospaced">testFileClose</FONT></CODE> or <CODE><FONT face="courier, monospaced">testCaseClose</FONT></CODE>. |
| See <A href="apidocs/org/apache/qetest/Logger.html#INCP">Logger.INCP</A></LI> |
| |
| <LI>PASS: the test ran to completion and all test points verified correctly. |
| This is obviously a good thing. A test will only pass if it has at least one |
| test point that passes and has no other kinds of test points (i.e. fail, |
| ambiguous, or error). |
| See <A href="apidocs/org/apache/qetest/Logger.html#PASS">Logger.PASS</A></LI> |
| |
| <LI>AMBG/ambiguous: the test ran to completion but at least one test point |
| could not verify it's data because it could not find the 'gold' |
| data to verify against. This test niether passes nor fails, |
| but exists somewhere in the middle. |
| <BR>The usual solution is to |
| manually compare the actual output the test produced and verify |
| that it is correct, and then check in the output as the 'gold' |
| or expected data. Then when you next run the test, it should pass. |
| A test is ambiguous if at least one test point is ambiguous, and |
| it has no fail or error test points; this means that a test with |
| both ambiguous and pass test points will roll-up to be ambiguous. |
| See <A href="apidocs/org/apache/qetest/Logger.html#AMBG">Logger.AMBG</A></LI> |
| |
| <LI>FAIL: the test ran to completion but at least one test point |
| did not verify correctly. This is normally used for cases where |
| we attempt to validate a test point, but get the wrong answer: |
| for example if we call setData(3) then call getData and get a '2' back. |
| <BR>In most cases, a test should be able to continue normally after a FAIL |
| result, and the rest of the results should be valid. |
| A test will fail if at least one test point is fail, and |
| it has no error test points; thus a fail always takes precedence |
| over a pass or ambiguous result. |
| See <A href="apidocs/org/apache/qetest/Logger.html#FAIL">Logger.FAIL</A></LI> |
| |
| <LI>ERRR/error: the test ran to completion but at least one test point |
| had an error or did not verify correctly. This is normally used for |
| cases where we attempt to validate a test point, but something unexpected |
| happens: for example if we call setData(3), and calling getData throws |
| an exception. |
| <BR>Although the difference seems subtle, it can be a useful |
| diagnostic, since a test that reports an ERRR may not necessarily be able |
| to continue normally. In Xalan API tests, we often use this code if |
| some setup routines for a testCase fail, meaning that the rest of the |
| test case probably won't work properly. |
| <BR>A test will report an ERRR result if at least one test point is ERRR; |
| thus an ERRR result takes precedence over any other kind of result. |
| Note that calling <CODE><FONT face="courier, monospaced">Reporter.logErrorMsg()</FONT></CODE> will not cause |
| an error result, it will merely log out the message. You generally must |
| call <CODE><FONT face="courier, monospaced">checkErr</FONT></CODE> directly to cause an ERRR result. |
| See <A href="apidocs/org/apache/qetest/Logger.html#ERRR">Logger.ERRR</A></LI> |
| |
| </UL> |
| </FONT></TD></TR></TABLE><BR> |
| |
| <A name="standards-api-tests"><!--anchor--></A> |
| <TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="666699" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG alt="" border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Standards for API Tests</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10"> </TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif"> |
| <P>In progress. Both the overall Java testing framework, the test drivers, |
| and the specific API tests have a number of design decisions detailed |
| in the javadoc |
| <A href="apidocs/org/apache/qetest/package-summary.html">here</A> and |
| <A href="apidocs/org/apache/qetest/xsl/package-summary.html">here</A>.</P> |
| <P>Naming conventions: obviously we follow basic Java coding |
| standards as well as some specific standards that apply to Xalan |
| or to testing in general. Comments appreciated.</P> |
| <DL> |
| <DT>Some naming conventions currently used:</DT><DD></DD> |
| <DT>*Test.java/.class</DT> |
| <DD>As in 'ConformanceTest', 'PerformanceTest', etc.: a single, |
| automated test file designed to be run from the command line or |
| from a testing harness. This may be used in the future by |
| automated test discovery mechanisims.</DD> |
| <DT>*Testlet.java/.class</DT> |
| <DD>As in '<A href="apidocs/org/apache/qetest/xsl/StylesheetTestlet.html">StylesheetTestlet</A>', 'PerformanceTestlet', etc.: a single, |
| automated testlet designed to be run from the command line or |
| from a testing harness. Testlets are generally focused on one |
| or a very few test points, and usually are data-driven. A testlet |
| defines a single test case algorithim, and relies on the caller |
| (or *TestletDriver) to provide it with the data point(s) to use |
| in it's test, including gold comparison info.</DD> |
| <DT>*Datalet.java/.class</DT> |
| <DD>As in '<A href="apidocs/org/apache/qetest/xsl/StylesheetDatalet.html">StylesheetDatalet</A>': a single set of test data for |
| a Testlet to execute. Separating a specific set of data from the |
| testing algorithim to use with the data makes it easy to write |
| and run large sets of data-driven tests.</DD> |
| <DT>*APITest.java/.class</DT> |
| <DD>As in 'TransformerAPITest', etc.: a single, |
| automated test file designed to be run from the command line or |
| from a testing harness, specifically providing test coverage of |
| a number of API's. Instead of performing the same kind of generic |
| processing/transformations to a whole directory tree of files, these |
| *APITests attempt to validate the API functionality itself: e.g. when |
| you call setFoo(1), you should expect that getFoo() will return 1. |
| </DD> |
| <DT>XSL*.java/.class</DT> |
| <DD>Files that are specific to some kind of XSL(T) and XML concepts in |
| general, but not necessarily specific to Xalan itself. I.e. these |
| files may generally need org.xml.sax.* or org.w3c.dom.* to compile, but |
| usually should not need org.apache.xalan.* to compile.</DD> |
| <DT>Logging*.java/.class</DT> |
| <DD>Various testing implementations of common error handler, |
| URI resolver, and other classes. These generally do not implement |
| much functionality of the underlying classes, but simply log out |
| everything that happens to them to a Logger, for later analysis. |
| Thus we can hook a LoggingErrorHandler up to a Transformer, run a |
| stylesheet with known errors through it, and then go back and validate |
| that the Transformer logged the appropriate errors with this service.</DD> |
| <DT>QetestUtils.java/.class</DT> |
| <DD>A simple static utility class with a few general-purpose |
| utility methods for testing.</DD> |
| </DL> |
| <P>Please: if you plan to submit Java API tests, use the existing framework |
| as <A href="submit.html#write-API-tests">described</A>.</P> |
| </FONT></TD></TR></TABLE><BR> |
| |
| <A name="standards-xsl-tests"><!--anchor--></A> |
| <TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="666699" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG alt="" border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Standards for Stylesheet Tests</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10"> </TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif"> |
| <P>In progress. See the <A href="submit.html#write-xsl-tests">discussion about OASIS</A> for an overview.</P> |
| <P>Currently, the basic standards for Conformance and related |
| tests are to provide similarly-named |
| *.xml and *.xsl files, and a proposed *.out 'gold' or expected |
| output file. The basenames of the file should start with the name |
| of the parent directory the files are in. Thus if you had a new |
| test you wanted to contribute about the 'foo' feature, you might |
| submit a set of files like so:</P> |
| <P>All under <CODE><FONT face="courier, monospaced">xml-xalan\test\tests</FONT></CODE>:<BR> |
| <CODE><FONT face="courier, monospaced">contrib\foo\foo.xml</FONT></CODE><BR> |
| <CODE><FONT face="courier, monospaced">contrib\foo\foo.xsl</FONT></CODE><BR> |
| <CODE><FONT face="courier, monospaced">contrib-gold\foo\foo.out</FONT></CODE><BR><BR> |
| You could then run this test through the Conformance test driver like:<BR> |
| <CODE><FONT face="courier, monospaced">cd xml-xalan\test</FONT></CODE><BR> |
| <CODE><FONT face="courier, monospaced">build contrib -Dqetest.category=foo</FONT></CODE><BR> |
| </P> |
| <P>Tests using Xalan Extensions may be found under test/tests/extensions and are separated |
| into directories by language:<BR> |
| <DL> |
| <DT>test/tests/extensions/library</DT> |
| <DD>Stylesheets for extensions implemented natively in Xalan; these only |
| have .xsl and .xml files for the test</DD> |
| <DT>test/tests/extensions/java</DT> |
| <DD>Stylesheets for extensions implemented in Java; these are run by |
| a .java file that uses an ExtensionTestlet to run</DD> |
| <DT>test/tests/extensions/javascript</DT> |
| <DD>Stylesheets for extensions implemented in Javascript; these include |
| only a .xsl and .xml file but require |
| <A href="http://xml.apache.org/xalan-j/extensions.html#supported-lang">bsf.jar and js.jar</A> in the classpath</DD> |
| </DL> |
| </P> |
| |
| </FONT></TD></TR></TABLE><BR> |
| |
| <A name="testing-links"><!--anchor--></A> |
| <TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="666699" colspan="2" width="494"><TABLE border="0" cellpadding="0" cellspacing="0" width="494"><TR><TD bgcolor="#039acc" height="1" width="1"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#039acc" height="1" width="492"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#0086b2" height="1" width="1"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#039acc" width="1"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#0086b2" width="492"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG alt="" border="0" height="2" hspace="0" src="resources/void.gif" vspace="0" width="2"><B>Links to other testing sites</B></FONT></TD><TD bgcolor="#017299" width="1"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR><TR><TD bgcolor="#0086b2" height="1" width="1"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD><TD bgcolor="#017299" height="1" width="492"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="492"></TD><TD bgcolor="#017299" height="1" width="1"><IMG alt="" border="0" height="1" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE></TD></TR><TR><TD width="10"> </TD><TD width="484"><FONT color="#000000" face="arial,helvetica,sanserif"> |
| <P>A few quick links to other websites about software quality |
| engineering/assurance. No endorsement, express or implied should |
| be inferred from any of these links, but hopefully they'll be |
| useful for a few of you.</P> |
| <P>One note: I've commonly found two basic |
| kinds of sites about software testing: ones for IS/IT types, |
| and ones for software engineers. The first kind deal with testing |
| or verifying the deployment or integration of business software |
| systems, certification exams for MS or Novell networks, ISO |
| certification for your company, etc. The second kind (which I |
| find more interesting) deal with testing software applications |
| themselves; i.e. the testing ISV's do to their own software before |
| selling it in the market. So far, there seem to be a lot more |
| IS/IT 'testing' sites than there are application 'testing' sites.</P> |
| <UL> |
| <LI><A href="http://www.soft.com/Institute/HotList/index.html">Software Research Institute HotList</A> |
| This is a pretty good laundry list of top-level links for software testing</LI> |
| <LI><A href="http://www.swquality.com/users/pustaver/index.shtml">SWQuality site; plenty of links</A></LI> |
| <LI><A href="http://www.stickyminds.com/">StickyMinds</A></LI> |
| <LI><A href="http://www.sqe.com/press/index.asp">SQE</A></LI> |
| </UL> |
| </FONT></TD></TR></TABLE><BR> |
| </TD></TR></TABLE></TD></TR></TABLE><BR><TABLE border="0" cellpadding="0" cellspacing="0" width="620"><TR><TD bgcolor="#0086b2"><IMG alt="dot" height="1" src="resources/dot.gif" width="1"></TD></TR><TR><TD align="center"><FONT color="#0086b2" size="-1"><I> |
| Copyright © 2000 The Apache Software Foundation. |
| All Rights Reserved. |
| </I></FONT></TD></TR></TABLE></BODY></HTML> |