SlideShare une entreprise Scribd logo
1  sur  30
The whole enchilada

    Inception to delivery in
         just 2 weeks




                               1
We write code... and we
    write it well

Oh... And we’re ON A
        BOAT!




                          2
Steve Jackson                                           Dave Shah
@stevejxsn                                             @daveshah
steve.jackson@leandogsoftware.com   dave.shah@leandogsoftware.com




                                                               3
WE LOVE BURRITOS...




                      4
We love apps....




                   5
We LOVE FEEDBACK!




                    6
Making assumptions explicit




                              7
Features




           8
Low Fidelity Prototyping




                           9
We Wrote a cuke...
Feature: Getting directions to Ohio City Burrito

As a hungry burrito lover
I want to drive to OCB
So I can get a Brother’s Burrito

Scenario: Directions button should take us to Google
Maps

Given I'm hungry for some OCB
When I touch the map icon
Then Google maps should provide me with directions




                                                       10
What’s A CUKE?...
                    Feature:

                    As a hungry burrito lover
                    I want to drive to OCB
                    So I can get a Brother’s

                    Scenario: Directions butt
                    take us to Google Maps

                    Given I'm hungry for some
                    When I touch the map icon
                    Then Google maps should p
                    with directions
                    CUKES ARE TESTS
                                          11
Why test first?




                  (MORE ON THIS LATER...)


                                            12
Why test first?   (CONVINCING YOUR BOSS)




                          CapersJones, SoftwareAssessments, Benchmarks, andBestPractices- Addison- Wesley, 2000




                                                                                                                  13
ATDD
     Acceptance Test    Developer Test
Define
 Def             Fail
                 Def         Fail
                             Def

                            TDD
                                      Pass
                                      Def



 Pass
 Def                       Refactor
                             Def


                                             14
Three amigos



 Knows what to build
 Knows how to build it
 Knows how to verify it




                           15
Our First cuke
Feature: Getting directions to Ohio City Burrito

As a hungry burrito lover
I want to drive to OCB
So I can get a Brother’s Burrito

Scenario: Directions button should take us to Google
Maps

Given I'm hungry for some OCB
When I touch the map icon
Then Google maps should provide me with directions




                                                       16
Why ATDD?
 Constant Collaboration
 Improved Understanding
 Eliminates Waste
 Move Risk Forward
 Bake Quality In




                           17
Sounds great in theory... lets see some
code!




                                          18
time travel




              19
@Override
protected void onStart() {
    super.onStart();
    ListView menuListView = (ListView) findViewById(id.menu_list_view);

    menuListView.setAdapter(new ArrayAdapter<String>(
            this,android.R.layout.simple_list_item_1,
            Arrays.asList("Burritos","Tacos","Choices and Additions")));
}




                                                                    20
Scenario: Checking pricesGiven I want to see what Ohio City Burrito
serves
When I touch the menu signThen I should see the prices:
| Brother’s Burrito | $6.15 || Baby Burrito      | $1.85 |
 |




                                                                  21
Then /^I should see the prices:$/ do |expected_items|
  actual_items = []
  expected_items.raw.each do |item, expected_price|
    price = on(MenuScreen).price item
    actual_items << [item, price]
  end
  expected_items.diff! actual_items
end




                                                        22
class MenuScreen
class MenuScreen
  include Gametel
  include Gametel

  ITEM = 0
  button(:directions, :id => "directions_button")
  DESCRIPTION = 1
  button(:call, :id => "call_button")
  PRICE = 2
end

  button(:directions, :id => "directions_button")
  button(:call, :id => "call_button")

  def price(item)
    Gametel::Views::ListItem.new(platform, :text => item).text[PRICE]
  end
end




                                                                   23
And Now...
LIVE
CODING!!!!




             24
So we mentioned science...




                             25
So we mentioned science...




                             26
So we mentioned science...
     Acceptance Test      Developer Test
Define
 Def             Fail
                 Def           Fail
                               Def

                               TDD
                                         Pass
                                         Def



 Pass
 Def                          Refactor
                                Def


                                                 27
                                                12
So we mentioned science...
                     Write a Test == Experiment
          Hypothesis               Fail
                                   Def


                                      Results
                        Repeat          Pass
                                         Def


                              Conclusion
                                 Refactor
                                  Def


                                                 28
                                                12
Thanks!




          Michael Lemley
          @audienceofnone




                      29
Happy hacking!

           https://github.com/leandog/OCBMobile
Steve Jackson                                           Dave Shah
@stevejxsn                                             @daveshah
steve.jackson@leandogsoftware.com   dave.shah@leandogsoftware.com




                                                               30

Contenu connexe

En vedette

Data visualization
Data visualizationData visualization
Data visualizationkksijo
 
You are my all in all
You are my all in allYou are my all in all
You are my all in allMrAiono
 
Kumpulan materi-pendapatan-nasional-1
Kumpulan materi-pendapatan-nasional-1Kumpulan materi-pendapatan-nasional-1
Kumpulan materi-pendapatan-nasional-1apasalahkukaubuat
 
MIT 100K Pitch Contest Keynote 2012
MIT 100K Pitch Contest Keynote 2012MIT 100K Pitch Contest Keynote 2012
MIT 100K Pitch Contest Keynote 2012Rahim Fazal
 
Can ban ve thiet ke va lap trinh game
Can ban ve thiet ke va lap trinh gameCan ban ve thiet ke va lap trinh game
Can ban ve thiet ke va lap trinh gameKim Hyun Hai
 
112988 633632132031191250
112988 633632132031191250112988 633632132031191250
112988 633632132031191250143mannu
 
自分に合ったWeb出店とは? in まるたまサマースクール
自分に合ったWeb出店とは? in まるたまサマースクール自分に合ったWeb出店とは? in まるたまサマースクール
自分に合ったWeb出店とは? in まるたまサマースクールRikiya Suzuki
 
Basics of r commands
Basics of r commandsBasics of r commands
Basics of r commandskksijo
 
Public contests of neologisms in Estonia
Public contests of neologisms in EstoniaPublic contests of neologisms in Estonia
Public contests of neologisms in EstoniaTERMCAT
 

En vedette (17)

Data visualization
Data visualizationData visualization
Data visualization
 
You are my all in all
You are my all in allYou are my all in all
You are my all in all
 
vaulin
vaulinvaulin
vaulin
 
De toan a_2012
De toan a_2012De toan a_2012
De toan a_2012
 
Kumpulan materi-pendapatan-nasional-1
Kumpulan materi-pendapatan-nasional-1Kumpulan materi-pendapatan-nasional-1
Kumpulan materi-pendapatan-nasional-1
 
burak t a
burak t aburak t a
burak t a
 
MIT 100K Pitch Contest Keynote 2012
MIT 100K Pitch Contest Keynote 2012MIT 100K Pitch Contest Keynote 2012
MIT 100K Pitch Contest Keynote 2012
 
Can ban ve thiet ke va lap trinh game
Can ban ve thiet ke va lap trinh gameCan ban ve thiet ke va lap trinh game
Can ban ve thiet ke va lap trinh game
 
Abu bakar al miski
Abu bakar al miskiAbu bakar al miski
Abu bakar al miski
 
The Bunker Script
The Bunker ScriptThe Bunker Script
The Bunker Script
 
Subtraction 5
Subtraction 5Subtraction 5
Subtraction 5
 
Alat peraga secang
Alat peraga  secangAlat peraga  secang
Alat peraga secang
 
112988 633632132031191250
112988 633632132031191250112988 633632132031191250
112988 633632132031191250
 
自分に合ったWeb出店とは? in まるたまサマースクール
自分に合ったWeb出店とは? in まるたまサマースクール自分に合ったWeb出店とは? in まるたまサマースクール
自分に合ったWeb出店とは? in まるたまサマースクール
 
Trin-E-Cards
Trin-E-CardsTrin-E-Cards
Trin-E-Cards
 
Basics of r commands
Basics of r commandsBasics of r commands
Basics of r commands
 
