15

Click here to load reader

Behavior Driven Education: A Story of Learning ROR

Embed Size (px)

DESCRIPTION

Dan Levenson walks us through his path to Rails Enlightenment

Citation preview

Page 1: Behavior Driven Education: A Story of Learning ROR

BDE:Behavior Driven EducationA Story of Learning ROR

Daniel Levenson

Page 2: Behavior Driven Education: A Story of Learning ROR

DISCLAIMER● This presentation is most likely not going to

teach you anything new

● overview and reflection of my experience learning web development○ maybe some useful take home messages?!

Page 3: Behavior Driven Education: A Story of Learning ROR

DefinitionsTest Driven Development (TDD): (paraphrased from http://en.wikipedia.org/wiki/Test-driven_development)

1. Write a failing "automated unit test"2. Write code to make this test past 3. Refactor - making sure that the test (and the rest of the suite) still passes4. Repeat steps 1-3

Behavior Driven Development (BDD):(paraphrased from http://en.wikipedia.org/wiki/Test-driven_development)

"based on TDD"- greater emphasis on domain driven design- keyword: outside-in development

Page 4: Behavior Driven Education: A Story of Learning ROR

Path to Rails Enlightenment● Ruby

● MVC

● Object Relationships

● Testing

● Vim!

Page 5: Behavior Driven Education: A Story of Learning ROR

The hardest button to buttonname the band?

"Write the code you wish you had"- Cuke God

What to write.

Page 6: Behavior Driven Education: A Story of Learning ROR

How to streamline that translation● Capture client-desired functionality in stories

● The base of the pyramid

Page 7: Behavior Driven Education: A Story of Learning ROR
Page 8: Behavior Driven Education: A Story of Learning ROR

Pivotal Tracker● Scenarios as use cases

○ Clients (sometime) know what they want, devs got to know possible 'points of entry'

● Why implementing in the first place○ In order to ...

● I am not good at remembering things,○ pivotal is.

Page 9: Behavior Driven Education: A Story of Learning ROR

Behavior Driven Education● loose definition: The process of learning

ROR (or any other high-level testable language) through 'outside-in' integration testing

● one clear implementation of BDE:○ 'Starting with Cucumber'

Page 10: Behavior Driven Education: A Story of Learning ROR

Cucumber Workflow● Outside-In Cucumber Workflow

○ create feature file

■ touch features/viewing_career_matches.feature

○ write some/all of the English language Gherkin statements that are necessary to 'do' the feature

○ watch them turn orange!

■ cucumber features/viewing_career_matches.feature

● Orange --> Gherkin steps are undefined = no matching step definition

○ write step definitions one at a time (for starters)

■ step definitions should include assertions

○ watch them turn turn red!

■ no 'code you wish you had'

○ start writing the 'code you wish you had'

Page 11: Behavior Driven Education: A Story of Learning ROR
Page 12: Behavior Driven Education: A Story of Learning ROR
Page 13: Behavior Driven Education: A Story of Learning ROR

BDE Advantages● Start with what you know!

● english -> code, not 'what the hell does this

line do'

● bite-sized

● green is good

● instills importance of testing

Page 14: Behavior Driven Education: A Story of Learning ROR

BDE Disadvantages● Cucumber setup?

○ bundle install cucumber

● Table, Scenario Outlines, Hooks○ tab bit more knowledge required to use these features, but not required

Page 15: Behavior Driven Education: A Story of Learning ROR

Unrelatedly, Thank You!● Dan Levenson● smartlogicsolutions.com