model based test design at unity - etsi · model based test design at unity marek turski, ilya...

70
Sophia Antipolis, French Riviera 20-22 October 2015 MODEL BASED TEST DESIGN AT UNITY Marek Turski, Ilya Turshatov, Tomasz Paszek Unity Technologies © All rights reserved

Upload: dinhdiep

Post on 07-Sep-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Sophia Antipolis, French Riviera20-22 October 2015

MODEL BASED TEST DESIGN AT UNITYMarek Turski, Ilya Turshatov, Tomasz PaszekUnity Technologies 

© All rights reserved

Unity Technologies

Provider of an integrated development environment for creating games and other interactive virtual content

2 © All rights reserved

Unity Engine

3 © All rights reserved

• A few statistics• 100 core product developers• 1 million monthly active developers• 45k unique titles made with Unity every month• 9 million new devices reached every day• 20 million new install events per day

• Scaling is challenging• Growing team size• 23 supported platforms• Integrated services

• Player retention• Cloud deployment• Multiplayer• Asset Store• Analytics• Ads

Unity Engine

4 © All rights reserved

QA Focus

• Manual Testing (Test Engineers)

• User Experience (UX Researchers)

• User Support• Student Workers• Support Engineers

5 © All rights reserved

QA Focus

• Test Automation (Test Developers)

• Test Infrastructure (Toolsmiths)• Test runners and frameworks• Bug reporting and customer support tools• Backend and Reporting• Working closely with the Build Infrastructure Team

6 © All rights reserved

Test Automation Focus

• Unit Tests• Code tests, written by developers

• System Integration Tests• Components seen as processes

• Sub‐System Runtime Tests• Components seen as interfaces

• Test Tools• Built directly into the Game Engine

7 © All rights reserved

• Non‐Functional Tests• Performance/Stress/Load• Deployment/Update/Security• User Interface• Asset Import • Graphics

Test Automation Focus

8 © All rights reserved

Towards Agile Development

Individuals and interactions over Processes and tools Working software over Comprehensive documentation 

Customer collaboration over Contract negotiation Responding to change over Following a plan 

Is Unity agile (enough)?

9 © All rights reserved

Towards Agile Testing

• Re‐evaluation of skills• Planning• Communication• Quality Assistance over Quality Assurance

• Toolbox Clean‐up• Concepts• Techniques• Testware

10 © All rights reserved

Good Requirements Specification

• Traditional guidelines• Clarity, Completeness, Correctness, Consistency

• Agile User Stories• Small and Independent• Estimable and Testable• Valuable and Negotiable

11 © All rights reserved

As a [user role] I want to [desired feature] so that [value/benefit].

“Start programming while I findout what they want…” ?

Good Requirements Specification

© All rights reserved

RedefineRedefine

Clear?

Small?

Independent?Independent?

Estimable?Estimable?

Correct?Correct?

Complete ?Complete ?

Consistent ?Consistent ?

Testable?Testable?

Negotiable?Negotiable?

Valuable?Valuable?

Define a RequirementDefine a Requirement

Analyze all RequirementsAnalyze all Requirements

StartStart

EndEnd

Model‐Based Requirements

• Model‐Based Testing• Derivation of test cases from a model of the desired system behaviour

• Why use models?• The modelling process improves our understanding of the system under test and finds inconsistencies earlier

• Models become collaborative (and negotiable) test artifactswhich visualize and document our view of the system

13 © All rights reserved

Model‐Based Requirements

• Properties of a good model‐based notation• Expressive

• Represents common process abstractions and control issues

• Provocative• Helps with or drives the discovery of system aspects

• Processable• Can be data‐mined or executed

• Scalable• Provides means of functional or data decomposition

14 © All rights reserved

Model‐Based Requirements

15 © All rights reserved

Structured Control Events

Pause / Resume

Activate

Enable / Disable

Repetition

Selection

Sequence

Event quiescence

Context-sensitive input events

Deadlock

Priority

Mutual exclusion

Parallel executionTrigger / Suspend

Multi-context output events

Asynchronous events

Tasks

Task Control

Simultaneous Tasks

Expressing Common Behaviours

Structured Control Events

Pause / Resume

Activate

Enable / Disable

Repetition

Selection

Sequence

Event quiescence

Context-sensitive input events

Deadlock

Priority

Mutual exclusion

Parallel executionTrigger / Suspend

Multi-context output events

Asynchronous events

Tasks

Task Control

Simultaneous Tasks

Expressing Common Behaviours

Modelling System Requirements

Structural modelling focuses on what the system is.Behavioural modelling focuses on what the system does.

