Slide 1

Slide 1 text

TDD / BDD Introducing with Objective-C using XCTest © kaneshin, 2014 1

Slide 2

Slide 2 text

Agenda 4 What is TDD? 4 TDD life-cycle 4 How to play TDD? (Demo) 4 What is BDD? 4 What is the difference between BDD and TDD? 4 How to manipulate BDD? (Demo) © kaneshin, 2014 2

Slide 3

Slide 3 text

What is TDD? © kaneshin, 2014 3

Slide 4

Slide 4 text

TDD means Test-Driven Development. 4 Ensure your source code. 4 Understand the feature's specification/s and requirement/s. 4 Easily to adopt Agile for your project. 4 ... © kaneshin, 2014 4

Slide 5

Slide 5 text

TDD is NOT about testing. 4 TDD is about Development. 4 It's all about expressing intent. 4 Specifically, improving your project. 4 Covering unit tests powerfully. © kaneshin, 2014 5

Slide 6

Slide 6 text

TDD life-cycle © kaneshin, 2014 6

Slide 7

Slide 7 text

1. Write a test (Test-First) 2. Run the test (Should be FAILED) 3. Write code (Make the test pass) 4. Run all tests 5. Refactor (Clean up code) Repeat © kaneshin, 2014 7

Slide 8

Slide 8 text

1. Write a test and confirm failure 2. Write code to pass all tests 3. Clean up code Repeat © kaneshin, 2014 8

Slide 9

Slide 9 text

For example Just Adding Calculator Add A to B © kaneshin, 2014 9

Slide 10

Slide 10 text

Write a test. - (void)testAdd3To4 { Calc *calc = [Calc new]; XCTAssertEqualWithAccuracy( [calc add:3 to:4], 7, .001 ); } 4 Should be failed on build because there is no implementation. © kaneshin, 2014 10

Slide 11

Slide 11 text

Write code @interface Calc : NSObject - (double)add:(double)a to:(double)b; @end @implementation Calc - (double)add:(double)a to:(double)b { return 0.; } @end © kaneshin, 2014 11

Slide 12

Slide 12 text

Make the test pass @implementation Calc - (double)add:(double)a to:(double)b { return 7.; } @end 4 Just enough code to pass. © kaneshin, 2014 12

Slide 13

Slide 13 text

Refine the code @implementation Calc - (double)add:(double)a to:(double)b { return a + b; } @end 4 Run all tests. © kaneshin, 2014 13

Slide 14

Slide 14 text

Got it? 4 Memorize the figure 4 Test-First 4 Should be failed 4 Refactor, Refactor, Refactor © kaneshin, 2014 14

Slide 15

Slide 15 text

How to play TDD? Demo (Japanese) © kaneshin, 2014 15

Slide 16

Slide 16 text

Wizard Role-Play ຐ๏࢖͍ͷϩʔϧϓϨΠ © kaneshin, 2014 16

Slide 17

Slide 17 text

Wizard Spec (ຐ๏࢖͍) 4 Level 1 : ௨ৗ߈ܸ͕Ͱ͖Δ (Attack: 1 Damage) 4 Level 3 : Ϊϥ͕࢖͑Δ (Sizz: 2 Damage) 4 Level 5 : ϝϥϛ͕࢖͑Δ (Frizzle: 2 Damage) 4 Level up ʹ͸Exp 30͕Ұ཯Ͱඞཁ (؆ศͷͨΊ) © kaneshin, 2014 17

Slide 18

Slide 18 text

Slime Spec (εϥΠϜ) 4 Life: 2, Exp: 10 Goblin Spec (ΰϒϦϯ) 4 Life: 5, Exp: 30 ※Ϟϯελʔ͸Ұ౓ܦݧ஋Λऔಘ͞ΕΔͱExp͸0ͱͳΔ © kaneshin, 2014 18

Slide 19

Slide 19 text

What is BDD? © kaneshin, 2014 19

Slide 20

Slide 20 text

BDD means Behavior-Driven Development. 4 Basically, it is based on TDD. © kaneshin, 2014 20

Slide 21

Slide 21 text

What is the difference between BDD and TDD? © kaneshin, 2014 21

Slide 22

Slide 22 text

The difference between BDD and TDD? 4 TDD is focused How on code. 4 Just satisfied spec/s and requirement/s. 4 We wanna confirm a state transition. 4 A State is transitioning every-time. 4 Test-suites might have scenes on conditions. 4 BDD can check the validity of scenes. © kaneshin, 2014 22

Slide 23

Slide 23 text

How to manipulate BDD? Demo (Japanese) © kaneshin, 2014 23

Slide 24

Slide 24 text

Thanks © kaneshin, 2014 24