tdd/bdd - introducing with objective-c using xctest
DESCRIPTION
TDD/BDD - Introducing with Objective-C using XCTestTRANSCRIPT
TDD / BDDIntroducing with Objective-C using XCTest
© kaneshin, 2014 1
Agenda4 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
What is TDD?
© kaneshin, 2014 3
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
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
TDD life-cycle
© kaneshin, 2014 6
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
1. Write a test and confirm failure
2. Write code to pass all tests
3. Clean up code
Repeat
© kaneshin, 2014 8
For exampleJust Adding Calculator
Add A to B
© kaneshin, 2014 9
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
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
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
Refine the code
@implementation Calc- (double)add:(double)a to:(double)b { return a + b;}@end
4 Run all tests.
© kaneshin, 2014 13
Got it?
4 Memorize the figure
4 Test-First
4 Should be failed
4 Refactor, Refactor, Refactor
© kaneshin, 2014 14
How to play TDD?Demo (Japanese)
© kaneshin, 2014 15
Wizard Role-Play魔法使いのロールプレイ
© kaneshin, 2014 16
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
Slime Spec (スライム)
4 Life: 2, Exp: 10
Goblin Spec (ゴブリン)
4 Life: 5, Exp: 30
※モンスターは一度経験値を取得されるとExpは0となる
© kaneshin, 2014 18
What is BDD?
© kaneshin, 2014 19
BDD means Behavior-Driven Development.
4 Basically, it is based on TDD.
© kaneshin, 2014 20
What is the difference between BDD and TDD?
© kaneshin, 2014 21
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
How to manipulate BDD?Demo (Japanese)
© kaneshin, 2014 23
Thanks
© kaneshin, 2014 24