SlideShare uma empresa Scribd logo
1 de 29
Baixar para ler offline
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.

Mais conteúdo relacionado

Mais procurados

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
 

Mais procurados (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...
 

Destaque

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
 

Destaque (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
 

Semelhante a 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
 

Semelhante a 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
 

Mais 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
 

Mais 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
 

Último

SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 

Último (20)

SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 

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.