SlideShare a Scribd company logo
Welcome to the World
                                of


                            Behavior
                             Driven
                          Development




                           railando                  .com
                           Gain%%Speed%with%%Ruby%on% Rails
Berlin, Sep 21, 2012
Welcome to the World
                                of


                            Behavior
                             Driven
                          Development




                           railando                  .com
                           Gain%%Speed%with%%Ruby%on% Rails
Berlin, Sep 21, 2012
What to expect in this presentation?




                       railando                  .com
                       Gain%%Speed%with%%Ruby%on% Rails
Berlin, Sep 21, 2012
What to expect in this presentation?




                       railando                  .com
                       Gain%%Speed%with%%Ruby%on% Rails
Berlin, Sep 21, 2012
What to expect in this presentation?

                       •Understand what BDD is
                       •Understand its benefits
                       •   as well as its drawbacks.


                       •Inspiration to your own thoughts   
                       •Hear about practical experience
                       •Know where to get help:

                                       railando                   .com
                                        Gain%%Speed%with%%Ruby%on% Rails
Berlin, Sep 21, 2012
Challenge question :-)


           What is the



     worst thing

      that can happen
              to a

software development project

               ?
What to do about it?




Align ideas of business, development and test

            Fully involve all three

              Embrace change

 Use the best tools and processes available
What is BDD?




 One concrete incarnation of Agile development

The next logical step to Test Driven Development

           Acceptance Test is central

         Battle-proven toolset available

 BDD makes business (users) love to contribute!
cucumber


                Central to BDD

Enables all stakeholders to write/approve specs

Built on a simple paradigm: Given - When - Then

    Enables (acceptance) test automation of
            application-level specs

   cucumber makes business (users) love to
                contribute!
A simple example


         Given I have items in my cart
And I have entered a German shipping address
     But none of my items is tax-exempt

        When I click “checkout”

 Then I see all my items with individual price
            And I see a “total” line
      And I see a VAT line stating 19 %
    And I see a grand total of 1.19 * total
         But I see no “sales tax” line
Automate it! :-)


       We write specs in natural language

     “Step Definitions” map English to code

     Use the power of regular expressions

Each Given, When and Then clause causes some
             code to be executed

Write Step Definitions in Ruby, Perl, Shell Scripts,
            Java, Javascript, .NET, etc.
A real life example


       See
      Demo
A real life example


       See
      Demo
Our experience

  We used BDD in Enterprise projects (e.g. large
   Swiss telecoms carrier) as well as startup
                environments

 Business departments / users are happy to have
finally found a way how they can really contribute

        Acceptance test greatly simplified

   Additional work in the beginning for specs

 More than compensated, dramatically reduced
                  rework
What now?

  Try it !
Finally

               Care for

             help?
          consulting?
           support?
           training?

Don’t forget to give us a call ;-)

  bernd.blume@railando.com

         railando                  .com
         Gain%%Speed%with%%Ruby%on% Rails

More Related Content

Similar to BDD - Behavior Driven Development

Ruby On Rails Seminar Basis Softexpo Feb2010
Ruby On Rails Seminar Basis Softexpo Feb2010Ruby On Rails Seminar Basis Softexpo Feb2010
Ruby On Rails Seminar Basis Softexpo Feb2010
arif44
 
Ror Seminar With agilebd.org on 23 Jan09
Ror Seminar With agilebd.org on 23 Jan09Ror Seminar With agilebd.org on 23 Jan09
Ror Seminar With agilebd.org on 23 Jan09
Shaer Hassan
 
What Web Framework To Use?
What Web Framework To Use?What Web Framework To Use?
What Web Framework To Use?
Kasra Khosravi
 
2010-07-19_rails_tdd_week1
2010-07-19_rails_tdd_week12010-07-19_rails_tdd_week1
2010-07-19_rails_tdd_week1
Wolfram Arnold
 
Better and Faster: A Journey Toward Clean Code and Enjoyment
Better and Faster: A Journey Toward Clean Code and EnjoymentBetter and Faster: A Journey Toward Clean Code and Enjoyment
Better and Faster: A Journey Toward Clean Code and Enjoyment
Chris Holland
 
Ruby on rails development
Ruby on rails developmentRuby on rails development
Ruby on rails development
Satisnet
 
Ruby On Rails Presentation
Ruby On Rails PresentationRuby On Rails Presentation
Ruby On Rails Presentation
Paul Pajo
 
Viridians on Rails
Viridians on RailsViridians on Rails
Viridians on Rails
Viridians
 
