Testability is the degree to which a software system supports testing in its given context. The higher the level of testability, the easier the software system and its components are to test. If a component is not easy to test, it may indicate that the design is not ideal, leading to an implementation that is unnecessarily complex. A significant part of the development costs for software systems is related to testing, so if the software architecture can play a role in testability there can be noticeable cost benefits.
A software system that has a higher level of testability makes it easier to test, which results in an increase in both the efficiency as well as the effectiveness of testing. Testing efficiency increases because it takes less time and effort to create and execute tests. Testing effectiveness is increased because you are more likely to find existing...