WFS 2.0 (ISO 19142:2010) Conformance Test Suite

Scope

This executable test suite (ETS) checks WFS 2.0 implementations for conformance to the set of specifications depicted in Figure 1. Conformance testing is a kind of "black box" testing that examines externally visible characteristics or behaviors of the SUT and is independent of any implementation details.

Set of relevant specifications
Figure 1 - Relevant specifications

Several fundamental conformance levels are defined in ISO 19142:

Simple WFS
Implements the following operations: GetCapabilities, DescribeFeatureType, ListStoredQueries, DescribeStoredQueries, and the GetFeature operation with at least the StoredQuery action (GetFeatureById).
Basic WFS
As for Simple WFS, plus the GetFeature operation with the Query action and the GetPropertyValue operation.
Transactional WFS
As for Basic WFS, plus the Transaction operation.
Locking WFS
As for Transactional WFS, plus at least one of the GetFeatureWithLock or LockFeature operations.

Test requirements

The documents listed below stipulate requirements that must be satisfied by a conforming implementation.

The test suite is "schema-aware" in the sense that the WFS under test does not need to be loaded with specialized test data. However, the following preconditions must be satisfied:

  1. The GML application schema meets the requirements of the conformance class concerned with defining features and feature collections (ISO 19136, A.1.4).
  2. Data are available for at least one feature type advertised in the capabilities document.

A feature identifier may be supplied for the purpose of verifying the behavior of the GetFeatureById stored query. If this test run parameter is missing or does not identify an available feature instance, a "Simple WFS" implementation must also implement the GetFeatureByType stored query (see the definition below). The parameter may be omitted if the WFS under test implements the "Basic WFS" conformance class.

<wfs:StoredQueryDefinition id="urn:ogc:def:query:OGC-WFS::GetFeatureByType"
  xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <wfs:Abstract>
    A parameterized GetFeature request that returns a collection of features by type name.
  </wfs:Abstract>
  <wfs:Parameter name="typeName" type="xs:QName">
    <wfs:Abstract>A QName specifying a feature type name (required); a corresponding namespace 
    binding must also be present.</wfs:Abstract>
  </wfs:Parameter>
  <wfs:Parameter name="startIndex" type="xs:nonNegativeInteger">
    <wfs:Abstract>Default value is 0</wfs:Abstract>
  </wfs:Parameter>
  <wfs:Parameter name="count" type="xs:nonNegativeInteger">
    <wfs:Abstract>Optional</wfs:Abstract>
  </wfs:Parameter>
  <wfs:QueryExpressionText returnFeatureTypes="gml:AbstractFeature"
    language="http://schemas.opengis.net/wfs/2.0/wfs.xsd#xmlns(wfs=http://www.opengis.net/wfs/2.0)xscd(/wfs:GetFeature)">
    <wfs:GetFeature startIndex="${startIndex}" count="${count}">
      <wfs:Query typeNames="tns:${typeName}"/>
    </wfs:GetFeature>
  </wfs:QueryExpressionText>
</wfs:StoredQueryDefinition>
    

Test coverage

Several optional conformance classes are not covered by the current test suite. The following capabilities are not tested:

How to run the tests

The test suite may be run in any of the following environments:

The test run arguments are summarized in Table 1. The Obligation descriptor can have the following values: M (mandatory), O (optional), or C (conditional).

Table 1 - Test run arguments
Name Value domain Obligation Description
wfs URI M A URI that refers to a representation of the service capabilities document. This document does not need to be obtained from the service under test (SUT), but it must describe the SUT. Ampersand ('&') characters appearing within a query parameter value must be percent-encoded as %26.
fid NCName O An identifier that matches the @gml:id attribute value of an available feature instance (may be omitted for "Basic WFS" implementations).

Release notes

2.0-r12 (2013-11-14)

This release includes the following changes:

2.0-r11 (2013-10-29)

This release includes the following changes:

2.0-r10 (2013-09-19)

This is a maintenance release; it includes the following changes:

2.0-r9 (2013-08-30)

This is a maintenance release; it includes the following fixes and enhancements:

2.0-r8 (2013-08-27)

This is a maintenance release; it includes the following fixes:

2.0-r7 (2013-07-24)

This is a maintenance release; it includes the following fixes and enhancements:

2.0-r6 (2013-07-16)

This is a maintenance release; it includes the following enhancements and fixes:

2.0-r5 (2013-07-15)

This is a maintenance release; it includes the following changes:

2.0-r4 (2013-07-04)

This is a maintenance release. The following issues were resolved: