SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
AMIR BARYLKO
                      QUALITY DRIVEN
                      USING BDD + TDD




Amir Barylko - Quality Driven              MavenThought Inc.
TESTING
                                  Why Testing?
                                    Unit tests
                                      TDD
                                Integration Tests
                                Acceptance Tests


Amir Barylko - Quality Driven                       MavenThought Inc.
REALITY CHECK

  • It is impossible to gather all the requirements at
     the beginning of a project.
  • Whatever   requirements you do gather are
     guaranteed to change.
  • There will always be more to do than time and
     money will allow.

Amir Barylko - Quality Driven                  MavenThought Inc.
NO MORE EXCUSES

  • It   works on my computer!

  • It   was like that when I got here!

  • The     previous developer didn’t know XXXX!

  • We      need a satellite connection in order to run it!

  • We      can’t reproduce the error!

  • We      can’t test that!
Amir Barylko - Quality Driven                                 MavenThought Inc.
UNIT TESTING

  • Test      for a class or method
  • No       dependencies
  • Should          use mocking
  • Small

  • Clear

Amir Barylko - Quality Driven                  MavenThought Inc.
TDD

  • First      write a test that fails (RED)
  • Write         code to make it pass (GREEN)
  • Check          if code can be improved (REFACTOR)
  • Start       again until it’s done


Amir Barylko - Quality Driven                    MavenThought Inc.
BENEFITS OF TDD

  • Prove         that your code         • Regression   tests as
     works                                byproduct
  • Avoid  waste                         • Makechanges with
     (debugging)                          confidence
  • Increment             code quality   • Bring
                                               back the joy of
                                          coding!
  • Better         design
Amir Barylko - Quality Driven                              MavenThought Inc.
WHEN TDD IS NOT ENOUGH

  •Legacy Code
  •Refactoring is not viable
  •Verify functionality across layers
  •Validate feature end to end
Amir Barylko - Quality Driven       MavenThought Inc.
INTEGRATION TEST

  •More              than one class
  •Still        some parts can be mocked
  •Partial             functionality of subsystem


Amir Barylko - Quality Driven                  MavenThought Inc.
ACCEPTANCE TEST

  •Black            box testing
  •Crossing                     all layers
  •Should                cover all scenarios
  •External                     subsystems may be mocked
Amir Barylko - Quality Driven                      MavenThought Inc.
SOFTWARE QUALITY
                                 What is it?
                                Low Quality
                                Classic QA




Amir Barylko - Quality Driven                  MavenThought Inc.
WHAT DOES IT MEAN?

  • Better         code?
  • Faster        delivery?
  • Less       bugs?
  • Make         sure we deliver the right thing?
  • Better         Processes?
Amir Barylko - Quality Driven                       MavenThought Inc.
LOW QUALITY

  • Lack     of testing

  • Lack     of communication

  • Lack     of metrics

  • Lack     of traceability

  • Wrong        tools


Amir Barylko - Quality Driven             MavenThought Inc.
CLASSIC QA

  • Team       separated from developments
  • Follow       scripts or requirements
  • Done        after the feature is implemented
  • May      have more than one project in the queue
  • Feedback          cycle may take weeks
  • Manual        (no automation)
Amir Barylko - Quality Driven                          MavenThought Inc.
DOES IT WORK?

  •Your              opinion here......




Amir Barylko - Quality Driven              MavenThought Inc.
A NEW CONCEPT
                                   Feature First
                                      Benefits
                                Outside In Approach
                                 Runnable features
                                       Roles


Amir Barylko - Quality Driven                         MavenThought Inc.
FEATURE FIRST

  • Write         the feature before implementation
  • Developers                  will implement feature using TDD
  • QA        will validate against feature
  • Repeat          until all features are done


Amir Barylko - Quality Driven                               MavenThought Inc.
BENEFITS

  • Focus         on the feature
  • Testing         all the way
  • Traceability

  • Quality          every step of the process


Amir Barylko - Quality Driven                    MavenThought Inc.
OUTSIDE IN APPROACH
                                           Red
                                           BDD

                                           Red




     Refactor                   Refactor   TDD   Green   Green




Amir Barylko - Quality Driven                              MavenThought Inc.
RUNNABLE FEATURES

  • Features           describe functionality
  • What          if we could run them?
  • Then         features would validate functionality
  • Becoming              live documentation


