SlideShare une entreprise Scribd logo
1  sur  34
Télécharger pour lire hors ligne
ded
                                           reloa


Cucumber in practice
∼2 years with cucumber.




                             諸橋 恭介
                             (株)永和システムマネジメント ¦
                             Rails勉強会@東京

            Developers Summit 2010
http://cukes.info
MOROHASHI Kyosuke
     http://d.hatena.ne.jp/moro/
      http://twitter.com/moro/


• Eiwa System Management
 ...(snip)... Agile Group
• Rails (Consultant | Programmer)
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
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.
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
http://ruby.agile.esm.co.jp/
What is “Agile” for
              you?
fkino says:
                              I say:


Make client be happy as
soon as possible.
Ruby x Agile

• less lead time.
• more “productivity”
• demonstrate with software to
 discuss the project.
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?
to Keep embracing change


• Ruby x Agile give me passion.
• want to stand against new fear.
• Cucumber may be the key.
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
http://cukes.info
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.
Cucumber

• cucumber-rails includes basic DSLs
  for testing webapp.
• can define higher level steps.
• “table” for data combination.
• data transformation macro.
Cucumber


• demonstrate
 • 基本的なDSLで出来る範囲で。
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
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.
Language for communication

• the Language both
 understandable.
 • reflect domain knowledge and project
   history.

 • High-context
• Strict and/or verifiable language. .
 • and executable!!
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
Value for developer


•“Ruby”.
•more Valuable tests.
“Ruby”

• Step (natural language sentences in
  scenario) is a label with parameters.

• Execute ruby code associated with
  simple Regexp.
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..
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.
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
various vocabularies


• Learn the vocabularies(steps) within
  project.
• Learn how to combine them
demo


• TODO: step in stepやTransform
 を使った高レベルなfeature
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.
david says:




  Constraints are liberating
          (a straight jacket for your mind)
                           制約が自由をもたらす
                         (あなたの思考の拘束衣)




              http://www.scribd.com/doc/26482/-RailsConf-Keynote-David-Heinemeier-Hansson
Grow the vocabularies.

• A team get the power to grow
  vocabularies.
• Grow the vocabularies to describe
  the system as grow the system
  itself.
Accelerate communication.


• Grow project specific language.
 • language = grammer(by cuke) +
   vocabularies(grown by the team)

• described feature is testable
 • Testable spec. drives development.
What’s cucumber? again.

• the framework to make project
 specific language for both customer
 and developer.
 • provides grammer and context to
   grow vocabularies.
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.
ご清聴
ありがとう
ございました
this photo is by Ctd 2005 | http://www.flickr.com/photos/kikisdad/190501758/

Contenu connexe

Tendances

Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5
Ganesh Kondal
 
Behavior Driven Development (BDD) and Agile Testing
Behavior Driven Development (BDD) and Agile TestingBehavior Driven Development (BDD) and Agile Testing
Behavior Driven Development (BDD) and Agile Testing
dversaci
 

Tendances (20)

eXtreme Programming
eXtreme ProgrammingeXtreme Programming
eXtreme Programming
 
BDD in PHP - Behat
BDD in PHP - BehatBDD in PHP - Behat
BDD in PHP - Behat
 
Behaviour Driven Development
Behaviour Driven DevelopmentBehaviour Driven Development
Behaviour Driven Development
 
C# 6
C# 6C# 6
C# 6
 
Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5
 
Test Automation Framework with BDD and Cucumber
Test Automation Framework with BDD and CucumberTest Automation Framework with BDD and Cucumber
Test Automation Framework with BDD and Cucumber
 
Behavior Driven Development (BDD) and Agile Testing
Behavior Driven Development (BDD) and Agile TestingBehavior Driven Development (BDD) and Agile Testing
Behavior Driven Development (BDD) and Agile Testing
 
Ruby On Rails Introduction
Ruby On Rails IntroductionRuby On Rails Introduction
Ruby On Rails Introduction
 
Cucumber ppt
Cucumber pptCucumber ppt
Cucumber ppt
 
Php[tek] 2016 - BDD with Behat for Beginners
Php[tek] 2016 - BDD with Behat for BeginnersPhp[tek] 2016 - BDD with Behat for Beginners
Php[tek] 2016 - BDD with Behat for Beginners
 
BDD for APIs
BDD for APIsBDD for APIs
BDD for APIs
 
Yet Another Continuous Integration Story
Yet Another Continuous Integration StoryYet Another Continuous Integration Story
Yet Another Continuous Integration Story
 
Writer APIs in Java faster with Swagger Inflector
Writer APIs in Java faster with Swagger InflectorWriter APIs in Java faster with Swagger Inflector
Writer APIs in Java faster with Swagger Inflector
 
Test and Behaviour Driven Development (TDD/BDD)
Test and Behaviour Driven Development (TDD/BDD)Test and Behaviour Driven Development (TDD/BDD)
Test and Behaviour Driven Development (TDD/BDD)
 
