Warehouse App Task Validation Framework

Post on 17-Nov-2021

7 views 0 download

Transcript of Warehouse App Task Validation Framework

One

PREDICTABLE CONTINUOUS

2 major updates

PREDICTABLE CONTINUOUS

• Xamarin-based application

• Android and Windows 10

• Task Recorder not supported • No RSAT

• Warehouse App Task Validation Framework

• Enables RSAT + Warehouse Mobile

• New UI in Dynamics 365 • RSAT can control warehouse flows

WHS App Architecture XML-based custom service

WHS App Architecture XML-based custom service

• XML-based custom service• XML in

• XML out

XML InputControls with data

<?xml version="1.0" encoding="UTF-8"?><ParentNode>

<Controls PagePattern="Default" PageTitle="Sales Picking"><Control controlType="label" name="Scan" label="Scan a work ID / license plate ID" newLine="1" data="" type="Undefined" length="-1" error="0" defaultButton="0" enabled="1"

selected="" color="#000000" Status="1" NumDecimals="-1" DisplayArea="SubHeaderArea" PreferredInputMode="" PreferredInputType="" DisplayPriority="0" DisplaySubPriority="0"DataSequence="3" AttachedTo="" InstructionControl="" Footer1="" Footer2="" InputType="16806" />

<Control controlType="text" name="WHSWorkLicensePlateId" label="ID" newLine="1" data="USMF-000243" type="String" length="25" error="0" defaultButton="0" enabled="1"selected="" color="#000000" Status="1" NumDecimals="-1" DisplayArea="PrimaryInputArea" PreferredInputMode="Scanning" PreferredInputType="Alpha" DisplayPriority="50"DisplaySubPriority="20" DataSequence="4" AttachedTo="" InstructionControl="" Footer1="" Footer2="" InputType="2694" />

<Control controlType="button" name="OK" label="OK" newLine="1" data="1" type="Undefined" length="-1" error="0" defaultButton="1" enabled="1" selected=""color="#000000" Status="1" NumDecimals="-1" DisplayArea="PrimaryActionArea" PreferredInputMode="" PreferredInputType="" DisplayPriority="0" DisplaySubPriority="0"DataSequence="5" AttachedTo="" InstructionControl="" Footer1="" Footer2="" InputType="16806" />

<Control controlType="button" name="Cancel" label="Cancel" newLine="1" data="" type="Undefined" length="-1" error="0" defaultButton="0" enabled="1" selected=""color="#000000" Status="1" NumDecimals="-1" DisplayArea="" PreferredInputMode="" PreferredInputType="" DisplayPriority="0" DisplaySubPriority="0" DataSequence="6"AttachedTo="" InstructionControl="" Footer1="" Footer2="" InputType="16806" />

</Controls><Auth userId="24" sessionId="{0B68B628-3B6C-453C-A889-C8D446CEE73F}" /><UserCulture>en-us</UserCulture><UserDateCulture>en-us</UserDateCulture><Device DeviceId="052d8897-fa4b-4fa2-a986-da449119db1e" /><ServerActivity ServerActivityId="{41F320CE-C4E4-0007-07A1-F941E4C4D401}" />

</ParentNode>

XML OutputResults of server processing

<?xml version="1.0" encoding="UTF-8"?><ParentNode><Controls PagePattern="Default" PageTitle="Sales Picking" ImageInfo="usmf|Product|ItemId:A0001">

<Control controlType="label" name="Pick" label="Sales orders : Pick" newLine="1" data="" type="Undefined" length="-1" error="0"defaultButton="0" enabled="1" selected="" color="#000000" Status="1" NumDecimals="-1" DisplayArea="SubHeaderArea" PreferredInputMode=""PreferredInputType="" DisplayPriority="0" DisplaySubPriority="0" DataSequence="3" AttachedTo="" InstructionControl="" Footer1="" Footer2=""InputType="16806" />

<Control controlType="text" name="WMSLocationId" label="Loc" newLine="1" data="FL-001" type="String" length="10" error="0" defaultButton="0"enabled="0" selected="" color="#000000" Status="1" NumDecimals="-1" DisplayArea="InfoAndSecondaryInputArea" PreferredInputMode="Scanning"PreferredInputType="Alpha" DisplayPriority="50" DisplaySubPriority="10" DataSequence="4" AttachedTo="" InstructionControl="" Footer1="" Footer2=""InputType="5472" />

<Control controlType="text" name="LicensePlateId" label="LP" newLine="1" data="" type="String" length="25" error="0" defaultButton="0"enabled="1" selected="" color="#000000" Status="1" NumDecimals="-1" DisplayArea="PrimaryInputArea" PreferredInputMode="Scanning"PreferredInputType="Alpha" DisplayPriority="50" DisplaySubPriority="20" DataSequence="5" AttachedTo="" InstructionControl="" Footer1="" Footer2=""InputType="2694" />

<Control controlType="text" name="ItemId" label="Item" newLine="1" data="A0001" type="String" length="80" error="0" defaultButton="0"enabled="0" selected="" color="#000000" Status="1" NumDecimals="-1" DisplayArea="InfoAndSecondaryInputArea" PreferredInputMode=""PreferredInputType="" DisplayPriority="0" DisplaySubPriority="0" DataSequence="6" AttachedTo="" InstructionControl="" Footer1="" Footer2=""InputType="1291" />

