SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

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
 

Was ist angesagt? (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#)
 

Andere mochten auch

Andere mochten auch (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
 

Ähnlich wie 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
 

Ähnlich wie 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)
 

Mehr von 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
 

Mehr von 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
 

Kürzlich hochgeladen

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
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
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
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
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
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
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
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 

Kürzlich hochgeladen (20)

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
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
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
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
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...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
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...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 

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