Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile...

46
Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic

Transcript of Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile...

Page 1: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Test Driven Development in Agile

Model-Based Design

Paul Urban

Marco Dragic

Page 2: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

2

Paul UrbanMarco Dragic

Senior Product Manager

Simulink Verification and Validation

Senior Product Manager

Simulink Platform

Page 3: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

3

Building Algorithms in Everything…

Page 4: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

4

Building Algorithms in Everything…

…but how do you deliver faster, meet

changing customer requirements,

and ensure quality?

Page 5: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

BACKLOGDEFINITION

OF DONEDELIVERY

1. Create a test

2. Implement enough for test to pass

3. Refactor

Test Driven Development Cycle

5

Page 6: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Requirements

Simulink provides an integrated framework for TDD

Test

Implementation

6

Page 7: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Starting with high level customer requirements

7

User Requirements:

• Both driver and passenger can control the window

• Window stops closing if an object is detected

• Window should have option to fully open and close

Page 8: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Capturing requirements

8

Page 9: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Viewing details

9

Requirement

Details

Page 10: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Organizing and creating requirement hierarchies

10

Requirement

Hierarchies

Page 11: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Specifying details

11

Description / Rationale Fields

Links

Pane

Page 12: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

1. Create a test

2. Implement enough for test to pass

3. Refactor

12

Page 13: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Main Model

Test Harness

Component

under test

▪ Isolate Component Under Test

Test

Harnesses

▪ Author, manage, organize tests

Test

Manager

Test Browser

Test Results

Reports

▪ Specify test inputs, expected

outputs, and tolerances

Test

Authoring

Signal Editor

Temporal Assessments

Test Sequence

Time-Series Data

Develop, manage, and execute simulation-based testsSimulink Test

13

Page 14: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Creating a Test Harness to isolate Component Under Test

14

Page 15: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Specify properties of the Test Harness

15

Page 16: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Specify inputs

16

Inputs

Test Sequence

MAT file (input)

Excel file (input)

Signal Editor

Page 17: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Outputs

Specify outputs

17

AssessmentsMAT file Excel

Page 18: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Created Test Harness to isolate Component Under Test

18

Test Harness

Main Model

Page 19: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Authoring tests using Signal Editor

19

Page 20: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Use templates and wizards to automate test case creation

20

Page 21: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Use templates and wizards to automate test case creation

21

Page 22: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Create Simulation Test and link to requirement

22

Link to requirements

Specify model to test

Page 23: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Test fails due to compilation error

23

Page 24: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

1. Create a test

2. Implement enough for test to pass

3. Refactor

24

Page 25: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Implement enough to get test to pass

25

Page 26: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Linking implementation to requirements

26

Page 27: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Managing artifacts with source control directly from Projects

27

Page 28: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Scale and automate testing with Continuous Integration

▪ Schedule automatic code

and model testing

▪ Access MATLAB Plugin for

Jenkins

28

Page 29: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Executing test with Test Manager

▪ Group into suites

and test files

▪ Execute individual

or batch

29

Page 30: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Analyzing and debugging results with Test Manager

30

▪ View result summary

▪ Debug using Simulation

Data Inspector

▪ Archive, export, and

report results

Page 31: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Executing all tests until they pass

31

Page 32: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Measuring testing completeness with coverage

▪ Identify testing gaps

▪ Missing requirements

▪ Unintended functionality

▪ Design errors

32

Simulink

Stateflow

Code

Page 33: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Generating test reports for audits and reviews

33

Page 34: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

1. Create a test

2. Implement enough for test to pass

3. Refactor

34

Page 35: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Refactoring

▪ Refactoring is the process of changing software in such a way that it

does not alter the external behavior of the code yet improves its internal

structure

35

Page 36: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Refactoring takes many shapes and forms

• Rearranging Layout

36

Page 37: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Refactoring takes many shapes and forms

• Rearranging Layout

37

Page 38: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Refactoring takes many shapes and forms

• Rearranging Layout

• Restructuring Hierarchy

38

Page 39: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Refactoring takes many shapes and forms

• Rearranging Layout

• Restructuring Hierarchy

• Optimizing Implementation

39

Page 40: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Refactoring takes many shapes and forms

• Rearranging Layout

• Restructuring Hierarchy

• Optimizing Implementation

• Project-wide Renaming

…. and many more!

40

Page 41: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Refactor by consolidating redundant Stateflow chart

41

Driver and Passenger Controls are identical

Page 42: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Detecting clones with Clone Detector App

42

Page 43: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

1. Create a test

2. Implement enough for test to pass

3. Refactor

Test Driven Development Cycle

43

Page 44: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Conclusion and key takeaways

44

Simulink provides an integrated

framework for TDD

Systematically verify requirements

Automate testing to deliver working

systems faster

Page 45: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Test Driven Development powered by MATLAB and Simulink

45

• Model-Based Design – Simulink and Stateflow

• Manage Requirements – Simulink Requirements

• Author and Execute Tests – Simulink Test

• Measure Test Completeness – Simulink Coverage

• Refactor and Verify Compliance – Simulink Check

• Continuous Integration – MATLAB Plug in for Jenkins

• Organize, Manage and Share – Projects

Page 46: Test Driven Development in Agile Model-Based Design€¦ · Test Driven Development in Agile Model-Based Design Paul Urban Marco Dragic . 2 Marco Dragic Paul Urban Senior Product

Learn more

▪ Agile System Development with Model-Based Design

▪ Agile Model-Based Design: Accelerating Simulink Simulations in Continuous

Integration Workflows

▪ Verification, Validation, and Test Solution Page

▪ Continuous Integration Solution Page

46