Amir Barylko - Quality Driven                            MavenThought Inc.
ROLES

  • Who          writes the feature?
  • Who          implements the feature?
  • Who          validates the feature?
  • What’s          the role of QA, PM, etc?


Amir Barylko - Quality Driven                  MavenThought Inc.
WRITING FEATURES
                                Gherkin
                                 Syntax
                                Feature
                                Scenario
                                  Steps


Amir Barylko - Quality Driven              MavenThought Inc.
GHERKIN DSL

  • Business       readable DSL

  • Flush     out requirements

  • Documentation

  • Automated           testing

  • Used   by Cucumber, SpecFlow,
     jBehave

Amir Barylko - Quality Driven                 MavenThought Inc.
SYNTAX
  Feature: Listing movies
     As a User
     I want to list movies
     So I can see the contents of the library


  Scenario: Browse available movies
     Given I have the following movies
     When I go to "Movies"
     Then I should see in the listing




Amir Barylko - Quality Driven                   MavenThought Inc.
FEATURES

  • Keyword         Feature

  • The     rest is free text

  Feature: Listing movies
    As a User
       I want to list movies
       So I can see the contents of the library



Amir Barylko - Quality Driven              MavenThought Inc.
SCENARIOS

  • Each        feature file can have multiple scenarios
  • Each        scenario can contain multiple steps
  • Keywords:

     • Given            When Then
     • And          Not But
Amir Barylko - Quality Driven                         MavenThought Inc.
STEPS

  Scenario: Browse available movies

       Given I have some movies

       When          I go to the listing page

       Then          I should see all the movies




Amir Barylko - Quality Driven                      MavenThought Inc.
DEMO




Amir Barylko - Quality Driven          MavenThought Inc.
QUESTIONS?




Amir Barylko - Quality Driven                MavenThought Inc.

Contenu connexe

Tendances

Flexing your Agile Muscle - Agile Technical Concepts Explained
Flexing your Agile Muscle - Agile Technical Concepts ExplainedFlexing your Agile Muscle - Agile Technical Concepts Explained
Flexing your Agile Muscle - Agile Technical Concepts ExplainedSandy Mamoli
 
Specifications test automation pyramid public
Specifications test automation pyramid   publicSpecifications test automation pyramid   public
Specifications test automation pyramid publicSathyan Sethumadhavan
 
Coding Together - A Dev Workflow
Coding Together - A Dev WorkflowCoding Together - A Dev Workflow
Coding Together - A Dev WorkflowPeter Chester
 
Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...
Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...
Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...Mozaic Works
 

Tendances (7)

obs-tdd-intro
obs-tdd-introobs-tdd-intro
obs-tdd-intro
 
Flexing your Agile Muscle - Agile Technical Concepts Explained
Flexing your Agile Muscle - Agile Technical Concepts ExplainedFlexing your Agile Muscle - Agile Technical Concepts Explained
Flexing your Agile Muscle - Agile Technical Concepts Explained
 
Specifications test automation pyramid public
Specifications test automation pyramid   publicSpecifications test automation pyramid   public
Specifications test automation pyramid public
 
Real Developers Don't Need Unit Tests
Real Developers Don't Need Unit TestsReal Developers Don't Need Unit Tests
Real Developers Don't Need Unit Tests
 
Clean code
Clean codeClean code
Clean code
 
Coding Together - A Dev Workflow
Coding Together - A Dev WorkflowCoding Together - A Dev Workflow
Coding Together - A Dev Workflow
 
Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...
Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...
Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...
 

En vedette

Pure cartine orbit 2 presentation
Pure cartine orbit 2 presentationPure cartine orbit 2 presentation
Pure cartine orbit 2 presentationAnup Srivastava
 
Framing Your Message for Maximum Engagement
Framing Your Message for Maximum EngagementFraming Your Message for Maximum Engagement
Framing Your Message for Maximum EngagementGihan Perera
 
Lab Safety Guideline - Family Photo Share
Lab Safety Guideline - Family Photo ShareLab Safety Guideline - Family Photo Share
Lab Safety Guideline - Family Photo Sharelfungkeefung
 
Go #5 political process 2011 2012
Go #5 political process 2011 2012Go #5 political process 2011 2012
Go #5 political process 2011 2012mrgault
 
