View Client Basic Browse

Use Browse and BrowseNext Services to navigate through the Server's AddressSpace. Make use of the referenceTypeId and the nodeClassMask to specify the needed References. General checks of BROWSE response parameter values The following checks are performed for all valid parameter tests: Unless stated otherwise, the server returns a Results[*].ContinuationPoint parameter when no further references can be browsed; otherwise, ContinuationPoint is non-null. The following checks are performed for all errors with incorrect parameters tests: None defined. General checks of BROWSENEXT response parameter values The following checks are performed for all valid parameter tests: None defined. The following checks are performed for all errors with incorrect parameters tests: None defined. As a preparation for each test: Browse a valid node (known to contain multiple references) using default parameters and to also use a small RequestedMaxReferencesPerNode value in order to cause paging to occur.


Questions? Contact us
Generated: 31/20/2020 at 15:31:31 p.m.
View Client Basic Browse - 67 Test Cases
Test Case Id Test Type Keywords Test Case Description Test Requirements Expected Result

001

Lab Browse  Perform a basic browse (default parameter values) while specifying a null View (ViewDescription).
Client processes the results correctly and uses them appropriately.

002

Lab Browse  Perform a basic browse (default parameter values) while specifying a specific View version (viewVersion).
Note: Timestamp should be null in this test.
Client correctly specifies the View.
Client processes the results correctly and uses them appropriately.

003

Lab Browse  Perform a basic browse (default parameter values) while specifying a specific View based on a timestamp.
Note: ViewVersion should be 0 in this test.
Client correctly specifies the View.
Client processes the results correctly and uses them appropriately.

004

Lab Browse  Specify multiple nodes to browse while maintaining the default values for View parameter.
Client processes the results correctly and uses them appropriately.

005

Lab Browse  Browse the same node as in (1) with a valid view. The view defines references that are Forward on the nodeToBrowse, and the view defines references that are Inverse on the nodeToBrowse.
Service result = Good. Operation result = Good . Browsed references in results[] includes only those references that are defined in the view.

006

Lab Browse  Browse the same node as in (1) with a valid view. None of the references defined in the view are on the nodeToBrowse (in any direction).
Service result = Good. Operation result = Good. The reference list in results[0] is empty.

007

Lab Browse  Full browse of a valid starting node, requestedMaxReferencesPerNode = 0.
Client processes the results correctly and uses them appropriately.

008

Lab Browse  Full browse of a valid starting node (known to have >2 references), requestedMaxReferencesPerNode = 2.
Client processes the results correctly and uses them appropriately.
Client keeps the continuationPoint for use with BrowseNext.

009

Lab Browse  Full browse of a valid starting node (known to have <2 references), requestedMaxReferencesPerNode = 2.
Client processes the results correctly and uses them appropriately.

010

Lab Browse  With requestedMaxReferencesPerNode = 1, browse at least five nodes.
If the nodes have only one reference, different nodes must be used to complete this test.
Service result = Good. Operation results are Good. Only 1 reference in results[0], and the ContinuationPoints are not null/empty.

011

Lab Browse  Full browse of multiple valid starting nodes (using default parameter values)
Client processes the results correctly and uses them appropriately.

012

Lab Browse  Full browse of a valid starting node, browseDirection = Forward_0.
Client processes the results correctly and uses them appropriately.

013

Lab Browse  Full browse of a valid starting node, browseDirection = Inverse_1.
Client processes the results correctly and uses them appropriately.

014

Lab Browse  Full browse of a valid starting node, browseDirection = Both_2.
Client processes the results correctly and uses them appropriately.

015

Lab Browse  Full browse of a valid starting node (known to have no forward references) while specifying browseDirection = Forward_0.
Client processes the empty results correctly.

016

Lab Browse  Full browse of a valid starting node (known to have no inverse references) while specifying browseDirection = Inverse_1.
Client processes the empty results correctly.

017

