• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Designing Software for Testability
 

Designing Software for Testability

on

  • 2,000 views

Introduction to designing software in a way that they can be tested easily.

Introduction to designing software in a way that they can be tested easily.

Statistics

Views

Total Views
2,000
Views on SlideShare
1,999
Embed Views
1

Actions

Likes
1
Downloads
38
Comments
0

1 Embed 1

http://www.slideshare.net 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Designing Software for Testability Designing Software for Testability Presentation Transcript

    • Design For Testability A forgotten design pattern Rohit Nayak Talentica Software
    •  
      • The Anti-Pattern
      • If it works,
      • its the developer,
      • if not it's QA
      • Design for Testability – The aspects of the product design process whose goal is to ensure that the testability of the end product is competently and sufficiently developed.
      • Design for Diagnosability – the aspects  of the Diagnostic Engineering process that focus on improving the product design, with the intent of optimizing the extent to which faults within the end product can be confidently, unambiguously and efficiently identified .
      • “ Testability is a design issue and needs to be addressed with the design of the rest of the system. Projects that defer testing to the later stages of a project will find their programmers unwilling to consider testability changes by the time testers actually roll onto the project and start making suggestions. Testability takes cooperation, appreciation and a team commitment to reliability.”
    • Testability and Automation
      • Testability is a critical aspect of successful test automation efforts:
      • Automation requires testability. Whether testing via an API or a GUI, some accommodations to testability are necessary for successful automation. If you’re going to have to do it, why not plan for it up front?
      • Successful automation requires a focus on testability. Again, regardless of approach, the greater the emphasis on testability within the development team, the more likely automated testing will successful.
      • Test automation always affects test veracity to some degree. Automating tests always makes them somewhat different from actual customer usage. Wise testers will understand these deviations and develop compensating testing strategies, rather than act as though it can be eliminated.
    • Good Automated Tests are
      • Repeatable
      • Easy to Write
      • Easy to Understand
      • Fast
    • Coding For Testability
      • Expose application data
      • Choose automation-friendly third-party controls
      • Uniquely name application pages and objects
      • Add “hidden” controls
      • Modify custom controls
      • Externalize functions in a Public API
    • Coding For Testability - 2
      • Use proper naming conventions
      • Use only standard widgets
      • Expose “hidden” controls
      • Use unique page names
      • Composition in manageable components
      • Production environment can be simulated in test environment
    • Design criteria
      • Layering (e.g., user interface, application kernel, database access)
      • Modularization: strong cohesion, lose coupling localization of function localization of test
      • Limited special cases high test coverage with few tests
      • Errors are raised where they occur (not later)
      • System can be parameterized (e.g., Date) by the test environment
      • Easy debugging (localizing errors)
    • The Value Proposition
      • Developers write code, but the real mission is to ship software
      • Since detecting and fixing errors is such a major part of the development effort, it's worth our time as developers to invest in feedback mechanisms to find errors more quickly