42

Warehouse App Task Validation Framework

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Warehouse App Task Validation Framework
Page 2: Warehouse App Task Validation Framework

One

PREDICTABLE CONTINUOUS

Page 3: Warehouse App Task Validation Framework

2 major updates

PREDICTABLE CONTINUOUS

Page 4: Warehouse App Task Validation Framework
Page 5: Warehouse App Task Validation Framework
Page 6: Warehouse App Task Validation Framework

• Xamarin-based application

• Android and Windows 10

• Task Recorder not supported • No RSAT

Page 7: Warehouse App Task Validation Framework

• Warehouse App Task Validation Framework

• Enables RSAT + Warehouse Mobile

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

Page 8: Warehouse App Task Validation Framework

WHS App Architecture XML-based custom service

Page 9: Warehouse App Task Validation Framework

WHS App Architecture XML-based custom service

• XML-based custom service• XML in

• XML out

Page 10: Warehouse App Task Validation Framework

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>

Page 11: Warehouse App Task Validation Framework

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" />

Page 12: Warehouse App Task Validation Framework

WHS App Task Validator2 components

• XML Recorder

• XML Playback• RSAT consumable

XML Recorder

XML Playback

Page 13: Warehouse App Task Validation Framework

Dynamics 365

Finance & Operations

Lifecycle Services

• Authoring

• Playback

Azure Dev Ops

BPM

DevOps

Project

Test Client

• Admin

• ExcelTask RecorderRSAT

Page 14: Warehouse App Task Validation Framework

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

Page 15: Warehouse App Task Validation Framework
Page 16: Warehouse App Task Validation Framework

Introduction to the UI

Page 17: Warehouse App Task Validation Framework

Introduction to the UI

Page 18: Warehouse App Task Validation Framework

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

Page 19: Warehouse App Task Validation Framework

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”

Page 20: Warehouse App Task Validation Framework

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

Page 21: Warehouse App Task Validation Framework

Task input data

• Replacement variables

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

• RSAT can replace values

Page 22: Warehouse App Task Validation Framework

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" />

Page 23: Warehouse App Task Validation Framework

Task input data

• Generate Variables• Try to create variables for all steps

• Note: modifies XML

Page 24: Warehouse App Task Validation Framework

Validation Rules

• Data Value validation

• Create a set of validation rules

• Based on control data from mobile app

Page 25: Warehouse App Task Validation Framework

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

Page 26: Warehouse App Task Validation Framework

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

Page 27: Warehouse App Task Validation Framework

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

Page 28: Warehouse App Task Validation Framework

Recording a task

• XML Recorder

• Clears user session

• Warning: Clears recorded steps and validation rules

Page 29: Warehouse App Task Validation Framework

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

Page 30: Warehouse App Task Validation Framework

Playing a task

• Launches playback page

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

Page 31: Warehouse App Task Validation Framework

Playing a task

• Run test to start playback

• Monitor success/failure

• Validation messages

Page 32: Warehouse App Task Validation Framework
Page 33: Warehouse App Task Validation Framework

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

Page 34: Warehouse App Task Validation Framework

RSAT Integration

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

• Can execute tests from RSAT

• Utilize Excel parameter file

Page 35: Warehouse App Task Validation Framework

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

Page 36: Warehouse App Task Validation Framework

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

Page 37: Warehouse App Task Validation Framework
Page 38: Warehouse App Task Validation Framework

Data Management

• 4 data entities

• Can move tests between environments

• WHSWarehouseAppTaskValidator*

Page 39: Warehouse App Task Validation Framework

Versions

• 10.0.5• KB 4517769

• 10.0.6+

• Note: Non-production only.

Page 40: Warehouse App Task Validation Framework

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

Page 41: Warehouse App Task Validation Framework
Page 42: Warehouse App Task Validation Framework