Lab Browse  Full browse of a valid starting node, browseDirection = Forward_0, requestedMaxReferencesPerNode = 0, referenceTypeId contains a valid referenceType NodeId.
Client processes the results correctly and uses them appropriately.

018

Lab Browse  Full browse of a valid starting node, browseDirection = Inverse_1, requestedMaxReferencesPerNode = 0, referenceTypeId contains a valid referenceType NodeId.
Client processes the results correctly and uses them appropriately.

019

Lab Browse  Full browse of a valid starting node, browseDirection = Both_2, requestedMaxReferencesPerNode = 0, referenceTypeId contains a valid referenceType NodeId.
Client processes the results correctly and uses them appropriately.

020

Lab Browse  Full browse of a valid starting node, browseDirection = Both_2, requestedMaxReferencesPerNode = 0, referenceTypeId is null (all References are returned).
Client processes the results correctly and uses them appropriately.

021

Lab Browse  Full browse of a valid starting node, browseDirection = Both, requestedMaxReferencesPerNode = 0, referenceTypeId contains a valid referenceType NodeId and includeSubtypes = True.
If the node has no references of the specified type, or no references that differ from the specified type, a different node must be used to complete this test.
Client processes the results correctly and uses them appropriately.

022

Lab Browse  Full browse of a valid starting node, browseDirection = Both, requestedMaxReferencesPerNode = 0, referenceTypeId is a supertype of one or more references associated with browse node, includeSubtypes = True.
If the node has no references of the specified type, or no references that differ from the specified type, a different node must be used to complete this test.
Client processes the results correctly and uses them appropriately.

023

Lab Browse  Full browse of a valid starting node, browseDirection = Both, requestedMaxReferencesPerNode = 0, referenceTypeId contains a valid referenceType NodeId and includeSubtypes = False.
If the node has no references of the specified type, or no references that differ from the specified type, a different node must be used to complete this test.
Client processes the results correctly and uses them appropriately.

024

Lab Browse  Full browse of a valid starting node, browseDirection = Both, requestedMaxReferencesPerNode = 0, referenceTypeId is supertype of one or more references associated with browse node includeSubtypes = False.
If the node has no references of the specified type, or no references that differ from the specified type, a different node must be used to complete this test.
Client processes the results correctly and uses them appropriately.

025

Lab Browse  Full browse of a valid starting node, nodeClassMask=0.
Service result = Good. Operation result = Good. Browsed references in results[] match the results of (1).

026

Lab Browse  Full browse of a valid starting node, nodeClassMask = 0x2 (Variable).
Client processes the results correctly and uses them appropriately.

027

Lab Browse  Full browse of a valid starting node, nodeClassMask = 0x10 (VariableType).
Client processes the results correctly and uses them appropriately.

028

Lab Browse  Full browse of a valid starting node, nodeClassMask = 0x20 (ReferenceType).
Client processes the results correctly and uses them appropriately.

029

Lab Browse  Browse the same node as in (1) with nodeClassMask = 0x80 (Views).
If the node has no Views, a different node must be used to complete this test.
If the server has no views, this test passes without needing to be run.
Client processes the results correctly and uses them appropriately.

030

Lab Browse  Full browse of a valid starting node, nodeClassMask = 0xFF (All).
Client processes the results correctly and uses them appropriately.

031

Lab Browse  Full browse of a valid starting node, resultMask = 0x1 (ReferenceType).
Client processes the results correctly and uses them appropriately.

032

Lab Browse  Browse with ResultMask set to various (pairwise) combinations:
0x00, 0x3E, 0x15, 0x2B, 0x07, 0x39, 0x1A, 0x24
Service result = Good. Operation result = Good. Only the specified ReferenceDescription fields are returned.

033

Lab Browse  Full browse of a valid starting node, resultMask = 0x3F (All).
Client processes the results correctly and uses them appropriately.

034

Lab Browse  Mixture of type-definition node classes is specified (i.e. Object and/or Variable) together with non type-definition node classes. The typeDefinition ExpandedNodeId is included for all.
Client will check the location of each Node (i.e. local or Remote) and will check the IdentifierType (in the ExpandedNodeId) to verify the type matches the request.
Client ignores any records that do not match the request. Client may report warnings to indicate the Server is returning invalid data.

