OGC logo

Annex A - Abstract Test Suite for the Sensor Observation Service 1.0

Scott Fairgrieve
Editor
Northrop Grumman IT TASC
Thomas Ingold
Northgrop Grumman IT TASC
Walter C. Rizzardi
Northgrop Grumman IT TASC
Alexander C. Walkowski
Institute for Geoinformatics, University of Muenster
Revision History
Revision 0.1 2007-10-2
Updated to adopt standard ATS structure (ISO 19105). Included ATS cases from the ATS developed for OWS Common by Richard Martell.
Revision 0.0 2007-09-27
Initial draft.

Overview

This document is an abstract test suite (ATS): a compendium of test assertions applicable to all implementations of the Sensor Observation Service specification. An ATS provides a basis for developing an executable test suite (ETS) to verify that the implementation under test (IUT) conforms to all relevant functional specifications.

The abstract test cases (assertions) are organized into test groups that correspond to distinct conformance classes or sets of capabilities defined in the SOS v1.0 specification [OGC 06-009r5]. The following mandatory (core profile) test groups are defined:

  1. Level 1 (Core) - Provides tests for the core, mandatory operations of the SOS

Source documents

What is tested


Test Data


Namespaces


Schemas


Table of Contents

  1. OWS
  2. General Module
  3. Core Module

1. OWS

Purpose

The OWS test group includes assertions that are common to all OGC Web Service (OWS) implementations. The component test cases shall apply to all services based on the OWS 1.0 specification (OGC 05-008).

List of Tables

1.1. Client error
1.2. Content-Type response header
1.3. KVP parameter names
1.4. GetCapabilities request
1.5. GetCapabilities - Exceptions
1.6. GetCapabilities - AcceptVersions parameter
1.7. GetCapabilities - Sections parameter
1.8. GetCapabilities - AcceptFormats parameter

Table 1.1. Client error

Test case identifier OWS.ClientError
Test purpose

All of the following assertions must hold for the response to an invalid request:

  1. the response entity is a valid exception report having <ows:ExceptionReport> as the document element;

  2. the value of the exceptionCode attribute specifies the appropriate code value.

Test method Check the content of the response. Pass if all assertions hold; fail otherwise.
Reference
Test type Capability

Table 1.2. Content-Type response header

Test case identifier OWS.ContentType
Test purpose The Content-Type entity header correctly identifies the media type of the message body.
Test method Check the value of the Content-Type entity header. Pass if the field value correctly identifies the media type of the message body; fail otherwise.
Reference
Test type Capability

Table 1.3. KVP parameter names

Test case identifier OWS.CaseInsensitiveKvpNames
Test purpose Parameter names in a KVP-encoded request are handled in a case-insensitive manner.
Test method Check the handling of parameter names in KVP-encoded requests (GET, POST with "application/x-www-form-urlencoded" content type). Pass if the expected response is produced when upper-, lower-, and mixed-case parameter names are provided; fail otherwise.
Reference
Test type Capability

Table 1.4. GetCapabilities request

Test case identifier OWS.GetCapabilities
Test purpose The GetCapabilities request is implemented.
Test method Verify that the GetCapabilities request is implemented and supports the GET and/or POST method bindings.
Reference
Test type Capability

Table 1.5. GetCapabilities - Exceptions

Test case identifier OWS.GetCapabilities-Exceptions
Test purpose

An exception report is returned in response to any of the following conditions:

  1. missing required request parameter

  2. invalid request parameter value

  3. version negotiation failed

  4. invalid update sequence

  5. an error occurs that prevents successful request processing

Test method Pass if any of the relevant circumstances apply and the response message body contains a valid exception report; fail otherwise.
Reference
Test type Capability

Table 1.6. GetCapabilities - AcceptVersions parameter

Test case identifier OWS.GetCapabilities-AcceptVersions
Test purpose

The response to a GetCapabilities request containing the AcceptVersions parameter must satisfy the applicable assertion:

  1. it contains a complete representation of the capabilities document corresponding to the first supported version in the list;

  2. if no version in the list is supported, it contains an exception with exceptionCode="VersionNegotiationFailed";

  3. if no value is specified or the parameter is not included, it contains the latest available capabilities document.

Test method Verify processing of the AcceptVersion request parameter. Pass if the relevant assertion holds; fail otherwise.
Reference
Test type Capability

Table 1.7. GetCapabilities - Sections parameter

Test case identifier OWS.GetCapabilities-Sections
Test purpose

