Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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 ※ϞϯελʔҰܦݧΛऔಘ͞ΕΔͱExp0ͱͳΔ © 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