035

Lab BrowseNext  Client issues a Browse request as specified above.
Client makes successive calls to BrowseNext (releaseContinuationPoints=false) in order to obtain all of the references in a given location and then finally sets releaseContinuationPoints=true.

036

Lab BrowseNext  Client issues a Browse request except multiple (2 or more) nodes are specified.
Client makes successive calls to BrowseNext (releaseContinuationPoints=false) in order to obtain all of the references in a given location and then finally sets releaseContinuationPoints=true.

037

Lab BrowseNext  As test #1 except the nodesToBrowse exists within a View.
Client makes successive calls to BrowseNext (releaseContinuationPoints=false) in order to obtain all of the references in a given location and then finally sets releaseContinuationPoints=true.

038

Lab BrowseNext  As test #2 except one nodesToBrowse exists within a View.
Client makes successive calls to BrowseNext (releaseContinuationPoints=false) in order to obtain all of the references in a given location and then finally sets releaseContinuationPoints=true.

039

Lab BrowseNext  As test #2 except all nodesToBrowse exists within a View.
Client makes successive calls to BrowseNext (releaseContinuationPoints=false) in order to obtain all of the references in a given location and then finally sets releaseContinuationPoints=true.

040

Lab BrowseNext  Client issues a Browse request as specified above, but also seeks Forward only references.
Client makes successive calls to BrowseNext (releaseContinuationPoints=false) in order to obtain all of the references in a given location and then finally sets releaseContinuationPoints=true.

041

Lab BrowseNext  Client issues a Browse request as specified above, but also seeks nodes of a particular Type, not including sub-types.
Client makes successive calls to BrowseNext (releaseContinuationPoints=false) in order to obtain all of the references in a given location and then finally sets releaseContinuationPoints=true.

042

Lab BrowseNext  Client issues a Browse request as specified above, but also seeks nodes of a particular Type, including sub-types.
Client makes successive calls to BrowseNext (releaseContinuationPoints=false) in order to obtain all of the references in a given location and then finally sets releaseContinuationPoints=true.

043

Lab BrowseNext  Client issues a Browse request where multiple nodes are specified. One or more nodes will yield a large (small) result set such that subsequent BrowseNext calls will carry fewer ContinuationPoints As successive BrowseNext calls complete for some nodes (i.e., Status code is NOT `Good`) but not for others, subsequent calls will carry fewer ContinuationPoints.

044

CTT Unavailable  Browse a folder/object in the Servers' address space where there are multiple nodes with the same BrowseName, except the case varies between them.
The DisplayName and BrowseName values should be identical for this exercise. <p>
The client is able to process the duplicate BrowseNames (except the case is different), perhaps display them, but it is able to extract the correct information (specifically the NodeId) as appropriate.</p>

Err-001

CTT Browse  Randomly inject one of the following status codes into the Service Result.
Repeat this test numerous times, each time varying the code:

1. Bad_ViewIdUnknown
2. Bad_ViewTimestampInvalid
3. Bad_ViewParameterMismatchInvalid
4. Bad_ViewVersionInvalid
5. Bad_NothingToDo
6. Bad_TooManyOperations.
Client reports the error.
A graphical display would clearly reflect a problem with the node that was attempted to be browsed.

Err-002

CTT Browse  ServiceResult = Good.
BrowseResult[] is empty.
Client reports the error. A graphical display would clearly reflect a problem with the affected node that was attempted to be browsed.

Err-003

CTT Browse  Service Result is Good.
Randomly inject one of the following status codes into the first result.
Repeat this test several times, each time varying the code:

1. Bad_NodeIdInvalid
2. Bad_NodeIdUnknown
3. Bad_ReferenceTypeIdInvalid
4. Bad_BrowseDirectionInvalid
5. Bad_NodeNotInView
6. Bad_NoContinuationPoints
7. Uncertain_NotAllNodesAvailable.
Client reports the error.
A graphical display would clearly reflect a problem with the affected node that was attempted to be browsed.

