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:
- Level 1 (Core) - Provides tests for the core, mandatory operations of the SOS
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).
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:
-
the response entity is a valid
exception report having <ows:ExceptionReport> as the document
element;
-
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:
-
missing required
request parameter
-
invalid request
parameter value
-
version negotiation
failed
-
invalid update
sequence
-
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:
-
it contains a
complete representation of the capabilities document corresponding
to the first supported version in the list;
-
if no version
in the list is supported, it contains an exception with
exceptionCode ="VersionNegotiationFailed";
-
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:
-
if one or more
section names are provided, it contains an abbreviated capabilities
document that includes only those child elements with matching
local names;
-
if no value is
provided, it contains a minimal capabilities document that omits
all optional child elements;
-
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:
-
if one or more
preferred formats are supplied, it contains a capabilities document
in the supported format (media type) that is most preferred;
-
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 |
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.
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 |