Software testability: Difference between revisions

Content deleted Content added
Line 11:
Testability, a property applying to empirical hypothesis, involves two components.
The effort and effectiveness of software tests depends on numerous factors including:
* propertiesProperties of the software requirements
* propertiesProperties of the software itself (such as size, complexity and '''testability''')
* propertiesProperties of the test methods used
* propertiesProperties of the development- and testing processes
* qualificationQualification and motivation of the persons involved in the test process
 
== Testability of Softwaresoftware Componentscomponents ==
 
The testability of software components (modules, classes) is determined by factors such as:
* '''controllability'''Controllability: The degree to which it is possible to control the state of the component under test (CUT) as required for testing.
* '''observability'''Observability: The degree to which it is possible to observe (intermediate and final) test results.
* '''isolateability'''Isolateability: The degree to which the component under test (CUT) can be tested in isolation.
* '''[[separationSeparation of concerns]]''': The degree to which the component under test has a single, well defined responsibility.
* '''understandability'''Understandability: The degree to which the component under test is documented or self-explaining.
* '''automatability'''Automatability: The degree to which it is possible to automate testing of the component under test.
* '''heterogeneity'''Heterogeneity: The degree to which the use of diverse technologies requires to use diverse test methods and tools in parallel.
 
The testability of software components can be improved by:
* [[Test-driven development]]
* designDesign for testability (similar to [[design for test]] in the hardware ___domain)
 
== Testability hierarchy ==