Err-004

CTT Browse  ServiceResult = Good.
BrowseResults are as follows:
[0].StatusCode = Bad_NodeIdUnknown
[1].StatusCode = Bad_NodeNotInView
[2].StatusCode = Bad_NodeIdInvalid
Any remaining results are unaltered.
Client reports the error. A graphical display would clearly reflect a problem with the affected nodes that were attempted to be browsed.

Err-005

CTT Browse  ServiceResult = Good.
BrowseResults[all].StatusCode = Bad_NodeIdUnknown.
Client reports the error. A graphical display would clearly reflect a problem with the affected nodes that were attempted to be browsed.

Err-006

CTT Browse  Inject the following error codes:
1.BrowseResult[0].ContinuationPoint is null because fewer references returned than requestedMax.
2.BrowseResult[0].ContinuationPoint received is an empty ByteString.
3.BrowseResult[0].ContinuationPoint is a VERY long ByteString, e.g. 1000 long.
Step #
Action
Expected Result(s)

1

1.

Client treats this as normal. No error to display. Graphical displays show an empty results set for this browse call.

2

2.

Client treats this as `no results found`. No error to display. Graphical displays show an empty results set for this browse call.

3

3.

Client either: accepts and uses the ContinuationPoint; or, rejects it and reports an error to the end-user.

Err-007

CTT Browse  Inject with the following error codes:
1.BrowseResult[0] referenceTypeId is null/empty.
2.BrowseResult[0] referenceTypeId contains a NodeId that does not match the request.
Step #
Action
Expected Result(s)

1

1.

Client ignores the record, but continues processing other records.

2

2.

Client ignores the record. Client should report that it has received incorrect information from the Server.

Err-008

CTT Browse  Inject with the following error codes:
1.BrowseResult[0]. isForward is set to False but the client requested only FORWARD_0.
2.BrowseResult[0]. isForward is set to True but the client requested only INVERSE_1.
3.Some BrowseResult[]. isForward are set to True and some False, but the client requested only FORWARD_0 or INVERSE_1 but not BOTH_2.
Step #
Action
Expected Result(s)

1

1.

Client ignores the record. Client should report that it has received incorrect information from the Server.

2

2.

Client ignores the record. Client should report that it has received incorrect information from the Server.

3

3.

Some BrowseResult[]. isForward are set to True and some False, but the client requested only FORWARD_0 or INVERSE_1 but not BOTH_2.

Err-009

CTT Browse  Inject the following error codes:
1.BrowseResult[0]. nodeId is null.
2.BrowseResult[0]. nodeId has a non-zero server index – node belongs to remote server.
Step #
Action
Expected Result(s)

1

1.

Client ignores the record. Client should report that it has received incorrect information from the Server.

2

2.

Client identifies the Node is different because it is stored on a remote Server. The Client may display or limit the options available on the node or hide the node etc (per Client documentation).

Err-010

CTT Browse  Inject the following error codes:
1.BrowseResult[0] browseName is empty.
Note: In the case where server index is non-zero (remote server), the browseName, nodeClass and typeDefinition may be null.
2.BrowseResult[0] browseName is VERY long, e.g. 1000+ characters.
Step #
Action
Expected Result(s)

1

1.

Client ignores the record since it means the node cannot be used with TranslateBrowsePathsToNodeIds. Client should report that it has received incorrect information from the Server.

2

2.

Client will either: reject the record because the name is too long; or, allow the value to be used with TranslateBrowsePathsToNodeIds.

Err-011

CTT Browse  Inject the following error codes:
1.BrowseResult[0] displayName is empty.
2.BrowseResult[0] displayName is VERY long, e.g. 1000+ characters.

Step #
Action
Expected Result(s)

1

1.

Client either: ignores the record; or, uses a version of BrowseName; or, replaces the value to a default name such as `noname` etc.

2

2.