The response to a GetCapabilities request containing the Sections parameter must satisfy the applicable assertion:

  1. if one or more section names are provided, it contains an abbreviated capabilities document that includes only those child elements with matching local names;

  2. if no value is provided, it contains a minimal capabilities document that omits all optional child elements;

  3. if not specified, it contains a complete representation of the capabilities document.

Test method Verify processing of the Sections request parameter. Pass if the relevant assertion holds; fail otherwise.
Reference
Test type Capability

Table 1.8. GetCapabilities - AcceptFormats parameter

Test case identifier OWS.GetCapabilities-AcceptFormats
Test purpose

The response to a GetCapabilities request containing the AcceptFormats parameter must satisfy the applicable assertion:

  1. if one or more preferred formats are supplied, it contains a capabilities document in the supported format (media type) that is most preferred;

  2. if no value is supplied or if none of the supplied media types are supported, it contains the default (XML) representation.

Test method Verify processing of the AcceptFormats request parameter. Pass if the relevant assertion holds; fail otherwise.
Reference
Test type Capability

2. General

Purpose

The General test group includes general assertions that relate to all operations of an SOS implementation.

List of Tables

2.1. Invalid Request
2.2. Valid Response
Table 2.1. General - Invalid Request
Test case identifier SOS.General-InvalidRequest
Test purpose

Sending a request that is non-conformant to a schema associated with an SOS operation causes the server to return a valid error report message with an exceptionCode value of InvalidRequest.

Test method Send several test documents that are invalid according to the schemas associated with some of the SOS operations (i.e. the mandatory operations). Pass if the service returns a valid exception message with an exceptionCode value of InvalidRequest; fail otherwise.
Reference
Test type Capability
Table 2.2. General - Valid Response
Test case identifier SOS.General-ValidResponse
Test purpose

A response entity is schema-valid.

Test method Check the content of the response. Pass if the response is schema-valid; fail otherwise.
Reference
Test type Capability

3. Core

Purpose

The Core test group includes tests for the core, mandatory operations of the SOS. These operations include GetCapabilities, DescribeSensor, and GetObservation. Operations defined as optional in the SOS v1.0 specification are not tested. These operations include RegisterSensor, InsertObservation, GetObservationById, GetResult, GetFeatureOfInterest, GetFeatureOfInterestTime, DescribeFeatureType, DescribeObservationType, and DescribeResultModel.

List of Tables

