Domain-to-range ratio

{{Use dmy dates|date=November 2021}}

{{tone|date=May 2016}}The domain-to-range ratio (DRR) is a ratio which describes how the number of outputs corresponds to the number of inputs of a given logical function or software component. The domain-to-range ratio is a mathematical ratio of cardinality between the set of the function's possible inputs (the domain) and the set of possible outputs (the range).{{cite journal |last1=Voas |first1=J.M. |last2=Miller |first2=K.W. |date=March 1993 |title=Semantic metrics for software testability |journal=Journal of Systems and Software |language=en |volume=20 |issue=3 |pages=207–216 |doi=10.1016/0164-1212(93)90064-5}}{{cite book |last1=Woodward |first1=Martin R. |title=Testability, fault size and the domain-to-range ratio: An eternal triangle |last2=Al-Khanjari |first2=Zuhoor A. |date=5 September 2000 |publisher=ACM SIGSOFT |isbn=978-1-58113-266-3 |pages=168–172 |doi=10.1145/347324.349016 |s2cid=17772461}} For a function defined on a domain, D, and a range, R, the domain-to-range ratio is given as:DRR=\frac

D
R
It can be used to measure the risk of missing potential errors when testing the range of outputs alone.{{Cite book |last=Tarlinder, Alexander |url=http://worldcat.org/oclc/992888632 |title=Developer testing : building quality into software |date=2016 |publisher=Addison-Wesley |isbn=978-0-13-429106-2 |oclc=992888632}}

Example

Consider the function isEven() below, which checks the parity of an unsigned short number x, any value between 0 and 65,536, and yields a boolean value which corresponds to whether x is even or odd. This solution takes advantage of the fact that integer division in programming typically rounds towards zero.

bool isEven(unsigned short x) {

return (x / 2) == ((x + 3)/2 - 1);

}

Because x can be any value from 0 to 65,535, the function's domain has a cardinality of 65,536. The function yields 0, if x is even, or 1, if x is odd. This is expressed as the range \{0;1\}, which has a cardinality of 2. Therefore, the domain-to-range ratio of isEven() is given by:DRR={65,536 \over 2} = 32,768 Here, the domain-to-range ratio indicates that this function would require a comparatively large number of tests to find errors. If a test program attempts every possible value of x in order from 0 to 65,535, the program would have to perform 32,768 tests for each of the two possible outputs in order to find errors or edge cases. Because errors in functions with a high domain-to-range ratio are difficult to identify via manual testing or methods which reduce the number of tested inputs, such as orthogonal array testing or all-pairs testing, more computationally complex techniques may be used, such as fuzzing or static program analysis, to find errors.

See also

References

{{reflist}}

Category:Software metrics

Category:Software testing

Category:Set theory

{{software-eng-stub}}

{{Mathematics-stub}}

{{Logic-stub}}