• Save
The Behaviour-Driven Programmer
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

The Behaviour-Driven Programmer

  • 3,309 views
Uploaded 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...

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,309
On Slideshare
3,294
From Embeds
15
Number of Embeds
3

Actions

Shares
Downloads
0
Comments
0
Likes
10

Embeds 15

http://www.linkedin.com 12
https://twitter.com 2
http://twitter.com 1

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!