If the testability of an artifact is high, then finding faults in the system (if any) by means of testing is easier.
This classification can be achieved by noticing that, to be testable, for a functionality of the system under test "S", which takes input "I", a computable functional predicate "V" must exists such that
is true when S, given input I, produce a valid output, false otherwise.
Many software systems are untestable, or not immediately testable.
For example, Google's ReCAPTCHA, without having any metadata about the images is not a testable system.
Recaptcha, however, can be immediately tested if for each image shown, there is a tag stored elsewhere.
Even though testability can not be measured directly (such as software size) it should be considered an intrinsic property of a software artifact because it is highly correlated with other key software qualities such as encapsulation, coupling, cohesion, and redundancy.
The correlation of 'testability' to good design can be observed by seeing that code that has weak cohesion, tight coupling, redundancy and lack of encapsulation is difficult to test.
[1] A lower degree of testability results in increased test effort.
In extreme cases a lack of testability may hinder testing parts of the software or software requirements at all.
Testability, a property applying to empirical hypothesis, involves two components.
The effort and effectiveness of software tests depends on numerous factors including: The testability of software components (modules, classes) is determined by factors such as: The testability of software components can be improved by: Requirements need to fulfill the following criteria in order to be testable: Treating the requirement as axioms, testability can be treated via asserting existence of a function
passes, else the system fails the test input.
Therefore, it is of imperative importance to figure out : can we or can we not create a function that effectively translates into the notion of the set indicator function for the specification set
Therefore, obviously without algebraic consistency, no such function can be found, and therefore, the specification cease to be termed as testable.