Chapter 3
Chapter 3Chapter 3
Chapter 3jsewell
 

En vedette (7)

ejercicios
ejerciciosejercicios
ejercicios
 
Pure cartine orbit 2 presentation
Pure cartine orbit 2 presentationPure cartine orbit 2 presentation
Pure cartine orbit 2 presentation
 
G ainvite2009
G ainvite2009G ainvite2009
G ainvite2009
 
Framing Your Message for Maximum Engagement
Framing Your Message for Maximum EngagementFraming Your Message for Maximum Engagement
Framing Your Message for Maximum Engagement
 
Lab Safety Guideline - Family Photo Share
Lab Safety Guideline - Family Photo ShareLab Safety Guideline - Family Photo Share
Lab Safety Guideline - Family Photo Share
 
Go #5 political process 2011 2012
Go #5 political process 2011 2012Go #5 political process 2011 2012
Go #5 political process 2011 2012
 
Chapter 3
Chapter 3Chapter 3
Chapter 3
 

Similaire à 2012 regina TC - 103 quality driven

Cpl12 continuous integration
Cpl12 continuous integrationCpl12 continuous integration
Cpl12 continuous integrationAmir Barylko
 
prdc10-tdd-patterns
prdc10-tdd-patternsprdc10-tdd-patterns
prdc10-tdd-patternsAmir Barylko
 
CPL12-Agile-planning
CPL12-Agile-planningCPL12-Agile-planning
CPL12-Agile-planningAmir Barylko
 
prdc10-Bdd-real-world
prdc10-Bdd-real-worldprdc10-Bdd-real-world
prdc10-Bdd-real-worldAmir Barylko
 
Page objects pattern
Page objects patternPage objects pattern
Page objects patternAmir Barylko
 
Page-objects-pattern
Page-objects-patternPage-objects-pattern
Page-objects-patternAmir Barylko
 
Anand Bagmar - Behavior Driven Testing (BDT) in Agile
Anand Bagmar - Behavior Driven Testing (BDT) in AgileAnand Bagmar - Behavior Driven Testing (BDT) in Agile
Anand Bagmar - Behavior Driven Testing (BDT) in AgileAnand Bagmar
 
Smith Secure Test
Smith Secure Test Smith Secure Test
Smith Secure Test ngibbs01
 
Jvm-bdd-quality-driven
Jvm-bdd-quality-drivenJvm-bdd-quality-driven
Jvm-bdd-quality-drivenAmir Barylko
 
DevTeach12-Capybara
DevTeach12-CapybaraDevTeach12-Capybara
DevTeach12-CapybaraAmir Barylko
 
Teams and responsibilities
Teams and responsibilitiesTeams and responsibilities
Teams and responsibilitiesAmir Barylko
 
Agile Testing: The Role Of The Agile Tester
Agile Testing: The Role Of The Agile TesterAgile Testing: The Role Of The Agile Tester
Agile Testing: The Role Of The Agile TesterDeclan Whelan
 
Continuous Deployment: Startup Lessons Learned
Continuous Deployment: Startup Lessons LearnedContinuous Deployment: Startup Lessons Learned
Continuous Deployment: Startup Lessons LearnedAsh Maurya
 
Leandro Melendez - Switching Performance Left & Right
Leandro Melendez - Switching Performance Left & RightLeandro Melendez - Switching Performance Left & Right
Leandro Melendez - Switching Performance Left & RightNeotys_Partner
 
PRDCW-avent-aggregator
PRDCW-avent-aggregatorPRDCW-avent-aggregator
PRDCW-avent-aggregatorAmir Barylko
 
LocWorld: Building an Internationalization Plan; October 2011
LocWorld: Building an Internationalization Plan; October 2011LocWorld: Building an Internationalization Plan; October 2011
LocWorld: Building an Internationalization Plan; October 2011Lingoport (www.lingoport.com)
 
Agile Base Camp - Agile metrics
Agile Base Camp - Agile metricsAgile Base Camp - Agile metrics
Agile Base Camp - Agile metricsSerge Kovaleff
 

Similaire à 2012 regina TC - 103 quality driven (20)

Cpl12 continuous integration
Cpl12 continuous integrationCpl12 continuous integration
Cpl12 continuous integration
 
