3. MOROHASHI Kyosuke
http://d.hatena.ne.jp/moro/
http://twitter.com/moro/
• Eiwa System Management
...(snip)... Agile Group
• Rails (Consultant | Programmer)
4. 1. Ruby x Agile. Ruby x Fragile?
2. What’s Cucumber?
3. Values for customer.
4. Values for developer.
5. What’s Cucumber? again
~ a framework for conversation
5. Summary
• It’s cool to use Natural Language x
Ruby.
• Cucumber:
• is a tool to execute functional descriptions written
in plain-text as automated tests
• is a framework to talk with customers.
• provides grammer and context to grow
vocabularies.
6. 1. Ruby x Agile. Ruby x Fragile?
2. What’s Cucumber?
3. Values for customer.
4. Values for developer.
5. What’s Cucumber? again
~ a framework for conversation
8. What is “Agile” for
you?
fkino says:
I say:
Make client be happy as
soon as possible.
9. Ruby x Agile
• less lead time.
• more “productivity”
• demonstrate with software to
discuss the project.
10. Ruby x Fragile?
• Become positive for the change.
But get fear for regression.
• TDD is fun. But tests are too
many and they upset our rhythm.
• Demonstrate with software. But is
there anything forgotten?
11. to Keep embracing change
• Ruby x Agile give me passion.
• want to stand against new fear.
• Cucumber may be the key.
12. 1. Ruby x Agile. Ruby x Fragile?
2. What’s Cucumber?
3. Values for customer.
4. Values for developer.
5. What’s Cucumber? again.
~ a framework for conversation
14. Cucumber
• a tool that can execute plain-text
functional descriptions as automated
tests
• execute Ruby code associated with a
sentence written in natural language .
• End-to-end testing.
• request from browser, response to
browser.
15. Cucumber
• cucumber-rails includes basic DSLs
for testing webapp.
• can define higher level steps.
• “table” for data combination.
• data transformation macro.
17. 1. Ruby x Agile. Ruby x Fragile?
2. What’s Cucumber?
3. Values for customer.
4. Values for developer.
5. What’s Cucumber? again.
~ a framework for conversation
18. Customer can read the tests.
• User &/| business people can read
and understand it.
• We, developer write it.
• We can talk about it. It helps us to
build software for them.
19. Language for communication
• the Language both
understandable.
• reflect domain knowledge and project
history.
• High-context
• Strict and/or verifiable language. .
• and executable!!
20. 1. Ruby x Agile. Ruby x Fragile?
2. What’s Cucumber?
3. Values for customer.
4. Values for developer.
5. What’s Cucumber? again
~ a framework for conversation
22. “Ruby”
• Step (natural language sentences in
scenario) is a label with parameters.
• Execute ruby code associated with
simple Regexp.
23. the powers of Ruby
• We can execute test using the powers of
Ruby.
• Access a database and setup test data.
• Inject configurations.
• Start/stop mocked external servers.
• and more..
24. Valuable tests
• End to end test from “View” layer to
“Model” layer.
• a kind of integration test integration.
• Test the app’s behavior from user layer
(browser for webapp).
• No concern to app’s internal code.
25. 1. Ruby x Agile. Ruby x Fragile?
2. What’s Cucumber?
3. Values for customer.
4. Values for developer.
5. What’s Cucumber? again.
~ a framework for conversation
28. Constrained vocabularies
• Abstract some vocabularies fitting
the app from whole natural language.
• describe even a new feature using the
vocabularies.
• Every member in the team know the
vocabularies.
29. david says:
Constraints are liberating
(a straight jacket for your mind)
制約が自由をもたらす
(あなたの思考の拘束衣)
http://www.scribd.com/doc/26482/-RailsConf-Keynote-David-Heinemeier-Hansson
30. Grow the vocabularies.
• A team get the power to grow
vocabularies.
• Grow the vocabularies to describe
the system as grow the system
itself.
31. Accelerate communication.
• Grow project specific language.
• language = grammer(by cuke) +
vocabularies(grown by the team)
• described feature is testable
• Testable spec. drives development.
32. What’s cucumber? again.
• the framework to make project
specific language for both customer
and developer.
• provides grammer and context to
grow vocabularies.
33. Summary
• It’s cool to use Natural Language x
Ruby.
• Cucumber:
• is a tool that can execute plain-text functional
descriptions as automated tests
• is a framework to talk with customers.
• provides grammer and context to grow
vocabularies.