Your SlideShare is downloading. ×
The Behaviour-Driven Programmer
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

The Behaviour-Driven Programmer

3,002
views

Published on

An introduction to Behaviour-Driven Development, the second-generation agile methodology that aims at delivering software that matters. …

An introduction to Behaviour-Driven Development, the second-generation agile methodology that aims at delivering software that matters.

Most of us know that BDD has something to do with tests and the way code is produced. But what is it exactly? How does it differ from Test-Driven Development?

We'll discover the technical principles and practices lying at the heart of BDD, as experienced from a naive programmer perspective.

But BDD is not only about writing better tests and code. It really holds higher purposes...

Published in: Technology

0 Comments
10 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,002
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
10
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. v0 .1- al ph a !"B"#$v%&r-Dr%v"( Pr&)r$**"rThe first steps of a Behaviour-Driven Developer
  • 2. Julien Biezemans @jbpros
  • 3. Who?
  • 4. You happen to write code...
  • 5. useless,
  • 6. delivered (too) late,
  • 7. fragile,
  • 8. difficult to deploy,
  • 9. impenetrable,
  • 10. hard to maintain.
  • 11. BDD
  • 12. Dan North@tastapod
  • 13. “BDD is a second-generation, outside-in, pull-based, multiple-stakeholder,multiple-scale, high-automation,agile methodology.”
  • 14. “It describes a cycle of interactionswith well-defined outputs, resulting inthe delivery of working, testedsoftware that matters.”
  • 15. Test-DrivenDevelopment
  • 16. Red, Green, Refactor
  • 17. Where to start?
  • 18. What to test?
  • 19. Behaviour
  • 20. From Test to Behaviour
  • 21. Most important missing behaviour today?
  • 22. Business value
  • 23. Story
  • 24. As ...I want ...So that ...
  • 25. Estimation
  • 26. Acceptance criteria
  • 27. Scenario
  • 28. Context ➔ Event ➔ Outcome
  • 29. Given ➔ When ➔ Then
  • 30. Ubiquitous Language
  • 31. BDD in Ruby/Rails
  • 32. Stories + Scenarios =Cucumber features
  • 33. Cucumberhttp://github.com/cucumber
  • 34. Full-stack, deliverable
  • 35. Outside-in
  • 36. Acceptance testsUnit testsCode
  • 37. Run feature
  • 38. Missing step definition #fail
  • 39. Write step definition
  • 40. features/step_definitions/tamagotchi_steps.rb
  • 41. bin/app.rb
  • 42. Run feature
  • 43. Missing code #fail
  • 44. RSpechttp://github.com/rspec
  • 45. Write spec
  • 46. spec/lib/tamagotchi_spec.rb
  • 47. Run spec
  • 48. Missing code #fail
  • 49. Make it pass
  • 50. lib/tamagotchi.rb
  • 51. Refactor
  • 52. Repeat until the feature passes
  • 53. Design
  • 54. spec/lib/tamagotchi_spec.rb
  • 55. spec/lib/tamagotchi_spec.rb
  • 56. lib/tamagotchi.rb
  • 57. lib/tamagotchi.rb
  • 58. spec/lib/tamagotchi_spec.rb
  • 59. Stubs
  • 60. spec/lib/tamagotchi_spec.rb
  • 61. lib/tamagotchi.rb
  • 62. spec/lib/tamagotchi_spec.rb
  • 63. spec/lib/tamagotchi_spec.rb
  • 64. Spec everything yourstep definitions need
  • 65. spec/lib/tamagotchi_spec.rb
  • 66. lib/tamagotchi.rb
  • 67. spec/lib/tamagotchi_spec.rb
  • 68. lib/tamagotchi.rb
  • 69. features/step_definitions/tamagotchi_steps.rb
  • 70. Living documentation
  • 71. Ruby on Rails
  • 72. View ➔ Controller ➔ Model
  • 73. From Programmer to Developer
  • 74. program v.To provide (a machine) witha set of coded workinginstructions.
  • 75. develop v.To bring out the capabilitiesof; bring to a more advancedor effective state.
  • 76. Deliberate discovery
  • 77. Know whatyou don’t know
  • 78. Know whatyou don’t knowyou don’t know
  • 79. Learn the domains
  • 80. Learn the tools
  • 81. Know the people
  • 82. Feedback
  • 83. Real options
  • 84. Practice
  • 85. Your code is now...
  • 86. useful,
  • 87. delivered on time,
  • 88. robust,
  • 89. easily deployable,
  • 90. intelligible,
  • 91. maintainable,
  • 92. A piece of software that matters.
  • 93. Don’t deliver features
  • 94. Shipcapabilities!