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 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.