Most common mistakes in ruby on rails development (and how to avoid making them)
Most common mistakes in ruby on rails development (and how to avoid making them)Most common mistakes in ruby on rails development (and how to avoid making them)
Most common mistakes in ruby on rails development (and how to avoid making them)
Katy Slemon
 
Is ruby on rails dead or still good choice for building apps
Is ruby on rails dead or still good choice for building appsIs ruby on rails dead or still good choice for building apps
Is ruby on rails dead or still good choice for building apps
Temok IT Services
 
What is Rapid Application Development
What is Rapid Application DevelopmentWhat is Rapid Application Development
What is Rapid Application Development
OutSystems
 
Measuring Web Performance - HighEdWeb Edition
Measuring Web Performance - HighEdWeb EditionMeasuring Web Performance - HighEdWeb Edition
Measuring Web Performance - HighEdWeb Edition
Dave Olsen
 
Why is ruby on rails worth investing in 2022
Why is ruby on rails worth investing in 2022 Why is ruby on rails worth investing in 2022
Why is ruby on rails worth investing in 2022
rorbitssoftware
 
Case Study: Practical tools and strategies for tackling legacy practices and ...
Case Study: Practical tools and strategies for tackling legacy practices and ...Case Study: Practical tools and strategies for tackling legacy practices and ...
Case Study: Practical tools and strategies for tackling legacy practices and ...
Alejandro S.
 
Ruby Rails Web Development.pdf
Ruby Rails Web Development.pdfRuby Rails Web Development.pdf
Ruby Rails Web Development.pdf
Ayesha Siddika
 
Drupal SEO Basics (BADCamp 2012)
Drupal SEO Basics (BADCamp 2012)Drupal SEO Basics (BADCamp 2012)
Drupal SEO Basics (BADCamp 2012)
hook42inc
 
What drives your company by elan lennard
What drives your company by elan lennardWhat drives your company by elan lennard
What drives your company by elan lennard
Cambridge Product Management Network
 
Why Use Ruby on Rails for E-Commerce Project: Proven Case Study
Why Use Ruby on Rails for E-Commerce Project: Proven Case StudyWhy Use Ruby on Rails for E-Commerce Project: Proven Case Study
Why Use Ruby on Rails for E-Commerce Project: Proven Case Study
Katy Slemon
 
Prototyping your iPhone/iPad app
Prototyping your iPhone/iPad appPrototyping your iPhone/iPad app
Prototyping your iPhone/iPad app
Paul Ardeleanu
 
The Software Debt Bubble: Is It About to Burst
The Software Debt Bubble: Is It About to BurstThe Software Debt Bubble: Is It About to Burst
The Software Debt Bubble: Is It About to Burst
Chris Sterling
 

Similar to BDD - Behavior Driven Development (20)

Ruby On Rails Seminar Basis Softexpo Feb2010
Ruby On Rails Seminar Basis Softexpo Feb2010Ruby On Rails Seminar Basis Softexpo Feb2010
Ruby On Rails Seminar Basis Softexpo Feb2010
 
Ror Seminar With agilebd.org on 23 Jan09
Ror Seminar With agilebd.org on 23 Jan09Ror Seminar With agilebd.org on 23 Jan09
Ror Seminar With agilebd.org on 23 Jan09
 
What Web Framework To Use?
What Web Framework To Use?What Web Framework To Use?
What Web Framework To Use?
 
2010-07-19_rails_tdd_week1
2010-07-19_rails_tdd_week12010-07-19_rails_tdd_week1
2010-07-19_rails_tdd_week1
 
Better and Faster: A Journey Toward Clean Code and Enjoyment
Better and Faster: A Journey Toward Clean Code and EnjoymentBetter and Faster: A Journey Toward Clean Code and Enjoyment
Better and Faster: A Journey Toward Clean Code and Enjoyment
 
Ruby on rails development
Ruby on rails developmentRuby on rails development
Ruby on rails development
 
Ruby On Rails Presentation
Ruby On Rails PresentationRuby On Rails Presentation
Ruby On Rails Presentation
 
Viridians on Rails
Viridians on RailsViridians on Rails
Viridians on Rails
 
Most common mistakes in ruby on rails development (and how to avoid making them)
Most common mistakes in ruby on rails development (and how to avoid making them)Most common mistakes in ruby on rails development (and how to avoid making them)
Most common mistakes in ruby on rails development (and how to avoid making them)
 
Is ruby on rails dead or still good choice for building apps
Is ruby on rails dead or still good choice for building appsIs ruby on rails dead or still good choice for building apps
Is ruby on rails dead or still good choice for building apps
 
What is Rapid Application Development
What is Rapid Application DevelopmentWhat is Rapid Application Development
What is Rapid Application Development
 