16 © All rights reserved

Views of a System

Structural

Data Flow

Behavioural

Control Flow State Transitions

Control Flow Modelling

17 © All rights reserved

Data Flow

Behavioural

Control Flow State Transitions

Emphasizes The exact sequence of stepsDe-emphasizes How inputs to a state are determinedFlow Control stream - the next step is taken when a

previous step (or sequence of steps) has finished

• One of the earliest behavioural models• Illustrates algorithms, processes and workflows

• Multitude of styles and symbols

Flowcharts

18 © All rights reserved

Process

Process Process

Start

End

Emphasizes The exact sequence of steps

De-emphasizes How inputs to a state are determined

Flow Control stream - the next step is taken when a previous step (or sequence of steps) has finished

Decision

• “(…) algorithms, processesand workflows” ‐ what is the difference?

Flowcharts

19 © All rights reserved

Next team

Next player

Team gets a point

Pick a card

Picture it

Divide into teams

Yes NoCan they guess it?

• “(…) algorithms, processesand workflows” ‐ what is the difference?

Flowcharts

20 © All rights reserved

Next team

Next player

Team gets a point

Pick a card

Picture it

Divide into teams

Yes NoCan they guess it?

Referee

Leap Year Problem flowchart

21 © All rights reserved

year

Divisible Divisible by 4 ?

Divisible Divisible by 100 ?

Divisible Divisible by 400 ?

False

True

Yes No

No

No

Yes

Yes

static bool IsLeapYear(int year) {

return (year % 4) == 0&& ((year % 100) != 0

|| (year % 400) == 0);}

static bool IsLeapYear(int year) {

return (year % 4) == 0&& ((year % 100) != 0

|| (year % 400) == 0);}

Coffee Machine Problem flowchart

22 © All rights reserved

Insert coin

Coin is?

total >= 20?total >= 20?

total += 2 total += 5

2 10

No

5

Yes

total = 0

total += 10

Dispense coffee, return change

Flowcharts – Decomposition

23 © All rights reserved

• Layout Decomposition• On‐page connectors• Off‐page connectors

• Hierarchy Decomposition

A

A

Leap Leap Year?

TrueFalse

Off-pageconnectorOff-pageconnector

Predefined Process

Compute leapYear

Flowcharts – Getting Started

24 © All rights reserved

• How to start?• Define the process to be illustrated• Find a trigger event or a trigger input• List known actions, try to keep the order chronological

• Extending the model• What could/should happen next?• Are all important aspects of the process illustrated?• Are all relevant actions taken into account?

Days in a Month flowchart

25 © All rights reserved

day, month, year

?

Days in a Month flowchart

26 © All rights reserved

day, month, year

Leap Year?

28

Yes No

TrueFalse

29

February?

Days in a Month flowchart

27 © All rights reserved

day, month, year

Leap Year?

31

28

Yes No

True

No

False

Yes

29

30

February?

Month 4, 6, 9 or 11?

Turn‐based game flowchart

28 © All rights reserved

Start Turn

Highligh Available Locations Highligh Available Opponents

Select Opponent

Defeat Animation End Turn

Select Location

Attack Animation

Return Attack Animation

Magic Spell

MoveAction?

Attack

Move Character

OpponentEliminated?

PlayerEliminated?

OpponentAdjacent? Victory Animation

Select Spell

Show Available Spells

Yes No

YesNo

YesNo

Flowcharts – Processability

29 © All rights reserved

• Well formed flowcharts can be data‐mined by business workflow engines

• An executable variation of flowcharts is used by the DRAKON Visual Language• Automatic layout

• Vertical only• Unified distances and offsets• Logical alignment

• Silhouette design style• Joins and parallel actions

Flowcharts – Expressive power

Structured Control Statements are the core building blocks of a flowchart

• Perfect for representing imperative languages

30 © All rights reserved

Statement B

Statement C

Statement A

Sequence Selection Repetition

ConditionTrue

Statement False

...

ConditionConditionTrue

False

Loop body

Loop entry

Flowcharts – Expressive power

• Other aspects of behaviour must be determined in text or deducted from the flow• Mutual exclusion is represented through parallel paths after a decision, but other concurrency concepts are missing

• A popular extension ‐ Activity Diagrams – addresses this problem by introducing new symbols

31 © All rights reserved

Merge BranchForkJoin

Break Time

32 © All rights reserved

• 5 minute break • Q&A• Flowchart design exercise (optional)

State Transition Modelling

33 © All rights reserved

Data Flow

Behavioural

Control Flow State Transitions