prdc10-tdd-patterns
prdc10-tdd-patternsprdc10-tdd-patterns
prdc10-tdd-patterns
 
CPL12-Agile-planning
CPL12-Agile-planningCPL12-Agile-planning
CPL12-Agile-planning
 
prdc10-Bdd-real-world
prdc10-Bdd-real-worldprdc10-Bdd-real-world
prdc10-Bdd-real-world
 
Page objects pattern
Page objects patternPage objects pattern
Page objects pattern
 
Page-objects-pattern
Page-objects-patternPage-objects-pattern
Page-objects-pattern
 
Anand Bagmar - Behavior Driven Testing (BDT) in Agile
Anand Bagmar - Behavior Driven Testing (BDT) in AgileAnand Bagmar - Behavior Driven Testing (BDT) in Agile
Anand Bagmar - Behavior Driven Testing (BDT) in Agile
 
YEG-UG-Capybara
YEG-UG-CapybaraYEG-UG-Capybara
YEG-UG-Capybara
 
Smith Secure Test
Smith Secure Test Smith Secure Test
Smith Secure Test
 
Jvm-bdd-quality-driven
Jvm-bdd-quality-drivenJvm-bdd-quality-driven
Jvm-bdd-quality-driven
 
DevTeach12-Capybara
DevTeach12-CapybaraDevTeach12-Capybara
DevTeach12-Capybara
 
ITS-Fidel
ITS-FidelITS-Fidel
ITS-Fidel
 
Teams and responsibilities
Teams and responsibilitiesTeams and responsibilities
Teams and responsibilities
 
Testing Tools Classroom Training
Testing Tools Classroom TrainingTesting Tools Classroom Training
Testing Tools Classroom Training
 
Agile Testing: The Role Of The Agile Tester
Agile Testing: The Role Of The Agile TesterAgile Testing: The Role Of The Agile Tester
Agile Testing: The Role Of The Agile Tester
 
Continuous Deployment: Startup Lessons Learned
Continuous Deployment: Startup Lessons LearnedContinuous Deployment: Startup Lessons Learned
Continuous Deployment: Startup Lessons Learned
 
Leandro Melendez - Switching Performance Left & Right
Leandro Melendez - Switching Performance Left & RightLeandro Melendez - Switching Performance Left & Right
Leandro Melendez - Switching Performance Left & Right
 
PRDCW-avent-aggregator
PRDCW-avent-aggregatorPRDCW-avent-aggregator
PRDCW-avent-aggregator
 
LocWorld: Building an Internationalization Plan; October 2011
LocWorld: Building an Internationalization Plan; October 2011LocWorld: Building an Internationalization Plan; October 2011
LocWorld: Building an Internationalization Plan; October 2011
 
Agile Base Camp - Agile metrics
Agile Base Camp - Agile metricsAgile Base Camp - Agile metrics
Agile Base Camp - Agile metrics
 

Plus de Amir Barylko

Functional converter project
Functional converter projectFunctional converter project
Functional converter projectAmir Barylko
 
Elm: delightful web development
Elm: delightful web developmentElm: delightful web development
Elm: delightful web developmentAmir Barylko
 
User stories deep dive
User stories deep diveUser stories deep dive
User stories deep diveAmir Barylko
 
Coderetreat hosting training
Coderetreat hosting trainingCoderetreat hosting training
Coderetreat hosting trainingAmir Barylko
 
There's no charge for (functional) awesomeness
There's no charge for (functional) awesomenessThere's no charge for (functional) awesomeness
There's no charge for (functional) awesomenessAmir Barylko
 
What's new in c# 6
What's new in c# 6What's new in c# 6
What's new in c# 6Amir Barylko
 
Who killed object oriented design?
Who killed object oriented design?Who killed object oriented design?
Who killed object oriented design?Amir Barylko
 
From coach to owner - What I learned from the other side
From coach to owner - What I learned from the other sideFrom coach to owner - What I learned from the other side
From coach to owner - What I learned from the other sideAmir Barylko
 
Communication is the Key to Teamwork and productivity
Communication is the Key to Teamwork and productivityCommunication is the Key to Teamwork and productivity
Communication is the Key to Teamwork and productivityAmir Barylko
 
Acceptance Test Driven Development
Acceptance Test Driven DevelopmentAcceptance Test Driven Development
Acceptance Test Driven DevelopmentAmir Barylko
 