Acceptance Test Driven Development With Spec Flow And Friends
Acceptance Test Driven Development With Spec Flow And FriendsAcceptance Test Driven Development With Spec Flow And Friends
Acceptance Test Driven Development With Spec Flow And Friends
 
Introduction to lambda behave
Introduction to lambda behaveIntroduction to lambda behave
Introduction to lambda behave
 
Test Driven Development in CQ5/AEM
Test Driven Development in CQ5/AEMTest Driven Development in CQ5/AEM
Test Driven Development in CQ5/AEM
 
Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...
Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...
Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...
 
Language portfolio
Language portfolioLanguage portfolio
Language portfolio
 
Myths and Challenges of Behaviour Driven Development
Myths and Challenges of Behaviour Driven DevelopmentMyths and Challenges of Behaviour Driven Development
Myths and Challenges of Behaviour Driven Development
 

En vedette

Cucumber on the JVM with Groovy
Cucumber on the JVM with GroovyCucumber on the JVM with Groovy
Cucumber on the JVM with Groovy
Richard Paul
 

En vedette (18)

Test Automation Framework using Cucumber BDD overview (part 1)
Test Automation Framework using Cucumber BDD overview (part 1)Test Automation Framework using Cucumber BDD overview (part 1)
Test Automation Framework using Cucumber BDD overview (part 1)
 
Cucumber on the JVM with Groovy
Cucumber on the JVM with GroovyCucumber on the JVM with Groovy
Cucumber on the JVM with Groovy
 
Bdd using Cucumber
Bdd using CucumberBdd using Cucumber
Bdd using Cucumber
 
Web driver selenium simplified
Web driver selenium simplifiedWeb driver selenium simplified
Web driver selenium simplified
 
Oracle Exadata Exam Dump
Oracle Exadata Exam DumpOracle Exadata Exam Dump
Oracle Exadata Exam Dump
 
Specification-By-Example with Gherkin
Specification-By-Example with GherkinSpecification-By-Example with Gherkin
Specification-By-Example with Gherkin
 
Cucumber & gherkin language
Cucumber & gherkin languageCucumber & gherkin language
Cucumber & gherkin language
 
Gherkin for test automation in agile
Gherkin for test automation in agileGherkin for test automation in agile
Gherkin for test automation in agile
 
STOP! You're Testing Too Much - Shawn Wallace
STOP!  You're Testing Too Much - Shawn WallaceSTOP!  You're Testing Too Much - Shawn Wallace
STOP! You're Testing Too Much - Shawn Wallace
 
The Art of Gherkin Scripting - Matt Eakin
The Art of Gherkin Scripting - Matt EakinThe Art of Gherkin Scripting - Matt Eakin
The Art of Gherkin Scripting - Matt Eakin
 
Upcoming events 2017
Upcoming events 2017Upcoming events 2017
Upcoming events 2017
 
1 z0 047
1 z0 0471 z0 047
1 z0 047
 
Gherkin - jak zostać poetą w IT
Gherkin - jak zostać poetą w ITGherkin - jak zostać poetą w IT
Gherkin - jak zostać poetą w IT
 
Presentation on java
Presentation  on  javaPresentation  on  java
Presentation on java
 
Test automation with Cucumber-JVM
Test automation with Cucumber-JVMTest automation with Cucumber-JVM
Test automation with Cucumber-JVM
 
Introduction to BDD with Cucumber for Java
Introduction to BDD with Cucumber for JavaIntroduction to BDD with Cucumber for Java
Introduction to BDD with Cucumber for Java
 
The Gherkin: Case Study
The Gherkin: Case StudyThe Gherkin: Case Study
The Gherkin: Case Study
 
Slideshare ppt
Slideshare pptSlideshare ppt
Slideshare ppt
 

Similaire à Cucumber in Practice(en)

Similaire à Cucumber in Practice(en) (20)

Behavior Driven Development - TdT@Cluj #15
Behavior Driven Development - TdT@Cluj #15Behavior Driven Development - TdT@Cluj #15
Behavior Driven Development - TdT@Cluj #15
 
Exploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQLExploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQL
 
Deployment is the new build
Deployment is the new buildDeployment is the new build
Deployment is the new build
 
Cucumber presenation
Cucumber presenationCucumber presenation
Cucumber presenation
 
What would your own version of Ruby look like? (RubyKaigi)
What would your own version of Ruby look like? (RubyKaigi)What would your own version of Ruby look like? (RubyKaigi)
What would your own version of Ruby look like? (RubyKaigi)
 
Go - A Key Language in Enterprise Application Development?
Go - A Key Language in Enterprise Application Development?Go - A Key Language in Enterprise Application Development?
Go - A Key Language in Enterprise Application Development?
 
Devops - why, what and how?
Devops - why, what and how?Devops - why, what and how?
Devops - why, what and how?
 
The Ring programming language version 1.6 book - Part 6 of 189
The Ring programming language version 1.6 book - Part 6 of 189The Ring programming language version 1.6 book - Part 6 of 189
The Ring programming language version 1.6 book - Part 6 of 189
 
