Conformance Test Suite: NSG WFS 2.0 Profile


This executable test suite (ETS) verifies the conformance of the implementation under test (IUT). Conformance testing is a kind of “black box” testing that examines the externally visible characteristics or behaviors of the IUT while disregarding any implementation details.

Several conformance classes are defined in the principal specifications; the ones listed below are covered by this test suite:

  • NSG Basic WFS Conformance Class
    • The service shall comply with the DGIWG Basic WFS conformance class as extended and restricted by this specification.
  • NSG Locking WFS
    • The service shall comply with the DGIWG Locking (Transactional) WFS conformance class as extended and restricted by this specification.
  • Inheritance
    • The service shall implement the schema-element() function for XPath expressions.
  • Remote Resolve
    • The service shall implement the ability to resolve remote resource references.
  • NSG Manage Stored Queries
    • The service shall implement the CreateStoredQuery and the DropStoredQuery operations.
  • SOAP
    • The service shall implement XML encoded requests and results within SOAP Envelopes.
  • Enhanced Paging
    • The service shall implement the ability to return the page specified by the user from a set of response features or values.

Test coverage

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

  • Inheritance
  • Remote resolve

As a request timeout cannot be produced by a test suite, tests for following requirements are restricted:

  • Requirement 12 - OperationProcessingTimeout is not tested.
  • Requirement 15 - Is not tested as request timeout is required.


  • Requirements 22 and 24 are included in NSG Basic WFS Conformance Class test group. However, the specification states that these two requirements should be included in NSG Locking WFS Conformance Class test group. Due to technical reasons this is not possible.

Test suite structure

The test suite definition file (testng.xml) is located in the root package, org.opengis.cite.wfs20.nsg. A conformance class corresponds to a <test> element, each of which includes a set of test classes that contain the actual test methods. The general structure of the test suite is shown in Table 1.

Table 1 - Test suite structure
Conformance class Test packages and classes
  • org.opengis.cite.iso19142.SuitePreconditions
All GML application schemas
  • org.opengis.cite.iso19136.general.XMLSchemaTests
  • org.opengis.cite.iso19136.general.GeneralSchemaTests
  • org.opengis.cite.iso19136.general.ModelAndSyntaxTests
  • org.opengis.cite.iso19136.general.ComplexPropertyTests
GML application schemas defining features
  • org.opengis.cite.iso19136.components.FeatureComponentTests
NSG Basic WFS Conformance Class
  • org.opengis.cite.iso19142.simple
  • org.opengis.cite.iso19142.basic
  • org.opengis.cite.iso19142.basic.filter
  • org.opengis.cite.iso19142.basic.filter.temporal
  • org.opengis.cite.iso19142.basic.filter.spatial
  • org.opengis.cite.iso19142.paging
  • org.opengis.cite.iso19142.versioning
  • org.opengis.cite.iso19142.joins.SpatialJoinTests
  • de.latlon.ets.wfs20.core.dgiwg.testsuite.getcapabilities.GetCapabilitiesKeywordTest
  • de.latlon.ets.wfs20.core.dgiwg.testsuite.getcapabilities.GetCapabilitiesVersionTest
  • de.latlon.ets.wfs20.core.dgiwg.testsuite.getcapabilities.GetCapabilitiesFeatureTypeElementsTest
  • de.latlon.ets.wfs20.core.dgiwg.testsuite.describestoredqueries.DescribeStoredQueriesElementsTest
  • de.latlon.ets.wfs20.core.wfs20.testsuite.basic.filter.PropertyIsBetweenOperatorTests
  • de.latlon.ets.wfs20.core.wfs20.testsuite.spatialfilter.SpatialFilterTest
  • de.latlon.ets.wfs20.core.wfs20.testsuite.spatialfilter.ExtendedSpatialFilterTest
  • de.latlon.ets.wfs20.core.wfs20.testsuite.temporalfilter.TemporalFilterTest
  • de.latlon.ets.wfs20.core.wfs20.testsuite.temporalfilter.ExtendedTemporalFilterTest
  • de.latlon.ets.wfs20.core.dgiwg.testsuite.getcapabilities.GetCapabilitiesSrsTest
  • org.opengis.cite.wfs20.nsg.testsuite.getcapabilities.CapabilitiesServiceBindings
  • org.opengis.cite.wfs20.nsg.testsuite.getcapabilities.ServiceConstraints (partly)
  • org.opengis.cite.wfs20.nsg.testsuite.getcapabilities.OperationConstraints (partly)
  • org.opengis.cite.wfs20.nsg.testsuite.describefeaturetype.DescribeFeatureTypeOutputFormat
  • org.opengis.cite.wfs20.nsg.testsuite.getfeature.GetFeatureOutputFormat
  • org.opengis.cite.wfs20.nsg.testsuite.getfeaturewithlock.GetFeatureWithLockOutputFormat
  • org.opengis.cite.wfs20.nsg.testsuite.getpropertyvalue.GetPropertyValueOutputFormat
  • org.opengis.cite.wfs20.nsg.testsuite.pageresults.PageResultsOutputFormat
  • org.opengis.cite.wfs20.nsg.testsuite.featureinstance.InstanceIdentifier
  • org.opengis.cite.wfs20.nsg.testsuite.getfeature.CountParameter
  • org.opengis.cite.wfs20.nsg.testsuite.getcapabilities.CapabilitiesAbstract
  • org.opengis.cite.wfs20.nsg.testsuite.getcapabilities.CapabilitiesProfile
  • org.opengis.cite.wfs20.nsg.testsuite.getcapabilities.CapabilitiesTimeout
  • org.opengis.cite.wfs20.nsg.testsuite.getfeature.GetFeatureWIthResultTypeIndex
  • org.opengis.cite.wfs20.nsg.testsuite.getcapabilities.AccessConstraints
NSG Locking WFS
  • org.opengis.cite.iso19142.transaction.TransactionCapabilitiesTests
  • org.opengis.cite.iso19142.transaction.Update
  • org.opengis.cite.iso19142.transaction.InsertTests
  • org.opengis.cite.iso19142.transaction.ReplaceTests
  • org.opengis.cite.iso19142.transaction.DeleteTests
  • org.opengis.cite.iso19142.locking.LockingCapabilitiesTests
  • org.opengis.cite.iso19142.locking.LockFeatureTests
  • org.opengis.cite.iso19142.locking.GetFeatureWithLockTests
  • org.opengis.cite.wfs20.nsg.testsuite.getcapabilities.ServiceConstraints (partly)
Inheritance Not tested yet
Remote Resolve
  • org.opengis.cite.wfs20.nsg.testsuite.getcapabilities.OperationConstraints (partly)
NSG Manage Stored Queries
  • org.opengis.cite.iso19142.querymgmt
Enhanced Paging
  • org.opengis.cite.wfs20.nsg.testsuite.getcapabilities.ServiceConstraints(partly)
  • org.opengis.cite.wfs20.nsg.testsuite.pageresults.PageResults

The Javadoc documentation provides more detailed information about the test methods that constitute the suite.

How to run the tests

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

  • Integrated development environment (IDE): The main Java class is org.opengis.cite.wfs20.nsg.TestNGController.
  • REST API: Submit a request that includes the necessary arguments to the test run controller (/rest/suites/wfs20-nsg/0.2/run).
  • TEAM Engine: Run the CTL script located in the /src/main/ctl/ directory.

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

Table 2 - 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 M An identifier that matches the @gml:id attribute value of an available featureinstance.

Note: A test method is skipped if any preconditions were not satisfied. Test prerequisites are usually checked in a configuration method; the results of these can be viewed in the TestNG report by selecting the “Config” check box.