Agile requirements
Agile requirementsAgile requirements
Agile requirementsAmir Barylko
 
Agile teams and responsibilities
Agile teams and responsibilitiesAgile teams and responsibilities
Agile teams and responsibilitiesAmir Barylko
 
Beutiful javascript with coffeescript
Beutiful javascript with coffeescriptBeutiful javascript with coffeescript
Beutiful javascript with coffeescriptAmir Barylko
 
Rich UI with Knockout.js & Coffeescript
Rich UI with Knockout.js & CoffeescriptRich UI with Knockout.js & Coffeescript
Rich UI with Knockout.js & CoffeescriptAmir Barylko
 

Plus de Amir Barylko (20)

Functional converter project
Functional converter projectFunctional converter project
Functional converter project
 
Elm: delightful web development
Elm: delightful web developmentElm: delightful web development
Elm: delightful web development
 
Dot Net Core
Dot Net CoreDot Net Core
Dot Net Core
 
No estimates
No estimatesNo estimates
No estimates
 
User stories deep dive
User stories deep diveUser stories deep dive
User stories deep dive
 
Coderetreat hosting training
Coderetreat hosting trainingCoderetreat hosting training
Coderetreat hosting training
 
There's no charge for (functional) awesomeness
There's no charge for (functional) awesomenessThere's no charge for (functional) awesomeness
There's no charge for (functional) awesomeness
 
What's new in c# 6
What's new in c# 6What's new in c# 6
What's new in c# 6
 
Productive teams
Productive teamsProductive teams
Productive teams
 
Who killed object oriented design?
Who killed object oriented design?Who killed object oriented design?
Who killed object oriented design?
 
From coach to owner - What I learned from the other side
From coach to owner - What I learned from the other sideFrom coach to owner - What I learned from the other side
From coach to owner - What I learned from the other side
 
Communication is the Key to Teamwork and productivity
Communication is the Key to Teamwork and productivityCommunication is the Key to Teamwork and productivity
Communication is the Key to Teamwork and productivity
 
Acceptance Test Driven Development
Acceptance Test Driven DevelopmentAcceptance Test Driven Development
Acceptance Test Driven Development
 
Refactoring
RefactoringRefactoring
Refactoring
 
Agile requirements
Agile requirementsAgile requirements
Agile requirements
 
Agile teams and responsibilities
Agile teams and responsibilitiesAgile teams and responsibilities
Agile teams and responsibilities
 
Refactoring
RefactoringRefactoring
Refactoring
 
Beutiful javascript with coffeescript
Beutiful javascript with coffeescriptBeutiful javascript with coffeescript
Beutiful javascript with coffeescript
 
Sass & bootstrap
Sass & bootstrapSass & bootstrap
Sass & bootstrap
 
Rich UI with Knockout.js & Coffeescript
Rich UI with Knockout.js & CoffeescriptRich UI with Knockout.js & Coffeescript
Rich UI with Knockout.js & Coffeescript
 

Dernier

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
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
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
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
 
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 Nanonetsnaman860154
 
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 MenDelhi Call girls
 
🐬 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
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 

Dernier (20)

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
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
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
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
 
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 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
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 

