SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
Design for Testability

              Will Iverson
Who Is This Guy?
    Will Iverson
         wiverson@nukio.com
         Check www.nukio.com for LinkedIn, Twitter, etc.
    Java since 1995
         Pascal/C/C++ before that…
         Apple, Symantec, Sun, BEA…
    Four books on Java
         Hibernate, Web Services, Mac OS X Java, Jakarta Commons
    Today: Architect, Consultant, Manager, Coach
         All Star Directories, Architect
         Nukio, Coach/Trainer/Consultant
Audience Qs
    Java, .NET, Other…?
    Agile, Waterfall, Other…?
    Who is your customer?
Basic Premise
    Design should include:
         Correctness
         Performance
         Usability
         Testability
Why Design Testability?
    Care about quality of work
    Want rapid feedback
    Want to solve problem correctly
    Want to be able to make changes without fear
    Want to be a team working toward same goals!
What is Design?
    Design : planning that lays the basis for making of every
     object or system
         Both a noun & verb


    Things you design…
         Database models
         System components
         User interfaces
         Process for adding features & fixing issues
Typical Web App Development Flow
                                     Current Software
                                     • Validate (customer, market,
                                       product management, etc.)




     Deploy                                                          New Feature or Fix
     • Validate non-functional                                       • What does it do?
       (perf, system)




     Test                                                            Design
     • Verify against requirements                                   • Database changes
     • Negative tests                                                • Code




                                     Implement
                                     • Database changes
                                     • Code
Design for Testability
                                      Current Software
                                      •  Validate (customer, market,
                                         product management, etc.)




  Deploy                                                                  New Feature or Fix
  •  Validate non-functional (perf,                                       •  What does it do?
     system)




            Implement                                             Design                        How you test &
            •  Tests                                              •  Tests                      what you test
            •  Database changes                                   •  Database changes           informs the
            •  Code                                               •  Code
                                                                                                design!
Agile, Waterfall, Other…?
    Agile
         Test Driven Development, Behavior Driven Development,
          Acceptance Test Driven Development
         Reality check: team dynamic?
    Waterfall
         Typical: QA handed requirements, software: figure it out
         Lucky: QA test plan is included in initial sign off
    Freeform
         Sit in the same room, hash it out daily
Sample: Code Centric High Level Stack
Presentation
•  External Web Site (Spring MVC)
•  Internal Tools (Grails)
•  Partner API (XML via HTTPS)
•  Reporting (Jasper)




                 Business Logic
                 •  Spring
                 •  Hibernate




                      Database
                      •  Data Model
                      •  Data Set[s]
Example: Testable High Level Stack Design
Presentation                                        Spring Controller Tests
•  External Web Site (Spring MVC)
                                                    Canoo Web Tests
•  Internal Tools (Grails)                          Selenium
•  Partner API (XML via HTTPS)                      HTMLUnit
•  Reporting (Jasper)                               Report Monitoring Job[s]


                 Business Logic                     JUnit
                 •  Spring                          DbUnit
                 •  Hibernate                       Mockito (external services)



                      Database                      p6spy
                      •  Data Model                 Jailer
                      •  Data Set[s]                LiquiBase

                 How would I test and identify the resolution to any open issues?
Sample: Typical Model Design
    “There are two ways of
     constructing a software
     design. One way is to
     make it so simple that
     there are obviously no
     deficiencies, and the other
     way is to make it so
     complicated that there are
     no obvious deficiencies.”
         C.A.R. Hoare
Testable Model Design


                                                                Revenue
Test this independently of                                     Recognition
                                                                 Service
everything else                                                                 • 6 public interface methods




                                               Lead
                                              Delivery
                                              Service

                        • 4 public interface methods
                                                                           Lead Generation
                                                                               Service



                                                         • 3 public interface methods
Complexity Kills Services
    Stateless interfaces
         Avoid complex choreography
         Single request/response actions
    More than 5-8 tables? More than 5-8 classes?
         Break it up
    But… it’s not complicated enough!?
         Exactly.
    What about Integration Tests?
         Are you testing integration, or are you testing coupled
          components
              Coupled components = revisit design!
Real World Examples: Decoupling By Force
    OS & Application Processes
    Database Connection Recovery
    Virtual Machines (Java, .NET,VMWare, etc)

    “Chernobyl-Based Design”
Test at the Right Place
    Don’t test your database through the GUI
    Don’t test your business logic through the GUI
    You can’t test APIs (remote/distributed or traditional) via
     GUI