Public contests of neologisms in Estonia
Public contests of neologisms in EstoniaPublic contests of neologisms in Estonia
Public contests of neologisms in Estonia
 

Similaire à The Whole Enchilada

Learning Fast With A/B Testing and Continuous Deployment
Learning Fast With A/B Testing and Continuous DeploymentLearning Fast With A/B Testing and Continuous Deployment
Learning Fast With A/B Testing and Continuous DeploymentBrett Durrett
 
Solution to warsaw's crackme1.1
Solution to warsaw's crackme1.1Solution to warsaw's crackme1.1
Solution to warsaw's crackme1.1Aodrulez
 
How to talk to developers for your first prototype.
How to talk to developers for your first prototype.How to talk to developers for your first prototype.
How to talk to developers for your first prototype.Dan Rockwell
 
Talking about craftsmanship with ensaimadas and katas
Talking about craftsmanship with ensaimadas and katasTalking about craftsmanship with ensaimadas and katas
Talking about craftsmanship with ensaimadas and katasRachel M. Carmena
 
When to embrace Behavior Driven Development?
When to embrace Behavior Driven Development?When to embrace Behavior Driven Development?
When to embrace Behavior Driven Development?Ranjith Tharayil
 
Talking about craftsmanship with "ensaimadas" and katas (May, 2018)
Talking about craftsmanship with "ensaimadas" and katas (May, 2018)Talking about craftsmanship with "ensaimadas" and katas (May, 2018)
Talking about craftsmanship with "ensaimadas" and katas (May, 2018)Rachel M. Carmena
 
Testing is Fun @Confoo.ca 2012
Testing is Fun @Confoo.ca  2012Testing is Fun @Confoo.ca  2012
Testing is Fun @Confoo.ca 2012Gourav Tiwari
 
Sikuli: Using Screenshots for GUI Automation and Testing
Sikuli: Using Screenshots for GUI Automation and TestingSikuli: Using Screenshots for GUI Automation and Testing
Sikuli: Using Screenshots for GUI Automation and Testingvgod
 

Similaire à The Whole Enchilada (11)

Week 5
Week 5Week 5
Week 5
 
Week 5
Week 5Week 5
Week 5
 
Learning Fast With A/B Testing and Continuous Deployment
Learning Fast With A/B Testing and Continuous DeploymentLearning Fast With A/B Testing and Continuous Deployment
Learning Fast With A/B Testing and Continuous Deployment
 
Solution to warsaw's crackme1.1
Solution to warsaw's crackme1.1Solution to warsaw's crackme1.1
Solution to warsaw's crackme1.1
 
How to talk to developers for your first prototype.
How to talk to developers for your first prototype.How to talk to developers for your first prototype.
How to talk to developers for your first prototype.
 
Talking about craftsmanship with ensaimadas and katas
Talking about craftsmanship with ensaimadas and katasTalking about craftsmanship with ensaimadas and katas
Talking about craftsmanship with ensaimadas and katas
 
When to embrace Behavior Driven Development?
When to embrace Behavior Driven Development?When to embrace Behavior Driven Development?
When to embrace Behavior Driven Development?
 
Spoilers fosdem-2013
Spoilers fosdem-2013Spoilers fosdem-2013
Spoilers fosdem-2013
 
Talking about craftsmanship with "ensaimadas" and katas (May, 2018)
Talking about craftsmanship with "ensaimadas" and katas (May, 2018)Talking about craftsmanship with "ensaimadas" and katas (May, 2018)
Talking about craftsmanship with "ensaimadas" and katas (May, 2018)
 
Testing is Fun @Confoo.ca 2012
Testing is Fun @Confoo.ca  2012Testing is Fun @Confoo.ca  2012
Testing is Fun @Confoo.ca 2012
 
Sikuli: Using Screenshots for GUI Automation and Testing
Sikuli: Using Screenshots for GUI Automation and TestingSikuli: Using Screenshots for GUI Automation and Testing
Sikuli: Using Screenshots for GUI Automation and Testing
 

Dernier

GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
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 MenDelhi Call girls
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
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 WorkerThousandEyes
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
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?Antenna Manufacturer Coco
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
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...Igalia
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
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 organizationRadu Cotescu
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
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 Servicegiselly40
 

Dernier (20)

GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
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
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
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
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
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?
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
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...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
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
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
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
 

The Whole Enchilada

  • 1. The whole enchilada Inception to delivery in just 2 weeks 1
  • 2. We write code... and we write it well Oh... And we’re ON A BOAT! 2
  • 3. Steve Jackson Dave Shah @stevejxsn @daveshah steve.jackson@leandogsoftware.com dave.shah@leandogsoftware.com 3
  • 10. We Wrote a cuke... Feature: Getting directions to Ohio City Burrito As a hungry burrito lover I want to drive to OCB So I can get a Brother’s Burrito Scenario: Directions button should take us to Google Maps Given I'm hungry for some OCB When I touch the map icon Then Google maps should provide me with directions 10
  • 11. What’s A CUKE?... Feature: As a hungry burrito lover I want to drive to OCB So I can get a Brother’s Scenario: Directions butt take us to Google Maps Given I'm hungry for some When I touch the map icon Then Google maps should p with directions CUKES ARE TESTS 11
  • 12. Why test first? (MORE ON THIS LATER...) 12
  • 13. Why test first? (CONVINCING YOUR BOSS) CapersJones, SoftwareAssessments, Benchmarks, andBestPractices- Addison- Wesley, 2000 13
  • 14. ATDD Acceptance Test Developer Test Define Def Fail Def Fail Def TDD Pass Def Pass Def Refactor Def 14
  • 15. Three amigos  Knows what to build  Knows how to build it  Knows how to verify it 15
  • 16. Our First cuke Feature: Getting directions to Ohio City Burrito As a hungry burrito lover I want to drive to OCB So I can get a Brother’s Burrito Scenario: Directions button should take us to Google Maps Given I'm hungry for some OCB When I touch the map icon Then Google maps should provide me with directions 16
  • 17. Why ATDD?  Constant Collaboration  Improved Understanding  Eliminates Waste  Move Risk Forward  Bake Quality In 17
  • 18. Sounds great in theory... lets see some code! 18
  • 20. @Override protected void onStart() { super.onStart(); ListView menuListView = (ListView) findViewById(id.menu_list_view); menuListView.setAdapter(new ArrayAdapter<String>( this,android.R.layout.simple_list_item_1, Arrays.asList("Burritos","Tacos","Choices and Additions"))); } 20
  • 21. Scenario: Checking pricesGiven I want to see what Ohio City Burrito serves When I touch the menu signThen I should see the prices: | Brother’s Burrito | $6.15 || Baby Burrito | $1.85 | | 21
  • 22. Then /^I should see the prices:$/ do |expected_items| actual_items = [] expected_items.raw.each do |item, expected_price| price = on(MenuScreen).price item actual_items << [item, price] end expected_items.diff! actual_items end 22
  • 23. class MenuScreen class MenuScreen include Gametel include Gametel ITEM = 0 button(:directions, :id => "directions_button") DESCRIPTION = 1 button(:call, :id => "call_button") PRICE = 2 end button(:directions, :id => "directions_button") button(:call, :id => "call_button") def price(item) Gametel::Views::ListItem.new(platform, :text => item).text[PRICE] end end 23
  • 25. So we mentioned science... 25
  • 26. So we mentioned science... 26
  • 27. So we mentioned science... Acceptance Test Developer Test Define Def Fail Def Fail Def TDD Pass Def Pass Def Refactor Def 27 12
  • 28. So we mentioned science... Write a Test == Experiment Hypothesis Fail Def Results Repeat Pass Def Conclusion Refactor Def 28 12
  • 29. Thanks! Michael Lemley @audienceofnone 29
  • 30. Happy hacking! https://github.com/leandog/OCBMobile Steve Jackson Dave Shah @stevejxsn @daveshah steve.jackson@leandogsoftware.com dave.shah@leandogsoftware.com 30