Emphasizes The state space and state transition stimuliDe-emphasizes Sequencing of stepsFlow Event stream – the next step is taken in response to

events and the internal state of the system

Finite State Machines

• A mathematical model of computation (a finite automata)

• Illustrate behaviour as a series of events that can occur in one or more possible states of a system

34 © All rights reserved

Emphasizes The state space and state transition stimuli

De-emphasizes Sequencing of steps

Flow Event stream – the next step is taken in response to events and the internal state of the system

S3

S4 S5

S2

S1

S6

Common Finite State Machines

35 © All rights reserved

YellowS2

YellowGreenS1

Green

Change

Change

S3Red

Change

TickTick

Tick

RetreatS4

Retreat

S2Chase

S1Patrol

Lost Pac Man

S3Base

Respawn

Pac-Man in sight

Pac Man catches up

Leap Year Problem FSM

36 © All rights reserved

class Year{

bool m_IsLeapYear;

public Year(int year) {

m_IsLeapYear =  IsLeapYear(year);

}}

class Year{

bool m_IsLeapYear;

public Year(int year) {

m_IsLeapYear =  IsLeapYear(year);

}}

by ?

S4Divisibleby 100?

S6True

S2Divisible

by 4?

by 400?

S5Divisibleby 400?

S1Get year

S3False

No

No

YesNo

Yes

Yes

Day of Month Problem FSM

37 © All rights reserved

S4Year divisible

by 100?

S628

S2Year divisible

by 4?

S5Year divisible

by 400?

S1February?

S329

No

No

YesNo

Yes

Yes

S7Month 4, 6,

9 or 11?

No Yes

S931

S830

No

Yes

Day of Month Problem FSM

38 © All rights reserved

S428

S2Leap Year?

S1February?

S329

NoYes

S5Month 4, 6,

9 or 11?

No Yes

S731

S630

No

Yes

Coffee Machine Problem FSM

39 © All rights reserved

S2Total is

10

S5Total is

20

S1Total is

0

S4Total is

15

S3Total is

5

Insert 5

Insert 10

Insert 10

Insert 10

Take Coffee

Data Flow Modelling

40 © All rights reserved

Data Flow

Behavioural

Control Flow State Transitions

Emphasizes Exchange and transformation of dataDe-emphasizes Sequencing of stepsFlow Data stream - the next step is taken when other

steps provide its inputs

Petri nets

• Graphical notation for step‐wise process analysis

• A mathematical modelling language for the description of distributed systems supported by a well developed theory for process analysis

41 © All rights reserved

Emphasizes Exchange and transformation of data

De-emphasizes Sequencing of steps

Flow Data stream - the next step is taken when other steps provide its inputs

p

q

sb

r

t

a

fd

e

Petri Net ‐ Coffee Machine Problem

Looks familiar?

42 © All rights reserved

P2Total is

10

P5Total is

20

P1Total is

0

P4Total is

15

P3Total is

5

Insert 5

Insert 10

Insert 10Insert 10

Take Coffee

Petri Net – Traffic Light Model

43 © All rights reserved

T1

Green

T2

Orange

T3

Red

Petri Net ‐ Traffic Light Model

44 © All rights reserved

T1

Green

T2

Orange

T3

Red

Petri Net – Traffic Light Model

45 © All rights reserved

T1

Green

T2

Orange

T3

Red

Petri Net – Traffic Light Model

46 © All rights reserved

T1

Green

T2

Orange

T3

Red

Petri Net – Two Traffic Light Model

47 © All rights reserved

R1 R2

T2a

G2

T2b

O2

T2c

T1

G1

T1b

O1

T1c

Petri Net – Two Traffic Light Model

48 © All rights reserved

R1 R2

T2a

G2

T2b

O2

T2c

T1

G1

T1b

O1

T1c

Petri Net – Two Traffic Light Model

49 © All rights reserved

R1 R2

T2a

G2

T2b

O2

T2c

T1

G1

T1b

O1

T1c

Petri Net – Two Traffic Light Model

50 © All rights reserved

R1 R2

T2a

G2

T2b

O2

T2c

T1

G1

T1b

O1

T1c

Petri Net – Two Traffic Light Model

51 © All rights reserved

R1 R2

T2a

G2

T2b

O2

T2c

T1

G1

T1b

O1

T1c

Petri Net – Two Traffic Light Model

52 © All rights reserved

R1 R2

T2a

G2

T2b

O2

T2c

T1

G1

T1b

O1

T1c

Petri Net – Two Traffic Light Model

53 © All rights reserved

R1 R2

T2a

G2

T2b