<Control controlType="label" name="RFQtyLabel" label="Qty: 1 pcs ; 1 Pcs" newLine="1" data="" type="Undefined" length="-1" error="0"defaultButton="0" enabled="1" selected="" color="#000000" Status="1" NumDecimals="-1" DisplayArea="InfoAndSecondaryInputArea"PreferredInputMode="Scanning" PreferredInputType="Alpha" DisplayPriority="10" DisplaySubPriority="40" DataSequence="7" AttachedTo=""InstructionControl="" Footer1="" Footer2="" InputType="18263" />

<Control controlType="label" name="RFDescription1" label=" HDMI 6' Cables" newLine="1" data="" type="Undefined" length="-1" error="0"defaultButton="0" enabled="0" selected="" color="#000000" Status="1" NumDecimals="-1" DisplayArea="InfoAndSecondaryInputArea"PreferredInputMode="Scanning" PreferredInputType="Alpha" DisplayPriority="30" DisplaySubPriority="10" DataSequence="8" AttachedTo=""InstructionControl="" Footer1="" Footer2="" InputType="17017" />

WHS App Task Validator2 components

• XML Recorder

• XML Playback• RSAT consumable

XML Recorder

XML Playback

Dynamics 365

Finance & Operations

Lifecycle Services

• Authoring

• Playback

Azure Dev Ops

BPM

DevOps

Project

Test Client

• Admin

• ExcelTask RecorderRSAT

Dynamics 365

Finance & Operations

Lifecycle Services

• Authoring

• Playback

Azure Dev Ops

BPM

DevOps

Project

Test Client

• Admin

• ExcelTask RecorderRSAT

Dynamics 365

Warehousing App

App Task Validation

Introduction to the UI

Introduction to the UI

Tasks to test

• Top level business processes to validate

• Description and Worker User ID required

• Start recording: Clears previously recorded steps (if any) and resets user session.

• Starts XML Recorder component

• Run task: Launches the playback screen

• View task history: Previous run data

Recorded steps

• All activities (for selected user) in warehouse mobile app are saved.

• Input XML (Mobile App -> AOS)

• Output XML (AOS -> Mobile App)

• XML can be viewed (and modified) via “View XML”

Recorded steps – Validation Strategy

• No Validation: Step will be skipped

• Full XML Validation: Exact Output XML must match

• Data Value (recommended): Specific data validated based on user-defined rules

Task input data

• Replacement variables

• Control names from WHS app XML• Use variable for control data

• RSAT can replace values

Task input data

• Replacement variables

• Special case – override default mapping

• @VariableName

• Will use variable instead of normal task input data variable

• Must edit the XML

• Variable type• User-Set• Server-Set <Control controlType="text" name="LicensePlateId"

label="LP" newLine="1" data="@TargetLicensePlateIdVar"type="String" length="25" error="0" defaultButton="0" enabled="0" selected="" color="#000000" Status="1" NumDecimals="-1" DisplayArea="InfoAndSecondaryInputArea" PreferredInputMode="Scanning" PreferredInputType="Alpha" DisplayPriority="50" DisplaySubPriority="20" DataSequence="5" AttachedTo="" InstructionControl="" Footer1="" Footer2="" InputType="2694" />

Task input data

• Generate Variables• Try to create variables for all steps

• Note: modifies XML

Validation Rules

• Data Value validation

• Create a set of validation rules

• Based on control data from mobile app

Validation Rules

• Data Value validation

• Create a set of validation rules

• Based on control data from mobile app

• All controls from Output XML are listed• Can validate existence/value

Validation Rules

• Data Value validation

• Create a set of validation rules

• Based on control data from mobile app

• All controls from Output XML are listed• Can validate existence/value

• Current validation rules• Exists, Not exists

• Equality

• Greater/Less than

Validation Rules

• Data Value validation

• Create a set of validation rules

• Based on control data from mobile app

• All controls from Output XML are listed• Can validate existence/value

• Current validation rules• Exists, Not exists• Equality• Greater/Less than

• Data value• String or @VariableName

Recording a task

• XML Recorder

• Clears user session

• Warning: Clears recorded steps and validation rules

Recording a task

• Each server transaction is recorded• Input XML (Mobile App -> AOS)

• Output XML (AOS -> Mobile App)

• Validation is based on output from server

• Description defaulted (can be changed)

• Validation Strategy defaulted to None

Playing a task

• Launches playback page

• Builds XML w/replacement variables • Can review in playback page

Playing a task

• Run test to start playback

• Monitor success/failure

• Validation messages

RSAT Integration

• Create new Task Recorder recording

• Navigate to Warehouse app task validation page

• Filter task to specific task

• Filter variables to specific ones to set

• Run task

RSAT Integration

• LCS -> BPM -> Azure Dev Ops -> RSAT

• Can execute tests from RSAT

• Utilize Excel parameter file

RSAT Integration

• LCS -> BPM -> Azure Dev Ops -> RSAT

• Can execute tests from RSAT

• Utilize Excel parameter file

• Can contain random values (TargetLP)

• Can reference global RSAT variables (Work ID)

• Can chain together tests into test suites

Dynamics 365

Finance & Operations

Lifecycle Services

• Authoring

• Playback

Azure Dev Ops

BPM

DevOps

Project

Test Client

• Admin

• ExcelTask RecorderRSAT

Dynamics 365

Warehousing App

App Task Validation

Data Management

• 4 data entities

• Can move tests between environments

• WHSWarehouseAppTaskValidator*

Versions

• 10.0.5• KB 4517769

• 10.0.6+

• Note: Non-production only.

Common Issues

• Generate Variables• Use with caution

• “Unexpected difference between request and session data” error• XML out of sync – usually means not enough validation and expected state

has “drifted”

• WHSWorkUserSessionRequestValidator:: assertAgainstSessionState

• Multiple recordings active• Will appear to not record anything