×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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