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.

Applying BDD in refactoring

  • Login to see the comments

  • Be the first to like this

Applying BDD in refactoring

  1. 1. Applying Behavior Driven Development in Refactoring<br />Hong Jun<br />Software Development Engineer @ Amazon<br />
  2. 2. Where we started… <br />10+ years old legacy system<br />Complicated business logic<br />Messy code, without unit tests<br />Lost the requirement/specification<br />The 90+% members of the current team are the new hire<br />
  3. 3. Where do we want to get to?<br />Simplify, more maintainable<br />Better quality, testable<br />Continues integration<br />Able to deploy everyday<br />
  4. 4. Make the things as easy as possible!<br />
  5. 5. Integration Pipeline<br />
  6. 6. Build Server<br />
  7. 7. How about integrate them?<br />Scenarios<br />Scenarios<br />Design and implement Test Cases<br />Business Logic/Story<br />deploy<br />Design and implement the module<br />Verify<br />Scenarios also provide an invaluable regression test suite.<br />
  8. 8. End to end, black box testing <br />functional, white box testing<br />
  9. 9. Automated Test Architecture<br />
  10. 10. Real Example<br />
  11. 11.
  12. 12.
  13. 13.
  14. 14.
  15. 15.
  16. 16. Continuous Deployment<br />
  17. 17.
  18. 18. Incremental Delivery<br />The framework/plug-in structure that let us can deliver our features incrementally; for picked the features during runtime instead of during commit time, that will help us reduce code branching requirements, make our integration and delivery process faster.<br />
  19. 19. Throughput Throttling<br />Throughput Controller let the deployment same as the real production deployment structure that not only let us control the volume finer and easier, but also let us find some issues involving multi instances running parallelly (such as: resource concurrent access, load balance and etc.) possible. <br />
  20. 20. Incident Recovery<br />When the incident happen, the process about the type message involving the issues could be switched back to the legacy part automatically.<br />
  21. 21. Now, we can get there safely.<br />Here we go!<br />
  22. 22.<br /><br />