Your SlideShare is downloading. ×
Designing Software for Testability
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Designing Software for Testability

1,970
views

Published on

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.

Published in: Technology, Business

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,970
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
48
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Design For Testability A forgotten design pattern Rohit Nayak Talentica Software
  • 2.  
  • 3.
    • The Anti-Pattern
    • If it works,
    • its the developer,
    • if not it's QA
  • 4.
    • 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 .
  • 5.
    • “ 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.”
  • 6. 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.
  • 7. Good Automated Tests are
    • Repeatable
    • Easy to Write
    • Easy to Understand
    • Fast
  • 8. 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
  • 9. 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
  • 10. 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)
  • 11. 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