Measuring Web Performance - HighEdWeb Edition
Measuring Web Performance - HighEdWeb EditionMeasuring Web Performance - HighEdWeb Edition
Measuring Web Performance - HighEdWeb Edition
 
Why is ruby on rails worth investing in 2022
Why is ruby on rails worth investing in 2022 Why is ruby on rails worth investing in 2022
Why is ruby on rails worth investing in 2022
 
Case Study: Practical tools and strategies for tackling legacy practices and ...
Case Study: Practical tools and strategies for tackling legacy practices and ...Case Study: Practical tools and strategies for tackling legacy practices and ...
Case Study: Practical tools and strategies for tackling legacy practices and ...
 
Ruby Rails Web Development.pdf
Ruby Rails Web Development.pdfRuby Rails Web Development.pdf
Ruby Rails Web Development.pdf
 
Drupal SEO Basics (BADCamp 2012)
Drupal SEO Basics (BADCamp 2012)Drupal SEO Basics (BADCamp 2012)
Drupal SEO Basics (BADCamp 2012)
 
What drives your company by elan lennard
What drives your company by elan lennardWhat drives your company by elan lennard
What drives your company by elan lennard
 
Why Use Ruby on Rails for E-Commerce Project: Proven Case Study
Why Use Ruby on Rails for E-Commerce Project: Proven Case StudyWhy Use Ruby on Rails for E-Commerce Project: Proven Case Study
Why Use Ruby on Rails for E-Commerce Project: Proven Case Study
 
Prototyping your iPhone/iPad app
Prototyping your iPhone/iPad appPrototyping your iPhone/iPad app
Prototyping your iPhone/iPad app
 
The Software Debt Bubble: Is It About to Burst
The Software Debt Bubble: Is It About to BurstThe Software Debt Bubble: Is It About to Burst
The Software Debt Bubble: Is It About to Burst
 

Recently uploaded

GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
ThomasParaiso2
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 

Recently uploaded (20)

GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 

BDD - Behavior Driven Development

  • 1. Welcome to the World of Behavior Driven Development railando .com Gain%%Speed%with%%Ruby%on% Rails Berlin, Sep 21, 2012
  • 2. Welcome to the World of Behavior Driven Development railando .com Gain%%Speed%with%%Ruby%on% Rails Berlin, Sep 21, 2012
  • 3. What to expect in this presentation? railando .com Gain%%Speed%with%%Ruby%on% Rails Berlin, Sep 21, 2012
  • 4. What to expect in this presentation? railando .com Gain%%Speed%with%%Ruby%on% Rails Berlin, Sep 21, 2012
  • 5. What to expect in this presentation? •Understand what BDD is •Understand its benefits • as well as its drawbacks. •Inspiration to your own thoughts    •Hear about practical experience •Know where to get help: railando .com Gain%%Speed%with%%Ruby%on% Rails Berlin, Sep 21, 2012
  • 6. Challenge question :-) What is the worst thing that can happen to a software development project ?
  • 7. What to do about it? Align ideas of business, development and test Fully involve all three Embrace change Use the best tools and processes available
  • 8. What is BDD? One concrete incarnation of Agile development The next logical step to Test Driven Development Acceptance Test is central Battle-proven toolset available BDD makes business (users) love to contribute!
  • 9. cucumber Central to BDD Enables all stakeholders to write/approve specs Built on a simple paradigm: Given - When - Then Enables (acceptance) test automation of application-level specs cucumber makes business (users) love to contribute!
  • 10. A simple example Given I have items in my cart And I have entered a German shipping address But none of my items is tax-exempt When I click “checkout” Then I see all my items with individual price And I see a “total” line And I see a VAT line stating 19 % And I see a grand total of 1.19 * total But I see no “sales tax” line
  • 11. Automate it! :-) We write specs in natural language “Step Definitions” map English to code Use the power of regular expressions Each Given, When and Then clause causes some code to be executed Write Step Definitions in Ruby, Perl, Shell Scripts, Java, Javascript, .NET, etc.
  • 12. A real life example See Demo
  • 13. A real life example See Demo
  • 14. Our experience We used BDD in Enterprise projects (e.g. large Swiss telecoms carrier) as well as startup environments Business departments / users are happy to have finally found a way how they can really contribute Acceptance test greatly simplified Additional work in the beginning for specs More than compensated, dramatically reduced rework
  • 15. What now? Try it !
  • 16. Finally Care for help? consulting? support? training? Don’t forget to give us a call ;-) bernd.blume@railando.com railando .com Gain%%Speed%with%%Ruby%on% Rails

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n