Common Challenges
    JavaScript
         You can test JavaScript via Selenium if properly implemented
         Takes work & discipline
    Bad HTML
         Test: can you push back on dev to get proper ids?
    Layout & Design Fidelity
         Browsershots
         Many hosted services
Things To Mock
    Clock
    3rd Party Services

    What about database interaction?
Things To Do
    Someone needs to do exploratory testing
         QA background is key
    Someone needs to automate the testing
         Avoid manual regression – oh, the humanity!
    Someone needs to validate with the customer
         Acceptance tests?
Shameless Plug
    Agile Testing
         CI, TDD
         Expert JUnit
         DBUnit, HTMLUnit, Selenium
         Automate documentation generation
    March 25th – 26th


                     www.nukio.com
Bonus Finale: Sikuli
Q&A

Contenu connexe

Tendances

Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Developmentguestc8093a6
 
Test-Driven Development In Action
Test-Driven Development In ActionTest-Driven Development In Action
Test-Driven Development In ActionJon Kruger
 
iOS Test-Driven Development
iOS Test-Driven DevelopmentiOS Test-Driven Development
iOS Test-Driven DevelopmentPablo Villar
 
Test-Driven Development
Test-Driven DevelopmentTest-Driven Development
Test-Driven DevelopmentJohn Blum
 
An Introduction to Test Driven Development
An Introduction to Test Driven Development An Introduction to Test Driven Development
An Introduction to Test Driven Development CodeOps Technologies LLP
 
Agile Programming Systems # TDD intro
Agile Programming Systems # TDD introAgile Programming Systems # TDD intro
Agile Programming Systems # TDD introVitaliy Kulikov
 
2016 10-04: tdd++: tdd made easier
2016 10-04: tdd++: tdd made easier2016 10-04: tdd++: tdd made easier
2016 10-04: tdd++: tdd made easierChristian Hujer
 
Getting started with Test Driven Development
Getting started with Test Driven DevelopmentGetting started with Test Driven Development
Getting started with Test Driven DevelopmentFerdous Mahmud Shaon
 
A Not-So-Serious Introduction to Test Driven Development (TDD)
A Not-So-Serious Introduction to Test Driven Development (TDD) A Not-So-Serious Introduction to Test Driven Development (TDD)
A Not-So-Serious Introduction to Test Driven Development (TDD) CodeOps Technologies LLP
 
Test Driven iOS Development (TDD)
Test Driven iOS Development (TDD)Test Driven iOS Development (TDD)
Test Driven iOS Development (TDD)Babul Mirdha
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven DevelopmentDhaval Dalal
 
Dependency Injection in iOS
Dependency Injection in iOSDependency Injection in iOS
Dependency Injection in iOSPablo Villar
 
Software Quality via Unit Testing
Software Quality via Unit TestingSoftware Quality via Unit Testing
Software Quality via Unit TestingShaun Abram
 
A Brief Introduction to Test-Driven Development
A Brief Introduction to Test-Driven DevelopmentA Brief Introduction to Test-Driven Development
A Brief Introduction to Test-Driven DevelopmentShawn Jones
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven DevelopmentMireia Sangalo
 
Design for Testability: A Tutorial for Devs and Testers
Design for Testability: A Tutorial for Devs and TestersDesign for Testability: A Tutorial for Devs and Testers
Design for Testability: A Tutorial for Devs and TestersTechWell
 
Test driven development
Test driven developmentTest driven development
Test driven developmentNascenia IT
 
Test-Driven Development (TDD)
Test-Driven Development (TDD)Test-Driven Development (TDD)
Test-Driven Development (TDD)Brian Rasmussen
 
