Test Driven Development in Agile Model-Based Design · Test Driven Development Cycle 5....

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 Cycle 5....

Page 1: Test Driven Development in Agile Model-Based Design · Test Driven Development Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

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 Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

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 Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

3

Building Algorithms in Everything…

Page 4: Test Driven Development in Agile Model-Based Design · Test Driven Development Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

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 Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

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 Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

Requirements

Simulink provides an integrated framework for TDD

Test

Implementation

6

Page 7: Test Driven Development in Agile Model-Based Design · Test Driven Development Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

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 Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

Capturing requirements

8

Page 9: Test Driven Development in Agile Model-Based Design · Test Driven Development Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

Viewing details

9

Requirement

Details

Page 10: Test Driven Development in Agile Model-Based Design · Test Driven Development Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

Organizing and creating requirement hierarchies

10

Requirement

Hierarchies

Page 11: Test Driven Development in Agile Model-Based Design · Test Driven Development Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

Specifying details

11

Description / Rationale Fields

Links

Pane

Page 12: Test Driven Development in Agile Model-Based Design · Test Driven Development Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

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 Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

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 Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

Creating a Test Harness to isolate Component Under Test

14

Page 15: Test Driven Development in Agile Model-Based Design · Test Driven Development Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

Specify properties of the Test Harness

15

Page 16: Test Driven Development in Agile Model-Based Design · Test Driven Development Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

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 Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

Outputs

Specify outputs

17

AssessmentsMAT file Excel

Page 18: Test Driven Development in Agile Model-Based Design · Test Driven Development Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

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 Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

Authoring tests using Signal Editor

19

Page 20: Test Driven Development in Agile Model-Based Design · Test Driven Development Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

Use templates and wizards to automate test case creation

20

Page 21: Test Driven Development in Agile Model-Based Design · Test Driven Development Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

Use templates and wizards to automate test case creation

21

Page 22: Test Driven Development in Agile Model-Based Design · Test Driven Development Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

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 Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

Test fails due to compilation error

23

Page 24: Test Driven Development in Agile Model-Based Design · Test Driven Development Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

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 Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

Implement enough to get test to pass

25

Page 26: Test Driven Development in Agile Model-Based Design · Test Driven Development Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

Linking implementation to requirements

26

Page 27: Test Driven Development in Agile Model-Based Design · Test Driven Development Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

Managing artifacts with source control directly from Projects

27

Page 28: Test Driven Development in Agile Model-Based Design · Test Driven Development Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

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 Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

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 Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

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 Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

Executing all tests until they pass

31

Page 32: Test Driven Development in Agile Model-Based Design · Test Driven Development Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

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 Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

Generating test reports for audits and reviews

33

Page 34: Test Driven Development in Agile Model-Based Design · Test Driven Development Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

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 Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

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 Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

Refactoring takes many shapes and forms

• Rearranging Layout

36

Page 37: Test Driven Development in Agile Model-Based Design · Test Driven Development Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

Refactoring takes many shapes and forms

• Rearranging Layout

37

Page 38: Test Driven Development in Agile Model-Based Design · Test Driven Development Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

Refactoring takes many shapes and forms

• Rearranging Layout

• Restructuring Hierarchy

38

Page 39: Test Driven Development in Agile Model-Based Design · Test Driven Development Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

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 Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

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 Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

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 Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

Detecting clones with Clone Detector App

42

Page 43: Test Driven Development in Agile Model-Based Design · Test Driven Development Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

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 Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

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 Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

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 Cycle 5. Requirements Simulink provides an integrated framework for TDD Test Implementation 6. Starting

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