3.1. GetCapabilities - KVP Request Parameter Handling
3.2. GetCapabilities - KVP Request Service Parameter Handling
3.3. GetCapabilities - KVP Request Request Parameter Handling
3.4. GetCapabilities - OperationsMetadata Mandatory Operations
3.5. GetCapabilities - OperationsMetada Optional Operations
3.6. GetCapabilities - Response Contents Valid Time
3.7. GetCapabilities - Response Contents Valid Procedure
3.8. GetCapabilities - Response Contents Valid ObservedProperty
3.9. GetCapabilities - Response Contents Valid ResponseFormat
3.10. GetCapabilities - Response Contents Valid ResultModel
3.11. DescribeSensor - Request Invalid MIME Type
3.12. DescribeSensor - Request Invalid Procedure
3.13. DescribeSensor - Response Matching ResponseFormat
3.14. DescribeSensor - Response Matching Procedure
3.15. GetObservation - Request Invalid SRSName
3.16. GetObservation - Request Invalid Offering
3.17. GetObservation - Request Invalid EventTime
3.18. GetObservation - Request Invalid Procedure
3.19. GetObservation - Request Invalid ObservedProperty
3.20. GetObservation - Request Invalid FeatureOfInterest
3.21. GetObservation - Request Invalid Result
3.22. GetObservation - Request Invalid ResponseFormat
3.23. GetObservation - Request Invalid ResultModel
3.24. GetObservation - Request Invalid ResponseMode
3.25. GetObservation - Response Matching SRS Data
3.26. GetObservation - Response Matching Procedure Data
3.27. GetObservation - Response Matching ObservedProperty Data
3.28. GetObservation - Response Advertised EventTime Data
3.29. GetObservation - Response Matching EventTime Data
3.30. GetObservation - Response Matching FeatureOfInterest Data
3.32. GetObservation - Response Matching ResponseFormat Data
3.33. GetCapabilities - Response Contents Valid ResponseMode
Table 3.1. GetCapabilities - KVP Request Parameter Handling
Test case identifier SOS.GetCapabilities-KVPRequestParameterHandling
Test purpose The server returns a valid error report message with an exceptionCode of MissingParameterValue when mandatory parameters are missing from the request.
Test method Check that the server returns a valid error report message with an exception code of MissingParameterValue when mandatory parameters are missing from the request. Pass if the server returns a valid error report message with an exception code of MissingParameterValue; fail otherwise.
Reference
Test type Capability
Table 3.2. GetCapabilities - Request service parameter handling
Test case identifier SOS.GetCapabilities-KVPRequestServiceParameterHandling
Test purpose The server returns a valid error report message with an exceptionCode of InvalidParameterValue when the service key value is not SOS.
Test method Check the server returns a valid error report message with an exception code of InvalidParameterValue when the service key value is not SOS. Pass if the server returns a valid error report message with an exception code of InvalideParameterValue; fail otherwise.
Reference
Test type Capability
Table 3.3. GetCapabilities - KVP Request Request Parameter Handling
Test case identifier SOS.GetCapabilities-KVPRequestRequestParameterHandling
Test purpose The server returns a valid error report message with an exceptionCode of InvalidRequest when the request key value is not GetCapabilities.
Test method Check the server returns a valid error report message with an exceptionCode of InvalidRequest when the request key value is not SOS. Pass if the server returns a valid error report message with an exception code of InvalideParameterValue; fail otherwise.
Reference
Test type Capability
Table 3.4. GetCapabilities - OperationsMetadata Mandatory Operations
Test case identifier SOS.GetCapabilities-OperationMetadataMandatoryOperations
Test purpose The OperationsMetadata section lists the mandatory operations of the SOS.
Test method Check that the OperationsMetadata section lists the mandatory operations of the SOS. Pass if assertion holds; fail otherwise.
Reference
Test type Capability
Table 3.5. GetCapabilities - OperationsMetadata Optional Operations
Test case identifier SOS.GetCapabilities-OperationMetadataOptionalOperations
Test purpose Any non-mandatory operations advertised in the OperationsMetadata section have valid SOS method names.
Test method Check that any non-mandatory operations advertised in the OperationsMetadata section have valid SOS method names. Pass if assertion holds; fail otherwise.
Reference
Test type Capability
Table 3.6. GetCapabilities - Response Contents Valid Time
Test case identifier SOS.GetCapabilities-ResponseContentsValidTime
Test purpose The values in the time element for each ObservationOffering are valid time values (ISO 8601) or are valid named times (i.e. indeterminate, now, etc.). If a time period is specified, then the beginTime must come before the endTime or be equal to the endTime.
Test method Check that the values in the time element for each ObservationOffering are valid time values (ISO 8601) or are valid named times (i.e. indeterminate, now, etc.). If a time period is specified, then the beginTime must come before the endTime or be equal to the endTime. Pass if time the values in the time element are valid time values; fail otherwise.
Reference
Test type Capability
Table 3.7. GetCapabilities - Response Contents Valid Procedure
Test case identifier SOS.GetCapabilities-ResponseContentsValidProcedure
Test purpose The values in the procedure element(s) for each ObservationOffering contain a value and are valid URNs.
Test method Check that the values in the procedure element(s) for each ObservationOffering contain a value and are valid URNs according to the OGC URN scheme. Pass if values in the procedure element(s) contain a value and are valid URNs; fail otherwise.
Reference
Test type Capability
Table 3.8. GetCapabilities - Response Contents Valid ObservedProperty
Test case identifier SOS.GetCapabilities-ResponseContentsValidObservedProperty
Test purpose The values in the observedProperty element(s) for each ObservationOffering contain a value and are valid URNs. See document OGC 05-010 for correct formatting of definition URN.
Test method Check that the values in the observedProperty element(s) for each ObservationOffering contain a value and are valid URNs according to the OGC URN scheme. Pass if the values in the observedProperty element(s) contain a value and are valid URNs; fail otherwise.
Reference
Test type Capability
Table 3.9. GetCapabilities - Response Contents Valid ResponseFormat
Test case identifier SOS.GetCapabilities-ResponseContentsValidResponseFormat
Test purpose The values in the responseFormat element(s) for each ObservationOffering contain a value and are valid MIME types.
Test method Check that the values in the responseFormat element(s) for each ObservationOffering contain a value and are valid MIME types. Pass if assertions hold; fail otherwise.
Reference
Test type Capability
Table 3.10. GetCapabilities - Response Contents Valid ResultModel
Test case identifier SOS.GetCapabilities-ResponseContentsValidResultModel
Test purpose If an ObservationOffering provides the resultModel element, then the resultModel element must be in the om:Observation substitution group and is typically om:Observation or a specialized extension. Value must be namespace-qualified.
Test method Check if an ObservationOffering provides the resultModel element, then the resultModel element must be in the om:Observation substitution group and is typically om:Observation or a specialized extension. Value must be namespace-qualified. Pass if assertions hold; fail otherwise.
Reference
Test type Capability
Table 3.11. DescribeSensor - Request Invalid MIME Type
Test case identifier SOS.DescribeSensor-RequestInvalidMIMEType
Test purpose Supplying an invalid MIME type (not advertised in the capabilities document) or no MIME type for the outputFormat produces a valid error report message.
Test method Check that supplying an invalid MIME type (not advertised in the capabilities document) or no MIME type for the outputFormat produces a valid error report message. Pass if an invalid MIME type or no MIME type produces a valid error report; fail otherwise.
Reference
Test type Capability
Table 3.12. DescribeSensor - Request Invalid Procedure
Test case identifier SOS.DescribeSensor-RequestInvalidProcedure
Test purpose Supplying an invalid procedure (not advertised in the capabilities document) or no procedure for the procedure produces a valid error report message.
Test method Check that supplying an invalid Procedure (not advertised in the capabilities document) or no Procedure for the Procedure produces a valid error report message. Pass if an invalid Procedure or no Procedure produces a valid error report message; fail otherwise.
Reference
Test type Capability
Table 3.13. DescribeSensor - Response Matching Response Format
Test case identifier SOS.DescribeSensor-ResponseMatchingResponseFormat
Test purpose The format of the response document matches the outputFormat specified in the request and is valid according to the outputFormat schema.
Test method Check that the format of the response document matches the outputFormat specified in the request and is valid according to the outputFormat schema. Pass if assertion holds; fail otherwise.
Reference
Test type Capability
Table 3.14. DescribeSensor - Response Matching Procedure
Test case identifier SOS.DescribeSensor-ResponseMatchingProcedure
Test purpose The unique identifier in the response document matches the procedure specified in the request.
Test method Check that the unique identifier in the response document matches the Procedure specified in the request. Pass if assertion holds; fail otherwise.
Reference
Test type Capability
Table 3.15. GetObservation - Request Invalid SRSName
Test case identifier SOS.GetObservation-RequestInvalidSRSName
Test purpose An invalid srsName in the request produces a valid error message.
Test method Check that an invalid srsName in the request produces a valid error message. Pass if an invalid srsName produces a valid error message; fail otherwise.
Reference
Test type Capability
Table 3.16. GetObservation - Request Invalid Offering
Test case identifier SOS.GetObservation-RequestInvalidOffering
Test purpose An invalid offering in the request produces a valid error message.
Test method Check that an invalid offering in the request produces a valid error message. Pass if an invalid offering in the request produces a valid error message; fail otherwise.
Reference
Test type Capability
Table 3.17. GetObservation - Request Invalid EventTime
Test case identifier SOS.GetObservation-RequestInvalidEventTime
Test purpose An invalid eventTime in the request produces a valid error message.
Test method Check that an invalid eventTime in the request produces a valid error message. Pass if an invalid eventTime in the request produces a valid error message; fail otherwise.
Reference
Test type Capability
Table 3.18. GetObservation - Request Invalid Procedure
Test case identifier SOS.GetObservation-RequestInvalidProcedure
Test purpose An invalid procedure in the request produces a valid error message.
Test method Check that an invalid procedure in the request produces a valid error message. Pass if an invalid procedure in the request produces a valid error message; fail otherwise.
Reference
Test type Capability
Table 3.19. GetObservation - Request Invalid Observed Property
Test case identifier SOS.GetObservation-RequestInvalidObservedProperty
Test purpose Supplying one or more invalid observedProperty values in the request produces a valid error message.
Test method Check that supplying one or more invalid observedProperty values in the request produces a valid error message. Pass if an invalid observedProperty value produces a valid error message; fail otherwise.
Reference
Test type Capability
Table 3.20. GetObservation - Request Invalid Feature Of Interest
Test case identifier SOS.GetObservation-RequestInvalidFeatureOfInterest
Test purpose Supplying one or more invalid featureOfInterest values in the request produces a valid error message.
Test method Check that supplying one or more invalid featureOfInterest values in the request produces a valid error message. Pass if one or more invalid featureOfInterest values in the request produces a valid error message; fail otherwise.
Reference
Test type Capability
Table 3.21. GetObservation - Request Invalid Result
Test case identifier SOS.GetObservation-RequestInvalidResult
Test purpose Providing an invalid value in the result field produces a valid error message.
Test method Check that providing an invalid value in the result field produces a valid error message. Pass if a valid error message is produced from providing an invalid value in the result field; fail otherwise.
Reference
Test type Capability
Table 3.22. GetObservation - Request Invalid Response Format
Test case identifier SOS.GetObservation-RequestInvalidResponseFormat
Test purpose Providing an invalid outputFormat value produces a valid error message.
Test method Check that providing an invalid outputFormat value produces a valid error message. Pass if an invalid outputFormat produces a valid error message; fail otherwise.
Reference
Test type Capability
Table 3.23. GetObservation - Request Invalid Result Model
Test case identifier SOS.GetObservation-RequestInvalidResultModel
Test purpose Providing an invalid resultModel in the request produces a valid error message.
Test method Check that providing an invalid resultModel in the request produces a valid error message. Pass if providing an invalid resultModel in the request produces a valid error message; fail otherwise.
Reference
Test type Capability
Table 3.24. GetObservation - Request Invalid Response Mode
Test case identifier SOS.GetObservation-RequestInvalidResponseMode
Test purpose Providing an invalid responseMode in the request produces a valid error message.
Test method Check that providing an invalid responseMode in the request produces a valid error message. Pass if providing an invalid responseMode in the request produces a valid error mesage; fail otherwise.
Reference
Test type Capability
Table 3.25. GetObservation - Response Matching SRS Data
Test case identifier SOS.GetObservation-ResponseMatchingSRSData
Test purpose If an srsName value is supplied in the request, then the srs of the response data is valid according to the format specified by the requested srsName.
Test method Check if a srsName value is supplied in the request, then the srs of the response data is valid according to the format specified by the requested srsName. Pass if assertion holds; fail otherwise.
Reference
Test type Capability
Table 3.26. GetObservation - Response Matching Procedure Data
Test case identifier SOS.GetObservation-ResponseMatchingProcedureData
Test purpose The procedure value(s) in the response match or a subset of the procedure value(s) specified in the request.
Test method Check that the procedure value(s) in the response match or are a subset of the procedure value(s) specified in the request. Pass if assertion holds; fail otherwise.
Reference
Test type Capability
Table 3.27. GetObservation - Response Matching Observed Property Data
Test case identifier SOS.GetObservation-ResponseMatchingObservedPropertyData
Test purpose The observedProperty value(s) in the response match or are a subset of the observedProperty value(s) specified in the request.
Test method Check the observedProperty value(s) in the response match or are a subset of the observedProperty value(s) specified in the request. Pass if assertion holds; fail otherwise.
Reference
Test type Capability
Table 3.28. GetObservation - Response Advertised Event Time Data
Test case identifier SOS.GetObservation-ResponseAdvertisedEventTimeData
Test purpose The server returns one or more observations when the advertised eventTime for the requested offering is supplied in a valid request.
Test method Check that the server returns one or more observations when the advertised eventTime for the requested offering is supplied in a valid request. Pass if one more observations are returned when supplied a valid request; fail otherwise.
Reference
Test type Capability
Table 3.29. GetObservation - Response Matching Event Time Data
Test case identifier SOS.GetObservation-ResponseMatchingEventTimeData
Test purpose The time value(s) in the response data fall within the requested eventTime.
Test method Check the time value(s) in the response data fall within the requested eventTime. Pass if assertion holds; fail otherwise.
Reference
Test type Capability
Table 3.30. GetObservation - Response Matching Feature of Interest Data
Test case identifier SOS.GetObservation-ResponseMatchingFeatureOfInterestData
Test purpose The featureOfInterest value(s) in the response match or fall within the spatial extent identified in the featureOfInterest value specified in the request.
Test method Check the featureOfInterest value(s) in the response match or fall within the spatial extent identified in the featureOfInterest value specified in the request. Pass if assertion holds; fail otherwise.
Reference
Test type Capability
Table 3.32. GetObservation - Response Matching Response Format Data
Test case identifier SOS.GetObservation-ResponseMatchingResponseFormatData
Test purpose The format of the response data matches the format supplied in the responseFormat parameter of the request.
Test method Check that the format of the response data matches the format supplied in the responseFormat parameter of the request. Pass if assertion holds; fail otherwise.
Reference
Test type Capability
Table 3.33. GetCapabilities - Response Contents Valid ResponseMode
Test case identifier SOS.GetCapabilities-ResponseContentsValidResponseMode
Test purpose If an ObservationOffering provides the responseMode element, then the responseMode element contains a value that is one of the valid responseMode values.
Test method Check if an ObservationOffering provides the responseMode element, then the responseMode element contains a value that is one of the valid responseMode values. Pass if assertions hold; fail otherwise.
Reference
Test type Capability