2012 regina TC - 103 quality driven

  • 1. AMIR BARYLKO QUALITY DRIVEN USING BDD + TDD Amir Barylko - Quality Driven MavenThought Inc.
  • 2. TESTING Why Testing? Unit tests TDD Integration Tests Acceptance Tests Amir Barylko - Quality Driven MavenThought Inc.
  • 3. REALITY CHECK • It is impossible to gather all the requirements at the beginning of a project. • Whatever requirements you do gather are guaranteed to change. • There will always be more to do than time and money will allow. Amir Barylko - Quality Driven MavenThought Inc.
  • 4. NO MORE EXCUSES • It works on my computer! • It was like that when I got here! • The previous developer didn’t know XXXX! • We need a satellite connection in order to run it! • We can’t reproduce the error! • We can’t test that! Amir Barylko - Quality Driven MavenThought Inc.
  • 5. UNIT TESTING • Test for a class or method • No dependencies • Should use mocking • Small • Clear Amir Barylko - Quality Driven MavenThought Inc.
  • 6. TDD • First write a test that fails (RED) • Write code to make it pass (GREEN) • Check if code can be improved (REFACTOR) • Start again until it’s done Amir Barylko - Quality Driven MavenThought Inc.
  • 7. BENEFITS OF TDD • Prove that your code • Regression tests as works byproduct • Avoid waste • Makechanges with (debugging) confidence • Increment code quality • Bring back the joy of coding! • Better design Amir Barylko - Quality Driven MavenThought Inc.
  • 8. WHEN TDD IS NOT ENOUGH •Legacy Code •Refactoring is not viable •Verify functionality across layers •Validate feature end to end Amir Barylko - Quality Driven MavenThought Inc.
  • 9. INTEGRATION TEST •More than one class •Still some parts can be mocked •Partial functionality of subsystem Amir Barylko - Quality Driven MavenThought Inc.
  • 10. ACCEPTANCE TEST •Black box testing •Crossing all layers •Should cover all scenarios •External subsystems may be mocked Amir Barylko - Quality Driven MavenThought Inc.
  • 11. SOFTWARE QUALITY What is it? Low Quality Classic QA Amir Barylko - Quality Driven MavenThought Inc.
  • 12. WHAT DOES IT MEAN? • Better code? • Faster delivery? • Less bugs? • Make sure we deliver the right thing? • Better Processes? Amir Barylko - Quality Driven MavenThought Inc.
  • 13. LOW QUALITY • Lack of testing • Lack of communication • Lack of metrics • Lack of traceability • Wrong tools Amir Barylko - Quality Driven MavenThought Inc.
  • 14. CLASSIC QA • Team separated from developments • Follow scripts or requirements • Done after the feature is implemented • May have more than one project in the queue • Feedback cycle may take weeks • Manual (no automation) Amir Barylko - Quality Driven MavenThought Inc.
  • 15. DOES IT WORK? •Your opinion here...... Amir Barylko - Quality Driven MavenThought Inc.
  • 16. A NEW CONCEPT Feature First Benefits Outside In Approach Runnable features Roles Amir Barylko - Quality Driven MavenThought Inc.
  • 17. FEATURE FIRST • Write the feature before implementation • Developers will implement feature using TDD • QA will validate against feature • Repeat until all features are done Amir Barylko - Quality Driven MavenThought Inc.
  • 18. BENEFITS • Focus on the feature • Testing all the way • Traceability • Quality every step of the process Amir Barylko - Quality Driven MavenThought Inc.
  • 19. OUTSIDE IN APPROACH Red BDD Red Refactor Refactor TDD Green Green Amir Barylko - Quality Driven MavenThought Inc.
  • 20. RUNNABLE FEATURES • Features describe functionality • What if we could run them? • Then features would validate functionality • Becoming live documentation Amir Barylko - Quality Driven MavenThought Inc.
  • 21. ROLES • Who writes the feature? • Who implements the feature? • Who validates the feature? • What’s the role of QA, PM, etc? Amir Barylko - Quality Driven MavenThought Inc.
  • 22. WRITING FEATURES Gherkin Syntax Feature Scenario Steps Amir Barylko - Quality Driven MavenThought Inc.
  • 23. GHERKIN DSL • Business readable DSL • Flush out requirements • Documentation • Automated testing • Used by Cucumber, SpecFlow, jBehave Amir Barylko - Quality Driven MavenThought Inc.
  • 24. SYNTAX Feature: Listing movies As a User I want to list movies So I can see the contents of the library Scenario: Browse available movies Given I have the following movies When I go to "Movies" Then I should see in the listing Amir Barylko - Quality Driven MavenThought Inc.
  • 25. FEATURES • Keyword Feature • The rest is free text Feature: Listing movies As a User I want to list movies So I can see the contents of the library Amir Barylko - Quality Driven MavenThought Inc.
  • 26. SCENARIOS • Each feature file can have multiple scenarios • Each scenario can contain multiple steps • Keywords: • Given When Then • And Not But Amir Barylko - Quality Driven MavenThought Inc.
  • 27. STEPS Scenario: Browse available movies Given I have some movies When I go to the listing page Then I should see all the movies Amir Barylko - Quality Driven MavenThought Inc.
  • 28. DEMO Amir Barylko - Quality Driven MavenThought Inc.
  • 29. QUESTIONS? Amir Barylko - Quality Driven MavenThought Inc.