C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem
 
What would your own version of Ruby look like?
What would your own version of Ruby look like?What would your own version of Ruby look like?
What would your own version of Ruby look like?
 
Ruby Performance - The Last Mile - RubyConf India 2016
Ruby Performance - The Last Mile - RubyConf India 2016Ruby Performance - The Last Mile - RubyConf India 2016
Ruby Performance - The Last Mile - RubyConf India 2016
 
Erlang factory SF 2011 "Erlang and the big switch in social games"
Erlang factory SF 2011 "Erlang and the big switch in social games"Erlang factory SF 2011 "Erlang and the big switch in social games"
Erlang factory SF 2011 "Erlang and the big switch in social games"
 
Erlang, the big switch in social games
Erlang, the big switch in social gamesErlang, the big switch in social games
Erlang, the big switch in social games
 
Beyond the Hype: 4 Years of Go in Production
Beyond the Hype: 4 Years of Go in ProductionBeyond the Hype: 4 Years of Go in Production
Beyond the Hype: 4 Years of Go in Production
 
Useful automation
Useful automationUseful automation
Useful automation
 
ruby pentest
ruby pentestruby pentest
ruby pentest
 
Writing Well-Behaved Unix Utilities
Writing Well-Behaved Unix UtilitiesWriting Well-Behaved Unix Utilities
Writing Well-Behaved Unix Utilities
 
APIs distribuidos con alta escalabilidad
APIs distribuidos con alta escalabilidadAPIs distribuidos con alta escalabilidad
APIs distribuidos con alta escalabilidad
 
SGCE 2015 REST APIs
SGCE 2015 REST APIsSGCE 2015 REST APIs
SGCE 2015 REST APIs
 
sl slides-unit-1.pptx
sl slides-unit-1.pptxsl slides-unit-1.pptx
sl slides-unit-1.pptx
 

Plus de Kyosuke MOROHASHI

Test Context Arrangement Recipebook
Test Context Arrangement RecipebookTest Context Arrangement Recipebook
Test Context Arrangement Recipebook
Kyosuke MOROHASHI
 

Plus de Kyosuke MOROHASHI (13)

Introduction HTTP via cURL
Introduction HTTP via cURLIntroduction HTTP via cURL
Introduction HTTP via cURL
 
Ruby ecosystem applied to agile project
Ruby ecosystem applied to agile projectRuby ecosystem applied to agile project
Ruby ecosystem applied to agile project
 
Test Context Arrangement Recipebook
Test Context Arrangement RecipebookTest Context Arrangement Recipebook
Test Context Arrangement Recipebook
 
Begin cucumber-in-real-world
Begin cucumber-in-real-worldBegin cucumber-in-real-world
Begin cucumber-in-real-world
 
Rails testing environment, 2009 fall
Rails testing environment, 2009 fallRails testing environment, 2009 fall
Rails testing environment, 2009 fall
 
TDD frameworks let me dream "Project Specific Language"
TDD frameworks let me dream "Project Specific Language"TDD frameworks let me dream "Project Specific Language"
TDD frameworks let me dream "Project Specific Language"
 
Rails Tokyo 035 Cucumber
Rails Tokyo 035 CucumberRails Tokyo 035 Cucumber
Rails Tokyo 035 Cucumber
 
OSC2008 勉強会大集合 Rails勉強会@東京
OSC2008 勉強会大集合 Rails勉強会@東京OSC2008 勉強会大集合 Rails勉強会@東京
OSC2008 勉強会大集合 Rails勉強会@東京
 
Capistrano in practice - WebCareer
Capistrano in practice - WebCareerCapistrano in practice - WebCareer
Capistrano in practice - WebCareer
 
named_scope more detail - WebCareer
named_scope more detail - WebCareernamed_scope more detail - WebCareer
named_scope more detail - WebCareer
 
named_scope more detail
named_scope more detailnamed_scope more detail
named_scope more detail
 
Rails <form> Chronicle
Rails <form> ChronicleRails <form> Chronicle
Rails <form> Chronicle
 
そうだ勉強会に行こう
そうだ勉強会に行こうそうだ勉強会に行こう
そうだ勉強会に行こう
 

Dernier

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Dernier (20)

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 

Cucumber in Practice(en)

  • 1. ded reloa Cucumber in practice ∼2 years with cucumber. 諸橋 恭介 (株)永和システムマネジメント ¦ Rails勉強会@東京 Developers Summit 2010
  • 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.
  • 16. Cucumber • demonstrate • 基本的なDSLで出来る範囲で。
  • 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
  • 26. various vocabularies • Learn the vocabularies(steps) within project. • Learn how to combine them
  • 27. demo • TODO: step in stepやTransform を使った高レベルなfeature
  • 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.
  • 34. ご清聴 ありがとう ございました this photo is by Ctd 2005 | http://www.flickr.com/photos/kikisdad/190501758/