Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
@aleks_voronov
TDD in Real World
ALEXANDER VORONOV
@aleks_voronov
@aleks_voronov
WHAT IS NATURAL?
@aleks_voronov
SURVIVAL OF THE FITTEST
@aleks_voronov
MANUAL TESTING
@aleks_voronov
OH YOU THINK IT'S FASTER?
@aleks_voronov
OH YOU THINK
IT'S FASTER?
@aleks_voronov
LESSONS LEARNED
@aleks_voronov
– Heraclitus
“Everything flows”
@aleks_voronov
SUCCESS!
@aleks_voronov
OR IS IT?
@aleks_voronov
FEEDBACK LOOP
@aleks_voronov
AUTOMATED TESTING
@aleks_voronov
UNIT TESTS
INTEGRATION TESTS
ACCEPTANCE TESTS
MANUAL
@aleks_voronov
UNIT TESTS
INTEGRATION TESTS
ACCEPTANCE TESTS
MANUAL
@aleks_voronov
UNIT TESTS
INTEGRATION TESTS
ACCEPTANCE TESTS
MANUAL
@aleks_voronov
UNIT TESTS
INTEGRATION TESTS
ACCEPTANCE TESTS
MANUAL
@aleks_voronov
SELF-TESTING CODE
@aleks_voronov
TEST DRIVEN
DEVELOPMENT
@aleks_voronov
TDD AS A PRACTICE
DEVELOPMENT PRACTICE
@aleks_voronov
TESTS FIRST
RED ‣ GREEN ‣ REFACTOR
@aleks_voronov
THINK FIRST
THINK ‣ RED ‣ GREEN ‣ REFACTOR
@aleks_voronov
PROFIT✨
@aleks_voronov
SOUNDS LIKE
WE ACHIEVE
SAME WITH
UNIT TESTS...
@aleks_voronov
UNIT TESTING VS TDD
@aleks_voronov
ONLY NECESSARY CODE
BEST CODE IS NO CODE
@aleks_voronov
RED STAGE SCHOOL
TRUE TEST ALWAYS
REMEMBERS
WHERE IT COMES FROM
@aleks_voronov
CLEANER INTERFACES
@aleks_voronov
CLEANER INTERFACES
‣ TESTS ARE FIRST TO USE CODE
@aleks_voronov
CLEANER INTERFACES
‣ TESTS ARE FIRST TO USE CODE
‣ PLAY IN PURE SANDBOX ENVIRONMENT
@aleks_voronov
CLEANER INTERFACES
‣ TESTS ARE FIRST TO USE CODE
‣ PLAY IN PURE SANDBOX ENVIRONMENT
‣ UNBIASED DESIGNING
@aleks_voronov
CLEANER INTERFACES
‣ TESTS ARE FIRST TO USE CODE
‣ PLAY IN PURE SANDBOX ENVIRONMENT
‣ UNBIASED DESIGNING
‣ ...
@aleks_voronov
QUESTIONS ARISE
@aleks_voronov
WHAT IF I NEED
CODE FIRST?
@aleks_voronov
SPIKE SOLUTION
@aleks_voronov
SPIKE SOLUTION
‣ ISOLATE
@aleks_voronov
SPIKE SOLUTION
‣ ISOLATE
‣ SHORTEN FEEDBACK LOOP: REPL, PLAYGROUND, FIDDLE
@aleks_voronov
SPIKE SOLUTION
‣ ISOLATE
‣ SHORTEN FEEDBACK LOOP: REPL, PLAYGROUND, FIDDLE
‣ SETUP SANDBOX: LIBRARIES, STUB...
@aleks_voronov
REFACTORING WITH TDD
@aleks_voronov
REFACTORING IS
ABOUT CODE
NOT LOGIC
@aleks_voronov
CHANGING INTERFACE
@aleks_voronov
I ❤ PROTOCOLS
@aleks_voronov
STRIVE FOR CONFIDENCE
@aleks_voronov
CHANGING IMPLEMENTATION
@aleks_voronov
DEPENDENCIES
@aleks_voronov
TEST DOUBLES
@aleks_voronov
TEST DOUBLES
‣ DUMMIES
@aleks_voronov
TEST DOUBLES
‣ DUMMIES
‣ FAKES
@aleks_voronov
TEST DOUBLES
‣ DUMMIES
‣ FAKES
‣ STUBS
@aleks_voronov
TEST DOUBLES
‣ DUMMIES
‣ FAKES
‣ STUBS
‣ SPIES
@aleks_voronov
TEST DOUBLES
‣ DUMMIES
‣ FAKES
‣ STUBS
‣ SPIES
‣ MOCKS
@aleks_voronov
TESTING STYLES
CLASSICAL & MOCKIST
@aleks_voronov
CLASSICAL TESTING
@aleks_voronov
CLASSICAL TESTING
‣ ABOUT STATE
@aleks_voronov
CLASSICAL TESTING
‣ ABOUT STATE
‣ CAN BREAK ENCAPSULATION
@aleks_voronov
CLASSICAL TESTING
‣ ABOUT STATE
‣ CAN BREAK ENCAPSULATION
‣ USE STUBS
@aleks_voronov
MOCKIST TESTING
@aleks_voronov
MOCKIST TESTING
‣ ABOUT BEHAVIOUR
@aleks_voronov
MOCKIST TESTING
‣ ABOUT BEHAVIOUR
‣ TELL, DON'T ASK
@aleks_voronov
MOCKIST TESTING
‣ ABOUT BEHAVIOUR
‣ TELL, DON'T ASK
‣ USE MOCKS
@aleks_voronov
DETECT BAD SMELL EARLY
#
@aleks_voronov
TDD FOR BETTER DESIGN
@aleks_voronov
TESTS ARE FIRST
WHO LEAVE FEEDBACK
$ %
@aleks_voronov
TESTS HELP YOU EVOLVE
@aleks_voronov
FUNCTIONAL CORE
IMPERATIVE SHELL
@aleks_voronov
INTRODUCING TDD
TO YOUR TEAM
@aleks_voronov
INTRODUCING TDD
TO YOUR TEAM
‣ JUST START WRITING TESTS
@aleks_voronov
INTRODUCING TDD
TO YOUR TEAM
‣ JUST START WRITING TESTS
‣ TEST SIMPLEST THINGS
@aleks_voronov
INTRODUCING TDD
TO YOUR TEAM
‣ JUST START WRITING TESTS
‣ TEST SIMPLEST THINGS
‣ GET USED WITH TOOLS
@aleks_voronov
INTRODUCING TDD
TO YOUR TEAM
‣ JUST START WRITING TESTS
‣ TEST SIMPLEST THINGS
‣ GET USED WITH TOOLS
‣ LET ...
@aleks_voronov
INTRODUCING TDD
TO YOUR TEAM
‣ JUST START WRITING TESTS
‣ TEST SIMPLEST THINGS
‣ GET USED WITH TOOLS
‣ LET ...
@aleks_voronov
INTRODUCING TDD
TO YOUR TEAM
‣ JUST START WRITING TESTS
‣ TEST SIMPLEST THINGS
‣ GET USED WITH TOOLS
‣ LET ...
@aleks_voronov
HOW TO START
WRITING TESTS?
@aleks_voronov
INTRODUCING TDD
TO LEGACY PROJECT
@aleks_voronov
INTRODUCING TDD
TO LEGACY PROJECT
‣ REMEMBER BOY SCOUT RULE?
@aleks_voronov
INTRODUCING TDD
TO LEGACY PROJECT
‣ REMEMBER BOY SCOUT RULE?
‣ START WITH CRITICAL FEATURES
@aleks_voronov
INTRODUCING TDD
TO LEGACY PROJECT
‣ REMEMBER BOY SCOUT RULE?
‣ START WITH CRITICAL FEATURES
‣ FIND LOWEST P...
@aleks_voronov
INTRODUCING TDD
TO LEGACY PROJECT
‣ REMEMBER BOY SCOUT RULE?
‣ START WITH CRITICAL FEATURES
‣ FIND LOWEST P...
@aleks_voronov
INTRODUCING TDD
TO LEGACY PROJECT
‣ REMEMBER BOY SCOUT RULE?
‣ START WITH CRITICAL FEATURES
‣ FIND LOWEST P...
@aleks_voronov
INTRODUCING TDD
TO LEGACY PROJECT
‣ REMEMBER BOY SCOUT RULE?
‣ START WITH CRITICAL FEATURES
‣ FIND LOWEST P...
@aleks_voronov
INTEGRATIONS
@aleks_voronov
CONTINUOUS
INTEGRATION
@aleks_voronov
WALKING SKELETON FIRST
@aleks_voronov
CI SERVICES
@aleks_voronov
SEPARATE JOB PER CONFIG
@aleks_voronov
PULL REQUESTS
& CODE REVIEW
@aleks_voronov
MAKE IT FUN AND CLEAR
@aleks_voronov
DESKTOP
OR MESSENGER
NOTIFICATIONS
@aleks_voronov
MAKE IT FUN AND CLEAR
@aleks_voronov
CONTINUOUS
DEPLOYMENT
@aleks_voronov
MAKE IT FUN AND CLEAR
@aleks_voronov
CODE COVERAGE
@aleks_voronov
THANK YOU!
QUESTIONS?
Prochain SlideShare
Chargement dans…5
×