O2

T2c

T1

G1

T1b

O1

T1c

Petri Nets – Expressive Power

54 © All rights reserved

Events/actions sequencet1 t2 t3

Non‐deterministic events ‐conflict, choice or decision

t1 t2

t3 t4

t2 t3t1

t4 t5

Concurrent executions

Petri Nets – Expressive Power

55 © All rights reserved

t1

Synchronization and Concurrency

t1

Summary – Model Notations

56 © All rights reserved

a

b

f

e

c d

Flow Chart

p

q

s

Petri Nets

b

r

t

a

fd

e

p

q

s

State Machines

b

r

t

a

f

d

e

c~c

Summary – Model Expressive Power

57 © All rights reserved

Flowcharts Finite State Machines Petri NetsSequence Yes Yes (unnatural) Yes (unnatural)

Selection Yes Yes Yes

Repetition Yes Yes Yes

Activate No No Yes

Enable/Disable No No Yes

Trigger/Suspend No No Yes

Pause/Resume No No Yes

Priority No No Yes

Parallel execution No No Yes

Mutual execution No* No Yes

Deadlock No No Yes

Context‐sensitive input events No Yes No*

Multi‐context output events No Yes No*

Asynchronous Events No No No*

Event quiescence No No No*

Break Time

• 5 minute break • Q&A• Installing and setting up Unity (optional)

58 © All rights reserved

From Models to Test Tools

The built‐in scripting engine makes Unity easy to extend with custom tools, including test tools

• Integrated NUnit and Integration Test Frameworks• Model Based Test Designer

• Uses the open‐source GraphWalkertool at the core (ver. 3.3)• Extended Finite State Machine• Intuitive workflow and notation

• Integrated test designer interface• Builds offline tests that can be executed using the other frameworks

©All rights reserved

From Models to Test Tools

• Actions and Guards• Executable annotations that allow for flexible control over path traversals through the model

• Shared State• Represents the same system state in multiple models (contexts of the same model)

• The abstraction allows for hyperlink‐like jumps between models, where every next model can extend the represented behaviour’s scope or detail level

60 © All rights reserved

From Models to Test Tools

Model notation• Model

• Start State• Start Actions• Requirements

• State• Shared State Key• Requirements List

• Transition• Weight• Guard• Actions • Requirements

61 © All rights reserved

Model M <start state> {action1; action2; …}: “requirement1”, ”requirement2”, …

State A

TAB : weight [guard] {action1; action2; …}

: “req1”, ”req2”, …State B

<shared state key>: “req1”, ”req2”, …

TBA1State C

TBA2

State D

From Models to Test Tools

Model notation• Model

• Start Actions

• Transition• Guard• Actions 

62 © All rights reserved

Model M <State A> {var visited = false}

State A

State B

State C

State D

TBC [visited]{visited = false}

Make ABC illegal - always visit D before C.

From Models to Test Tools

Model notation• Model

• Start Actions

• Transition• Guard• Actions 

63 © All rights reserved

Model M <State A> {var visited = false}

State A

State B

State C

State D

TBC [visited]{visited = false}

Also, make TBA1 feedback illegal between D and C.

From Models to Test Tools

Model notation• Model

• Start Actions

• Transition• Guard• Actions 

64 © All rights reserved

Model M <State A> {var visited = false; var round = 0}

State A

State B

State C

State D

TBC [visited]{visited = false;

round++}

Also, add an initially disabled TBE.State E

From Models to Test Tools

Model notation• Transition

• Weight

65 © All rights reserved

Model M <State B>

State A

State B

State C

State D

Probability (TBD) = 50 / (80 + 50 + 10 + 15 + 1) = 32%

TBC : 80

State E

From Models to Test Tools

Model notation• State

• Shared State Key

66 © All rights reserved

Model M <State B>

State A

State B<”jump”>

State C

State D

Consider state E when in state B (and B when in E).State E

<”jump”>

State GState F

Model N

From Models to Test Tools

Path generators• Random• Quick Random• Weighted • A Star

67 © All rights reserved

Model M <State B>

State A

State B

State C

State D

What’s the next step?

From Models to Test Tools

Stop Conditions• Coverage

• States• Transitions• Requirements

• Reached Target• (Shared) State• Transition• Assertion

• Time Duration• Path Length• Composite

• AND/OR Tree

68 © All rights reserved

Model M <State B>

State A

State B<”jump”>

State C

State D

Pick at Random until Path Length = 4 AND Reached “State D”

Let’s see it in action!

69 © All rights reserved

Thank You!

Q & A

70 © All rights reserved