Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

313 views

Published on

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/

Published in: Mobile
  • D0WNL0AD FULL ▶ ▶ ▶ ▶ http://1url.pw/wpzGm ◀ ◀ ◀ ◀
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • D0WNL0AD FULL ▶ ▶ ▶ ▶ http://1url.pw/wpzGm ◀ ◀ ◀ ◀
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

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?

×