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
Testing Best Practices or The 5 Habits of Highly Effective Tests Noel Rappin @noelrap Wednesday, April 25, 12
Slide 2
Slide 2 text
What is an "effective" test? Wednesday, April 25, 12
Slide 3
Slide 3 text
"I get paid for code that works, not for tests" -- Kent Beck Wednesday, April 25, 12
Slide 4
Slide 4 text
Effective tests help you sustainably deliver features Wednesday, April 25, 12
Slide 5
Slide 5 text
How do you know tests are effective? Wednesday, April 25, 12
Slide 6
Slide 6 text
Shallow bugs Wednesday, April 25, 12
Slide 7
Slide 7 text
Not staring into space watching dots fly across the screen Wednesday, April 25, 12
Slide 8
Slide 8 text
Relatively little time spent fixing test problems Wednesday, April 25, 12
Slide 9
Slide 9 text
Simple, clean design Wednesday, April 25, 12
Slide 10
Slide 10 text
One thing I didn't say... Wednesday, April 25, 12
Slide 11
Slide 11 text
Coverage Wednesday, April 25, 12
Slide 12
Slide 12 text
BDD is a software design process Wednesday, April 25, 12
Slide 13
Slide 13 text
How do you know your tests aren't effective? Wednesday, April 25, 12
Slide 14
Slide 14 text
Lots of test fragility Wednesday, April 25, 12
Slide 15
Slide 15 text
Test-based slowdowns Wednesday, April 25, 12
Slide 16
Slide 16 text
No confidence in your ability to change Wednesday, April 25, 12
Slide 17
Slide 17 text
Why is testing effective? Wednesday, April 25, 12
Slide 18
Slide 18 text
Expressing requirements in code Wednesday, April 25, 12
Slide 19
Slide 19 text
Universal client Wednesday, April 25, 12
Slide 20
Slide 20 text
Rapid feedback Wednesday, April 25, 12
Slide 21
Slide 21 text
Canary Wednesday, April 25, 12
Slide 22
Slide 22 text
"More Testable" is a legitimate engineering goal Wednesday, April 25, 12
Slide 23
Slide 23 text
Test-Driven vs. Test First Wednesday, April 25, 12
Slide 24
Slide 24 text
What makes for an effective test? Wednesday, April 25, 12
Slide 25
Slide 25 text
Tests are code without tests! Wednesday, April 25, 12
Slide 26
Slide 26 text
Tests have two lives Wednesday, April 25, 12
Slide 27
Slide 27 text
1. While you are creating the feature Wednesday, April 25, 12
Slide 28
Slide 28 text
2. Until the heat death of the universe Wednesday, April 25, 12
Slide 29
Slide 29 text
All tests have costs Some tests have value Wednesday, April 25, 12
Slide 30
Slide 30 text
Simple Well-defined Independent Fast Truthful Wednesday, April 25, 12
Slide 31
Slide 31 text
Simple Wednesday, April 25, 12
Slide 32
Slide 32 text
A test is simple if its purpose is immediately clear simple Wednesday, April 25, 12
Slide 33
Slide 33 text
Fixtures Long tests Bad naming Clever simple Wednesday, April 25, 12
Slide 34
Slide 34 text
Good naming Factories Refactoring tests simple Wednesday, April 25, 12
Slide 35
Slide 35 text
If the tests can't be simple, the code is bad simple Wednesday, April 25, 12
Slide 36
Slide 36 text
Tests not written via TDD often have trouble being simple simple Wednesday, April 25, 12
Slide 37
Slide 37 text
Well-defined Wednesday, April 25, 12
Slide 38
Slide 38 text
A test is well-defined if it gives the same result every time well-defined Wednesday, April 25, 12
Slide 39
Slide 39 text
Dates Random well-defined Wednesday, April 25, 12
Slide 40
Slide 40 text
Encapsulation Mocks well-defined Wednesday, April 25, 12
Slide 41
Slide 41 text
Independent Wednesday, April 25, 12
Slide 42
Slide 42 text
A test is independent if it does not depend on external state independent Wednesday, April 25, 12
Slide 43
Slide 43 text
Global data Fixtures independent Wednesday, April 25, 12
Slide 44
Slide 44 text
Factories Teardown/ Transactions independent Wednesday, April 25, 12
Slide 45
Slide 45 text
Fast Wednesday, April 25, 12
Slide 46
Slide 46 text
A test is fast if it is fast fast Wednesday, April 25, 12
Slide 47
Slide 47 text
Too many objects Databases Third Party Frameworks fast Wednesday, April 25, 12
Slide 48
Slide 48 text
Encapsulation Unit testing fast Wednesday, April 25, 12
Slide 49
Slide 49 text
If your tests are not fast, you can not be test-driven fast Wednesday, April 25, 12
Slide 50
Slide 50 text
Truthful Wednesday, April 25, 12
Slide 51
Slide 51 text
A test is truthful if it accurately reflects the underlying code truthful Wednesday, April 25, 12
Slide 52
Slide 52 text
Too specific Mocks Surface values truthful Wednesday, April 25, 12
Slide 53
Slide 53 text
Indirect testing Defensive mocking Understanding requirements truthful Wednesday, April 25, 12
Slide 54
Slide 54 text
Test both sides of a problem Wednesday, April 25, 12
Slide 55
Slide 55 text
The testing pyramid and chains of responsibility Wednesday, April 25, 12
Slide 56
Slide 56 text
Noel Rappin @noelrap railsrx.com Wednesday, April 25, 12