SE2016 iOS Alexander Voronov "Test driven development in real world"

316 vues

Publié le

Event: #SE2016
Stage: iOS
Data: 4 of September 2016
Speaker: Alexander Voronov
Topic: Test Driven Development in real world

INHACKING site: https://inhacking.com
SE2016 site: http://se2016.inhacking.com/

Publié dans : Mobile
  • Login to see the comments

SE2016 iOS Alexander Voronov "Test driven development in real world"

  1. 1. @aleks_voronov TDD in Real World ALEXANDER VORONOV @aleks_voronov
  2. 2. @aleks_voronov WHAT IS NATURAL?
  3. 3. @aleks_voronov SURVIVAL OF THE FITTEST
  4. 4. @aleks_voronov MANUAL TESTING
  5. 5. @aleks_voronov OH YOU THINK IT'S FASTER?
  6. 6. @aleks_voronov OH YOU THINK IT'S FASTER?
  7. 7. @aleks_voronov LESSONS LEARNED
  8. 8. @aleks_voronov – Heraclitus “Everything flows”
  9. 9. @aleks_voronov SUCCESS!
  10. 10. @aleks_voronov OR IS IT?
  11. 11. @aleks_voronov FEEDBACK LOOP
  12. 12. @aleks_voronov AUTOMATED TESTING
  13. 13. @aleks_voronov UNIT TESTS INTEGRATION TESTS ACCEPTANCE TESTS MANUAL
  14. 14. @aleks_voronov UNIT TESTS INTEGRATION TESTS ACCEPTANCE TESTS MANUAL
  15. 15. @aleks_voronov UNIT TESTS INTEGRATION TESTS ACCEPTANCE TESTS MANUAL
  16. 16. @aleks_voronov UNIT TESTS INTEGRATION TESTS ACCEPTANCE TESTS MANUAL
  17. 17. @aleks_voronov SELF-TESTING CODE
  18. 18. @aleks_voronov TEST DRIVEN DEVELOPMENT
  19. 19. @aleks_voronov TDD AS A PRACTICE DEVELOPMENT PRACTICE
  20. 20. @aleks_voronov TESTS FIRST RED ‣ GREEN ‣ REFACTOR
  21. 21. @aleks_voronov THINK FIRST THINK ‣ RED ‣ GREEN ‣ REFACTOR
  22. 22. @aleks_voronov PROFIT✨
  23. 23. @aleks_voronov SOUNDS LIKE WE ACHIEVE SAME WITH UNIT TESTS...
  24. 24. @aleks_voronov UNIT TESTING VS TDD
  25. 25. @aleks_voronov ONLY NECESSARY CODE BEST CODE IS NO CODE
  26. 26. @aleks_voronov RED STAGE SCHOOL TRUE TEST ALWAYS REMEMBERS WHERE IT COMES FROM
  27. 27. @aleks_voronov CLEANER INTERFACES
  28. 28. @aleks_voronov CLEANER INTERFACES ‣ TESTS ARE FIRST TO USE CODE
  29. 29. @aleks_voronov CLEANER INTERFACES ‣ TESTS ARE FIRST TO USE CODE ‣ PLAY IN PURE SANDBOX ENVIRONMENT
  30. 30. @aleks_voronov CLEANER INTERFACES ‣ TESTS ARE FIRST TO USE CODE ‣ PLAY IN PURE SANDBOX ENVIRONMENT ‣ UNBIASED DESIGNING
  31. 31. @aleks_voronov CLEANER INTERFACES ‣ TESTS ARE FIRST TO USE CODE ‣ PLAY IN PURE SANDBOX ENVIRONMENT ‣ UNBIASED DESIGNING ‣ POORLY DESIGNED CODE WITH TESTS IS STILL BETTER THAN
 POORLY DESIGNED CODE WITHOUT TESTS
  32. 32. @aleks_voronov QUESTIONS ARISE
  33. 33. @aleks_voronov WHAT IF I NEED CODE FIRST?
  34. 34. @aleks_voronov SPIKE SOLUTION
  35. 35. @aleks_voronov SPIKE SOLUTION ‣ ISOLATE
  36. 36. @aleks_voronov SPIKE SOLUTION ‣ ISOLATE ‣ SHORTEN FEEDBACK LOOP: REPL, PLAYGROUND, FIDDLE
  37. 37. @aleks_voronov SPIKE SOLUTION ‣ ISOLATE ‣ SHORTEN FEEDBACK LOOP: REPL, PLAYGROUND, FIDDLE ‣ SETUP SANDBOX: LIBRARIES, STUBBED RESPONSES
  38. 38. @aleks_voronov REFACTORING WITH TDD
  39. 39. @aleks_voronov REFACTORING IS ABOUT CODE NOT LOGIC
  40. 40. @aleks_voronov CHANGING INTERFACE
  41. 41. @aleks_voronov I ❤ PROTOCOLS
  42. 42. @aleks_voronov STRIVE FOR CONFIDENCE
  43. 43. @aleks_voronov CHANGING IMPLEMENTATION
  44. 44. @aleks_voronov DEPENDENCIES
  45. 45. @aleks_voronov TEST DOUBLES
  46. 46. @aleks_voronov TEST DOUBLES ‣ DUMMIES
  47. 47. @aleks_voronov TEST DOUBLES ‣ DUMMIES ‣ FAKES
  48. 48. @aleks_voronov TEST DOUBLES ‣ DUMMIES ‣ FAKES ‣ STUBS
  49. 49. @aleks_voronov TEST DOUBLES ‣ DUMMIES ‣ FAKES ‣ STUBS ‣ SPIES
  50. 50. @aleks_voronov TEST DOUBLES ‣ DUMMIES ‣ FAKES ‣ STUBS ‣ SPIES ‣ MOCKS
  51. 51. @aleks_voronov TESTING STYLES CLASSICAL & MOCKIST
  52. 52. @aleks_voronov CLASSICAL TESTING
  53. 53. @aleks_voronov CLASSICAL TESTING ‣ ABOUT STATE
  54. 54. @aleks_voronov CLASSICAL TESTING ‣ ABOUT STATE ‣ CAN BREAK ENCAPSULATION
  55. 55. @aleks_voronov CLASSICAL TESTING ‣ ABOUT STATE ‣ CAN BREAK ENCAPSULATION ‣ USE STUBS
  56. 56. @aleks_voronov MOCKIST TESTING
  57. 57. @aleks_voronov MOCKIST TESTING ‣ ABOUT BEHAVIOUR
  58. 58. @aleks_voronov MOCKIST TESTING ‣ ABOUT BEHAVIOUR ‣ TELL, DON'T ASK
  59. 59. @aleks_voronov MOCKIST TESTING ‣ ABOUT BEHAVIOUR ‣ TELL, DON'T ASK ‣ USE MOCKS
  60. 60. @aleks_voronov DETECT BAD SMELL EARLY #
  61. 61. @aleks_voronov TDD FOR BETTER DESIGN
  62. 62. @aleks_voronov TESTS ARE FIRST WHO LEAVE FEEDBACK $ %
  63. 63. @aleks_voronov TESTS HELP YOU EVOLVE
  64. 64. @aleks_voronov FUNCTIONAL CORE IMPERATIVE SHELL
  65. 65. @aleks_voronov INTRODUCING TDD TO YOUR TEAM
  66. 66. @aleks_voronov INTRODUCING TDD TO YOUR TEAM ‣ JUST START WRITING TESTS
  67. 67. @aleks_voronov INTRODUCING TDD TO YOUR TEAM ‣ JUST START WRITING TESTS ‣ TEST SIMPLEST THINGS
  68. 68. @aleks_voronov INTRODUCING TDD TO YOUR TEAM ‣ JUST START WRITING TESTS ‣ TEST SIMPLEST THINGS ‣ GET USED WITH TOOLS
  69. 69. @aleks_voronov INTRODUCING TDD TO YOUR TEAM ‣ JUST START WRITING TESTS ‣ TEST SIMPLEST THINGS ‣ GET USED WITH TOOLS ‣ LET OTHERS SEE WHAT YOU DO
  70. 70. @aleks_voronov INTRODUCING TDD TO YOUR TEAM ‣ JUST START WRITING TESTS ‣ TEST SIMPLEST THINGS ‣ GET USED WITH TOOLS ‣ LET OTHERS SEE WHAT YOU DO ‣ INTRODUCE BOY SCOUT RULE
  71. 71. @aleks_voronov INTRODUCING TDD TO YOUR TEAM ‣ JUST START WRITING TESTS ‣ TEST SIMPLEST THINGS ‣ GET USED WITH TOOLS ‣ LET OTHERS SEE WHAT YOU DO ‣ INTRODUCE BOY SCOUT RULE ‣ PAIR PROGRAMMING
  72. 72. @aleks_voronov HOW TO START WRITING TESTS?
  73. 73. @aleks_voronov INTRODUCING TDD TO LEGACY PROJECT
  74. 74. @aleks_voronov INTRODUCING TDD TO LEGACY PROJECT ‣ REMEMBER BOY SCOUT RULE?
  75. 75. @aleks_voronov INTRODUCING TDD TO LEGACY PROJECT ‣ REMEMBER BOY SCOUT RULE? ‣ START WITH CRITICAL FEATURES
  76. 76. @aleks_voronov INTRODUCING TDD TO LEGACY PROJECT ‣ REMEMBER BOY SCOUT RULE? ‣ START WITH CRITICAL FEATURES ‣ FIND LOWEST POINT YOU CAN TEST
  77. 77. @aleks_voronov INTRODUCING TDD TO LEGACY PROJECT ‣ REMEMBER BOY SCOUT RULE? ‣ START WITH CRITICAL FEATURES ‣ FIND LOWEST POINT YOU CAN TEST ‣ ADD TESTS, THEN REFACTOR
  78. 78. @aleks_voronov INTRODUCING TDD TO LEGACY PROJECT ‣ REMEMBER BOY SCOUT RULE? ‣ START WITH CRITICAL FEATURES ‣ FIND LOWEST POINT YOU CAN TEST ‣ ADD TESTS, THEN REFACTOR ‣ STEP BY STEP
  79. 79. @aleks_voronov INTRODUCING TDD TO LEGACY PROJECT ‣ REMEMBER BOY SCOUT RULE? ‣ START WITH CRITICAL FEATURES ‣ FIND LOWEST POINT YOU CAN TEST ‣ ADD TESTS, THEN REFACTOR ‣ STEP BY STEP ‣ YES, IT TAKES TIME
  80. 80. @aleks_voronov INTEGRATIONS
  81. 81. @aleks_voronov CONTINUOUS INTEGRATION
  82. 82. @aleks_voronov WALKING SKELETON FIRST
  83. 83. @aleks_voronov CI SERVICES
  84. 84. @aleks_voronov SEPARATE JOB PER CONFIG
  85. 85. @aleks_voronov PULL REQUESTS & CODE REVIEW
  86. 86. @aleks_voronov MAKE IT FUN AND CLEAR
  87. 87. @aleks_voronov DESKTOP OR MESSENGER NOTIFICATIONS
  88. 88. @aleks_voronov MAKE IT FUN AND CLEAR
  89. 89. @aleks_voronov CONTINUOUS DEPLOYMENT
  90. 90. @aleks_voronov MAKE IT FUN AND CLEAR
  91. 91. @aleks_voronov CODE COVERAGE
  92. 92. @aleks_voronov THANK YOU! QUESTIONS?

×