Client will either: reject the record because the name is too long; or, truncate the name for display purposes.

Err-012

CTT Browse  Inject the following error codes
1.BrowseResult[0] nodeClass contains an invalid value.
2.BrowseResult[0] typeDefinition contains a valid NodeId but the nodeClass is empty.
Step #
Action
Expected Result(s)

1

1.

Client rejects the record because the type definition is not correctly specified. Client should report that it has received incorrect information from the Server.

2

2.

Client ignores the record. Client may report a warning that incorrect information was received.

3

Err-013

CTT Browse  Unavailable  BrowseResult[0] typeDefinition contains a valid NodeId but the nodeClass=UNSPECIFIED.
Client rejects the record because the type definition is not correctly specified.
Client should report that it has received incorrect information from the Server.

Err-014

CTT Browse  Multiple references returned including
1.a mixture of node class(es) requested by the client
2.node class(es) not requested by the client
Client ignores records containing types that were not requested. Client may report a warning that incorrect information was received

Err-015

CTT Browse  Non type-definition node class is specified (e.g., method) but the type definition NodeId is returned.
Client ignores the record. Client may report a warning that the Server returned incorrect data.

Err-016

CTT BrowseNext  Randomly inject one of the following status codes into the Service Result.
Repeat this test several times, each time varying the code:

1. Bad_NothingToDo
2. Bad_TooManyOperations.
3. Bad_ViewIdUnknown
4. Bad_ViewTimestampInvalid
5. Bad_ViewParameterMismatch
6. Bad_ViewVersionInvalid

Err-017

CTT BrowseNext  Randomly inject one of the following status codes into the first Result item.
Repeat this test several times, each time varying the code:

1. Bad_NodeIdInvalid
2. Bad_NodeIdUnknown
3. Bad_ReferenceTypeIdInvalid
4. Bad_BrowseDirectionInvalid
5. Bad_NodeNotInView
6. Bad_ContinuationPointInvalid.
Client reports the operation level error to the end-user.
Client may partially abort the browse job, i.e. do not call Browse/BrowseNext on the affected Node/branch.

Err-018

CTT BrowseNext  ServiceResult = Good;
Results[0].StatusCode = Bad_ NodeIdInvalid
Results[1].StatusCode = Bad_NodeIdUnknown
Results[2].StatusCode = Bad_ReferenceTypeIdInvalid
Results[3].StatusCode = Bad_BrowseDirectionInvalid
Results[4].StatusCode = Bad_NodeNotInView
Results[5].StatusCode = Bad_ContinuationPointInvalid.
Note: CTT script uses above if results length permits.
Client reports the operation level error to the end-user.
Client may partially abort the browse job, i.e. do not call Browse/BrowseNext on the affected Nodes/branches.

Err-019

CTT BrowseNext  ServiceResult = Good;
Results[0].ContinuationPoint is not null/empty but Results[0].References is empty.
Client reports the operation result contains invalid data. Client does not issue a BrowseNext call.

Err-020

CTT BrowseNext  ServiceResult = Good;
Results[0].ContinuationPoint is re-used on each successive call to BrowseNext.
Note: CTT script can store the initial value received and re-issue on each successive call.
A good Client detect if the same results were also being received by the UA Server and if so then would ignore them.

Err-021

CTT BrowseNext  Client issues a Browse request as specified above, but also seeks Forward only references.
ServiceResult = Good;
Results[0] contains data whose direction does not match the search criteria.
Client reports a warning that the Server is returning data that does not match the search criteria. The incorrect data is ignored.

Err-022

CTT BrowseNext  Client issues a Browse request as specified above, but also seeks nodes of a particular Type.
ServiceResult = Good;
Results[0] contains data that is of a type that does not match the search criteria.
Client reports a warning that the Server is returning data that does not match the search criteria. The incorrect data is ignored.

Err-024

CTT BrowseNext  ServiceResult = Good, Results[0].StatusCode = Good but Results[0].References is empty. Client reports the operation result contains invalid data. Client does not issue a BrowseNext call.