Test Driven Development (C#)
Test Driven Development (C#)Test Driven Development (C#)
Test Driven Development (C#)Alan Dean
 

Tendances (20)

Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Test-Driven Development In Action
Test-Driven Development In ActionTest-Driven Development In Action
Test-Driven Development In Action
 
iOS Test-Driven Development
iOS Test-Driven DevelopmentiOS Test-Driven Development
iOS Test-Driven Development
 
Test-Driven Development
Test-Driven DevelopmentTest-Driven Development
Test-Driven Development
 
An Introduction to Test Driven Development
An Introduction to Test Driven Development An Introduction to Test Driven Development
An Introduction to Test Driven Development
 
Agile Programming Systems # TDD intro
Agile Programming Systems # TDD introAgile Programming Systems # TDD intro
Agile Programming Systems # TDD intro
 
2016 10-04: tdd++: tdd made easier
2016 10-04: tdd++: tdd made easier2016 10-04: tdd++: tdd made easier
2016 10-04: tdd++: tdd made easier
 
Getting started with Test Driven Development
Getting started with Test Driven DevelopmentGetting started with Test Driven Development
Getting started with Test Driven Development
 
A Not-So-Serious Introduction to Test Driven Development (TDD)
A Not-So-Serious Introduction to Test Driven Development (TDD) A Not-So-Serious Introduction to Test Driven Development (TDD)
A Not-So-Serious Introduction to Test Driven Development (TDD)
 
Test Driven iOS Development (TDD)
Test Driven iOS Development (TDD)Test Driven iOS Development (TDD)
Test Driven iOS Development (TDD)
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Testing 101
Testing 101Testing 101
Testing 101
 
Dependency Injection in iOS
Dependency Injection in iOSDependency Injection in iOS
Dependency Injection in iOS
 
Software Quality via Unit Testing
Software Quality via Unit TestingSoftware Quality via Unit Testing
Software Quality via Unit Testing
 
A Brief Introduction to Test-Driven Development
A Brief Introduction to Test-Driven DevelopmentA Brief Introduction to Test-Driven Development
A Brief Introduction to Test-Driven Development
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Design for Testability: A Tutorial for Devs and Testers
Design for Testability: A Tutorial for Devs and TestersDesign for Testability: A Tutorial for Devs and Testers
Design for Testability: A Tutorial for Devs and Testers
 
Test driven development
Test driven developmentTest driven development
Test driven development
 
Test-Driven Development (TDD)
Test-Driven Development (TDD)Test-Driven Development (TDD)
Test-Driven Development (TDD)
 
Test Driven Development (C#)
Test Driven Development (C#)Test Driven Development (C#)
Test Driven Development (C#)
 

En vedette

En vedette (18)

Design for Testability
Design for TestabilityDesign for Testability
Design for Testability
 
dft
dftdft
dft
 
Design for Testability DfT Seminar
Design for Testability DfT SeminarDesign for Testability DfT Seminar
Design for Testability DfT Seminar
 
Testability: Factors and Strategy
Testability: Factors and StrategyTestability: Factors and Strategy
Testability: Factors and Strategy
 
Software testability slide share
Software testability slide shareSoftware testability slide share
Software testability slide share
 
Design for Testability
Design for Testability Design for Testability
Design for Testability
 
transmission line
transmission line transmission line
transmission line
 
Transmission lines
Transmission linesTransmission lines
Transmission lines
 
Transmission Line
Transmission LineTransmission Line
Transmission Line
 
Transmission lines
Transmission linesTransmission lines
Transmission lines
 
Transmission Line Basics
Transmission Line BasicsTransmission Line Basics
Transmission Line Basics
 
Design For Testability - The good, the bad and the ugly
Design For Testability - The good, the bad and the uglyDesign For Testability - The good, the bad and the ugly
Design For Testability - The good, the bad and the ugly
 
Design For Reliability
Design For ReliabilityDesign For Reliability
Design For Reliability
 
Physical design-complete
Physical design-completePhysical design-complete
Physical design-complete
 
overview of reliability engineering
overview of reliability engineeringoverview of reliability engineering
overview of reliability engineering
 
basic concepts of reliability
basic concepts of reliabilitybasic concepts of reliability
basic concepts of reliability
 
transmission line
transmission line transmission line
transmission line
 
Software testing ppt
Software testing pptSoftware testing ppt
Software testing ppt
 

Similaire à Design For Testability

Introductie Visual Studio ALM 2012
Introductie Visual Studio ALM 2012Introductie Visual Studio ALM 2012
Introductie Visual Studio ALM 2012Delta-N
 
Lanzamiento Visual Studio 2012 - Modern ALM
Lanzamiento Visual Studio 2012 - Modern ALMLanzamiento Visual Studio 2012 - Modern ALM
Lanzamiento Visual Studio 2012 - Modern ALMDebora Di Piano
 
Chef for DevOps - an Introduction
Chef for DevOps - an IntroductionChef for DevOps - an Introduction
Chef for DevOps - an IntroductionSanjeev Sharma
 
XebiaLabs, CloudBees, Puppet Labs Webinar Slides - IT Automation for the Mode...
XebiaLabs, CloudBees, Puppet Labs Webinar Slides - IT Automation for the Mode...XebiaLabs, CloudBees, Puppet Labs Webinar Slides - IT Automation for the Mode...
XebiaLabs, CloudBees, Puppet Labs Webinar Slides - IT Automation for the Mode...XebiaLabs
 
Agile Testing at eBay
Agile Testing at eBayAgile Testing at eBay
Agile Testing at eBayDominik Dary
 
Quality Coding with Visual Studio 2012
Quality Coding with Visual Studio 2012Quality Coding with Visual Studio 2012
Quality Coding with Visual Studio 2012Imaginet
 
Enter the mind of an Agile Developer
Enter the mind of an Agile DeveloperEnter the mind of an Agile Developer
Enter the mind of an Agile DeveloperBSGAfrica
 
Quality Coding: What's New with Visual Studio 2012
Quality Coding: What's New with Visual Studio 2012Quality Coding: What's New with Visual Studio 2012
Quality Coding: What's New with Visual Studio 2012Imaginet
 
Quality Coding: What’s New with Visual Studio 2012
Quality Coding: What’s New with Visual Studio 2012Quality Coding: What’s New with Visual Studio 2012
Quality Coding: What’s New with Visual Studio 2012Imaginet
 
Unosquare SlideShare Presentation
Unosquare SlideShare PresentationUnosquare SlideShare Presentation
Unosquare SlideShare PresentationMichael Barrett
 
Bogdan molocea scaling up using automation and performance testing
Bogdan molocea   scaling up using automation and performance testingBogdan molocea   scaling up using automation and performance testing
Bogdan molocea scaling up using automation and performance testingCodecamp Romania
 
DevOps for AI Apps
DevOps for AI AppsDevOps for AI Apps
DevOps for AI AppsRichin Jain
 
ALM with TFS: From the Drawing Board to the Cloud
ALM with TFS: From the Drawing Board to the CloudALM with TFS: From the Drawing Board to the Cloud
ALM with TFS: From the Drawing Board to the CloudJeremy Likness
 

Similaire à Design For Testability (20)

Introductie Visual Studio ALM 2012
Introductie Visual Studio ALM 2012Introductie Visual Studio ALM 2012
Introductie Visual Studio ALM 2012
 
Introductie Visual Studio ALM 2012
Introductie Visual Studio ALM 2012Introductie Visual Studio ALM 2012
Introductie Visual Studio ALM 2012
 
ITS-Fidel
ITS-FidelITS-Fidel
ITS-Fidel
 
Selenium Camp 2012
Selenium Camp 2012Selenium Camp 2012
Selenium Camp 2012
 
Lanzamiento Visual Studio 2012 - Modern ALM
Lanzamiento Visual Studio 2012 - Modern ALMLanzamiento Visual Studio 2012 - Modern ALM
Lanzamiento Visual Studio 2012 - Modern ALM
 
Chef for DevOps - an Introduction
Chef for DevOps - an IntroductionChef for DevOps - an Introduction
Chef for DevOps - an Introduction
 
XebiaLabs, CloudBees, Puppet Labs Webinar Slides - IT Automation for the Mode...
XebiaLabs, CloudBees, Puppet Labs Webinar Slides - IT Automation for the Mode...XebiaLabs, CloudBees, Puppet Labs Webinar Slides - IT Automation for the Mode...
XebiaLabs, CloudBees, Puppet Labs Webinar Slides - IT Automation for the Mode...
 
Red7 Automating UAT Web Testing
Red7 Automating UAT Web TestingRed7 Automating UAT Web Testing
Red7 Automating UAT Web Testing
 
Agile Testing at eBay
Agile Testing at eBayAgile Testing at eBay
Agile Testing at eBay
 
Quality Coding with Visual Studio 2012
Quality Coding with Visual Studio 2012Quality Coding with Visual Studio 2012
Quality Coding with Visual Studio 2012
 
Enter the mind of an Agile Developer
Enter the mind of an Agile DeveloperEnter the mind of an Agile Developer
Enter the mind of an Agile Developer
 
Quality Coding: What's New with Visual Studio 2012
Quality Coding: What's New with Visual Studio 2012Quality Coding: What's New with Visual Studio 2012
Quality Coding: What's New with Visual Studio 2012
 
Quality Coding: What’s New with Visual Studio 2012
Quality Coding: What’s New with Visual Studio 2012Quality Coding: What’s New with Visual Studio 2012
Quality Coding: What’s New with Visual Studio 2012
 
Unosquare SlideShare Presentation
Unosquare SlideShare PresentationUnosquare SlideShare Presentation
Unosquare SlideShare Presentation
 
Iterative software development
Iterative software developmentIterative software development
Iterative software development
 
Bogdan molocea scaling up using automation and performance testing
Bogdan molocea   scaling up using automation and performance testingBogdan molocea   scaling up using automation and performance testing
Bogdan molocea scaling up using automation and performance testing
 
DevOps for AI Apps
DevOps for AI AppsDevOps for AI Apps
DevOps for AI Apps
 
leenaaggarwal
leenaaggarwalleenaaggarwal
leenaaggarwal
 
ALM with TFS: From the Drawing Board to the Cloud
ALM with TFS: From the Drawing Board to the CloudALM with TFS: From the Drawing Board to the Cloud
ALM with TFS: From the Drawing Board to the Cloud
 
Mayur_Resume (2) (1)
Mayur_Resume (2) (1)Mayur_Resume (2) (1)
Mayur_Resume (2) (1)
 

Plus de Will Iverson

Decisions, Decisions: Native to Mobile Web
Decisions, Decisions: Native to Mobile WebDecisions, Decisions: Native to Mobile Web
Decisions, Decisions: Native to Mobile WebWill Iverson
 
Greenfield Java 2013
Greenfield Java 2013Greenfield Java 2013
Greenfield Java 2013Will Iverson
 
QA Lab in the Cloud
QA Lab in the CloudQA Lab in the Cloud
QA Lab in the CloudWill Iverson
 
SeaJUG May 2012 mybatis
SeaJUG May 2012 mybatisSeaJUG May 2012 mybatis
SeaJUG May 2012 mybatisWill Iverson
 
Continuous Delivery Overview
Continuous Delivery OverviewContinuous Delivery Overview
Continuous Delivery OverviewWill Iverson
 
Introduction to Kanban
Introduction to KanbanIntroduction to Kanban
Introduction to KanbanWill Iverson
 
Practical maven-slides 2
Practical maven-slides 2Practical maven-slides 2
Practical maven-slides 2Will Iverson
 
Software Internationalization Crash Course
Software Internationalization Crash CourseSoftware Internationalization Crash Course
Software Internationalization Crash CourseWill Iverson
 
Choosing a Java Web Framework
Choosing a Java Web FrameworkChoosing a Java Web Framework
Choosing a Java Web FrameworkWill Iverson
 
Java Tools and Techniques for Solving Tricky Problem
Java Tools and Techniques for Solving Tricky ProblemJava Tools and Techniques for Solving Tricky Problem
Java Tools and Techniques for Solving Tricky ProblemWill Iverson
 

Plus de Will Iverson (12)

SeaJUG 5 15-2018
SeaJUG 5 15-2018SeaJUG 5 15-2018
SeaJUG 5 15-2018
 
Java CMS 2015
Java CMS 2015Java CMS 2015
Java CMS 2015
 
Decisions, Decisions: Native to Mobile Web
Decisions, Decisions: Native to Mobile WebDecisions, Decisions: Native to Mobile Web
Decisions, Decisions: Native to Mobile Web
 
Greenfield Java 2013
Greenfield Java 2013Greenfield Java 2013
Greenfield Java 2013
 
QA Lab in the Cloud
QA Lab in the CloudQA Lab in the Cloud
QA Lab in the Cloud
 
SeaJUG May 2012 mybatis
SeaJUG May 2012 mybatisSeaJUG May 2012 mybatis
SeaJUG May 2012 mybatis
 
Continuous Delivery Overview
Continuous Delivery OverviewContinuous Delivery Overview
Continuous Delivery Overview
 
Introduction to Kanban
Introduction to KanbanIntroduction to Kanban
Introduction to Kanban
 
Practical maven-slides 2
Practical maven-slides 2Practical maven-slides 2
Practical maven-slides 2
 
Software Internationalization Crash Course
Software Internationalization Crash CourseSoftware Internationalization Crash Course
Software Internationalization Crash Course
 
Choosing a Java Web Framework
Choosing a Java Web FrameworkChoosing a Java Web Framework
Choosing a Java Web Framework
 
Java Tools and Techniques for Solving Tricky Problem
Java Tools and Techniques for Solving Tricky ProblemJava Tools and Techniques for Solving Tricky Problem
Java Tools and Techniques for Solving Tricky Problem
 

Dernier

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
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
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
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
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
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
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 

Dernier (20)

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
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
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
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
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
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
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 

Design For Testability

  • 1. Design for Testability Will Iverson
  • 2. Who Is This Guy?   Will Iverson   wiverson@nukio.com   Check www.nukio.com for LinkedIn, Twitter, etc.   Java since 1995   Pascal/C/C++ before that…   Apple, Symantec, Sun, BEA…   Four books on Java   Hibernate, Web Services, Mac OS X Java, Jakarta Commons   Today: Architect, Consultant, Manager, Coach   All Star Directories, Architect   Nukio, Coach/Trainer/Consultant
  • 3. Audience Qs   Java, .NET, Other…?   Agile, Waterfall, Other…?   Who is your customer?
  • 4. Basic Premise   Design should include:   Correctness   Performance   Usability   Testability
  • 5. Why Design Testability?   Care about quality of work   Want rapid feedback   Want to solve problem correctly   Want to be able to make changes without fear   Want to be a team working toward same goals!
  • 6. What is Design?   Design : planning that lays the basis for making of every object or system   Both a noun & verb   Things you design…   Database models   System components   User interfaces   Process for adding features & fixing issues
  • 7. Typical Web App Development Flow Current Software • Validate (customer, market, product management, etc.) Deploy New Feature or Fix • Validate non-functional • What does it do? (perf, system) Test Design • Verify against requirements • Database changes • Negative tests • Code Implement • Database changes • Code
  • 8. Design for Testability Current Software •  Validate (customer, market, product management, etc.) Deploy New Feature or Fix •  Validate non-functional (perf, •  What does it do? system) Implement Design How you test & •  Tests •  Tests what you test •  Database changes •  Database changes informs the •  Code •  Code design!
  • 9. Agile, Waterfall, Other…?   Agile   Test Driven Development, Behavior Driven Development, Acceptance Test Driven Development   Reality check: team dynamic?   Waterfall   Typical: QA handed requirements, software: figure it out   Lucky: QA test plan is included in initial sign off   Freeform   Sit in the same room, hash it out daily
  • 10. Sample: Code Centric High Level Stack Presentation •  External Web Site (Spring MVC) •  Internal Tools (Grails) •  Partner API (XML via HTTPS) •  Reporting (Jasper) Business Logic •  Spring •  Hibernate Database •  Data Model •  Data Set[s]
  • 11. Example: Testable High Level Stack Design Presentation Spring Controller Tests •  External Web Site (Spring MVC) Canoo Web Tests •  Internal Tools (Grails) Selenium •  Partner API (XML via HTTPS) HTMLUnit •  Reporting (Jasper) Report Monitoring Job[s] Business Logic JUnit •  Spring DbUnit •  Hibernate Mockito (external services) Database p6spy •  Data Model Jailer •  Data Set[s] LiquiBase How would I test and identify the resolution to any open issues?
  • 12. Sample: Typical Model Design   “There are two ways of constructing a software design. One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies.”   C.A.R. Hoare
  • 13. Testable Model Design Revenue Test this independently of Recognition Service everything else • 6 public interface methods Lead Delivery Service • 4 public interface methods Lead Generation Service • 3 public interface methods
  • 14. Complexity Kills Services   Stateless interfaces   Avoid complex choreography   Single request/response actions   More than 5-8 tables? More than 5-8 classes?   Break it up   But… it’s not complicated enough!?   Exactly.   What about Integration Tests?   Are you testing integration, or are you testing coupled components   Coupled components = revisit design!
  • 15. Real World Examples: Decoupling By Force   OS & Application Processes   Database Connection Recovery   Virtual Machines (Java, .NET,VMWare, etc)   “Chernobyl-Based Design”
  • 16. Test at the Right Place   Don’t test your database through the GUI   Don’t test your business logic through the GUI   You can’t test APIs (remote/distributed or traditional) via GUI
  • 17. Common Challenges   JavaScript   You can test JavaScript via Selenium if properly implemented   Takes work & discipline   Bad HTML   Test: can you push back on dev to get proper ids?   Layout & Design Fidelity   Browsershots   Many hosted services
  • 18. Things To Mock   Clock   3rd Party Services   What about database interaction?
  • 19. Things To Do   Someone needs to do exploratory testing   QA background is key   Someone needs to automate the testing   Avoid manual regression – oh, the humanity!   Someone needs to validate with the customer   Acceptance tests?
  • 20. Shameless Plug   Agile Testing   CI, TDD   Expert JUnit   DBUnit, HTMLUnit, Selenium   Automate documentation generation   March 25th – 26th www.nukio.com
  • 22. Q&A