Table of Contents
The purpose of this document is to provide a summary of the conformance test suite for the OGC Web Feature Service 1.0.0 specification. This information is intended to assist WFS implementors running the tests against their products and WFS users in undestanding the conformance test report for WFS implementations and the capabilities they offer.
The conformance tests are performed using the OGC conformance test engine with a suite of test scripts and data for each specification. For each version of the specification a new test suite will be developed to add additional tests for new functionality. The WFS implementors use the test engine to run the test scripts against a test server and the test engine records the results of each test.
This document describes the test suite for the Web Feature Service 1.0.0 specification (http://www.opengis.org/techno/specs/02-058.pdf) with filters defined using OGC Filter Encoding 1.0.0 specification (http://www.opengis.org/techno/specs/02-059.pdf) and features defined using Geography Markup Language 2.1.2 specification (http://www.opengis.net/gml/02-069/GML2-12.pdf).
The WFS specification defines two classes of implementations Basic and Transactional, with locking being optional for a Transactional WFS. The test suite is divided into three classes of tests Basic, Transactional and Locking, the requests tested in each of these classes are listed below..
Basic
GetCapabilities (KVP GET (required) or XML POST)
DescribeFeatureType (KVP GET or XML POST)
GetFeature (KVP GET or XML POST)
Transactional
Transaction (XML POST)
Locking
LockFeature (XML POST)
GetFeatureWithLock (XML POST)
The tests performed against an implementation are selected based on the capabilities document for the WFS implementation. By omitting a request, operation or filter capability from the capabilities document the tests for that functionality will not be executed against the implementation. The exception to this is for the complex value tests that test the capability of the WFS to store features that contain a complex value (an address object) in a property, this option is selected via an option of the test engine. The conformance test report contains a breakdown of the test result for the requests, operations and filter capabilities to show the functionality supported by the server.
For a Basic WFS the server must implement each of the three requests either using KVP GET or XML POST, it is not mandatory to support both methods, except for GetCapabilities where KVP GET must be supported.
For a Transactional and Locking WFS the server must implement the requests using XML POST, KVP GET is not supported in the test suite.
For a Locking WFS the server can implement either the LockFeature or GetFeatureWithLock requests, it is not mandatory to support both requests.
For the GetFeature tests an implementation is not required to support all the filter operations defined in the specification. The server must support the FeatureId filter operation and can optionally support the other filter operations. The server must also support the handling of property names and output formats as specified by the specification, only GML2 is required for conformance testing.
The tests for spatial data and operations use the six geometries (Point, LineString, Polygon, MultiPoint, MultiLineString & MultiPolygon) defined in GML 2.1.2 and the eleven spatial operators (BBOX, Beyond, Contains, Crosses, Disjoint, DWithin, Equals, Intersects, Overlaps, Touches & Within). Note the DWithin operator is allowed in the capabilities document although it was accidentally excluded from the schema in the specification. The tests perform between 2-3 tests per operator, geometry combination, a full test of the accuracy of the spatial operations is outside the scope of the conformance tests.
The test scripts use three schemas and namespaces for the test data: dataFeatures.xsd, geometryFeatures.xsd and complexFeatures.xsd. The first is required for all tests, the second for the spatial filter operations and the last has a property with a complex value and is only required if the option is selected when running the tests. Namespaces are inherent in GML application schemas and the use of namespaces is required by the test scripts. If an implementation only supports a single namespace at a time the tests scripts can be run once per namespace and the results combined. In this case the conformance report must include a note to this effect.
Specification | Web Feature Service 1.0.0 |
Product | Acme WFS 2.3 |
Date | 28 June 2003 |
The following table summarises the test results for the server.
Profile | Result | # Tests Run | # Tests Failed | # Tests |
---|---|---|---|---|
WFS Basic | 426 | |||
WFS Transactional | 52 | |||
WFS Locking | 17 |
The result column contains either 'Passed', 'Failed' or 'Not supported'. The result is 'Passed' if an implementation does not fail any tests for the requests and requests and functionality the server supports in that class, if any tests fail the result for the class will be 'Failed'. If the server does not support any requests in the class the result is 'Not supported'.
The #Tests run column indicates how many of the available tests (# Tests) were run within each class, an implementation can be conformant even if it does not support all the functionality described in the specification for that class. The next section breaks down the summary into more detail by functionality.
The following tables show the breakdown of the number of tests passed verses the number of tests run for each piece of functionality tested for each request and request method. If the server did not advertise the feature the number of tests will contain 'N/A'.
Table A.1. Basic WFS Test results
Profile | Result | # KVP Requests | # XML Requests | # Total |
---|---|---|---|---|
GetCapabilities | /8 | /8 | /16 | |
DescribeFeatureType | /9 | /9 | /18 | |
GetFeature - basic | /10 | /10 | /20 | |
GetFeature - complex values | /9 | /9 | /18 | |
GetFeature - arithmetic operators | /4 | /4 | /8 | |
GetFeature - comparison operators | /18 | /18 | /36 | |
GetFeature - like operator | /1 | /1 | /2 | |
GetFeature - between operator | /2 | /2 | /4 | |
GetFeature - null check operator | /4 | /4 | /8 | |
GetFeature - logical operators | /10 | /10 | /20 | |
GetFeature - BBOX operator | /18 | /18 | /38 | |
GetFeature - Beyond operator | /12 | /12 | /24 | |
GetFeature - Contains operator | /12 | /12 | /24 | |
GetFeature - Crosses operator | /12 | /12 | /24 | |
GetFeature - Disjoint operator | /12 | /12 | /24 | |
GetFeature - DWithin operator | /12 | /12 | /24 | |
GetFeature - Equals operator | /12 | /12 | /24 | |
GetFeature - Intersects operator | /12 | /12 | /24 | |
GetFeature - Overlaps operator | /12 | /12 | /24 | |
GetFeature - Touches operator | /12 | /12 | /24 | |
GetFeature - Within operator | /12 | /12 | /24 |
Table A.2. Transactional WFS Test results
Profile | Result | # KVP Requests | # XML Requests | # Total |
---|---|---|---|---|
GetCapabilities | /4 | /4 | /8 | |
Transaction - insert | N/A | /3 | /3 | |
Transaction - update | N/A | /3 | /3 | |
GetFeature - delete | N/A | /3 | /3 |
Table A.3. Locking WFS Test results
Profile | Result | # KVP Requests | # XML Requests | # Total |
---|---|---|---|---|
GetCapabilities | /4 | /4 | /8 | |
LockFeature | N/A | /26 | /26 | |
GetFeatureWithLock | N/A | /22 | /22 |