Abstract
A key issue in testing is how many tests are needed for a required level of coverage or fault detection. Estimates are often based on error rates in initial testing, or on code coverage. For example, tests may be run until a desired level of statement or branch coverage is achieved. Combinatorial methods present an opportunity for a different approach to estimating required test set size, using characteristics of the test set. This paper describes methods for estimating the coverage of, and ability to detect, t-way interaction faults of a test set based on a covering array. We also develop a connection between (static) combinatorial coverage and (dynamic) code coverage, such that if a specific condition is satisfied, 100 % branch coverage is assured. Using these results, we propose practical recommendations for using combinatorial coverage in specifying test requirements, and for improving estimates of the fault detection capacity of a test set.
Similar content being viewed by others
Explore related subjects
Discover the latest articles, news and stories from top researchers in related subjects.References
Dunietz S, Ehrlich WK, Szablak BD, Mallows CL, Iannino A (1997) Applying design of experiments to software testing. In: Proc. Intl. Conf. on Software Engineering, (ICSE ’97), pp 205–215
Grindal M, Offutt J, Andler SF (2005) Combination testing strategies: a survey. Softw Test Verif Reliab 15:167–199
Lei Y, Kacker R, Kuhn DR, Okun V, Lawrence J (2007) IPOG: a general strategy for \(t\)-way software testing. In: Proc., IEEE Engineering of computer based systems, pp 549–556
Kuhn DR, Kacker RN, Lei Y (2010) Practical combinatorial testing. NIST SP 800–142
Kuhn DR, Wallace DR, Gallo AM Jr (2004) Software fault interactions and implications for software testing. IEEE Trans Softw Eng 30(6):418–421
Bryce R, Colbourn CJ, Cohen MB (2005) A framework of greedy methods for constructing interaction tests. In: The 27th international conference on software engineering (ICSE), St. Louis, Missouri, pp 146–155
Kuhn DR, Kacker R, Lei Y (2012) Combinatorial coverage measurement. NIST IR 7878
Kuhn DR, Dominguez Mendoza I, Kacker RN, Lei Y (2013) Combinatorial coverage measurement concepts and applications. In: Proc. IEEE sixth intl conf on software testing, verification and validation workshops (IWCT). IEEE, pp 352–361
Maximoff JR, Trela MD, Kuhn DR, Kacker R (2010) A method for analyzing system state-space coverage within a \(t\)-wise testing framework. IEEE International Systems Conference 2010. Apr. 4–11, San Diego
Kuhn DR, Kacker RN (2012) Measuring combinatorial coverage of system state-space for IV&V. NASA IV&V Workshop
Price C, Kuhn R, Forquer R, Lagoy A, Kacker R (2013) Evaluating the \(t\)-way combinatorial technique for determining the thoroughness of a test suite. NASA IV&V Workshop
Arcuri A, Briand L (2011) Formal analysis of the probability of interaction fault detection using random testing. IEEE Trans. Software Engineering. IEEE Computer Society
Lyu MR (1996) Handbook of software reliability engineering, vol 222. IEEE Computer Society Press, CA
Bell KZ, Vouk Mladen A (2005) On effectiveness of pairwise methodology for testing network-centric software. In: Proceedings of the ITI third IEEE intl conf. information & communications technology. Cairo, Egypt, 2005, pp 221–235
du Bousquet L, Ledru Y, Maury O, Oriat C, Lanet J-L (2004) A case study in JML-based software validation. In: Proc. 19th Int. IEEE Conf. on automated sofware engineering. Linz, 2004, pp 294–297
Ammann P, Offutt J (2008) Introduction to software testing. Cambridge University Press, Cambridge, UK
Montanez C, Kuhn DR, Brady M, Rivello RM, Reyes J, Michael K (2012) Evaluation of fault detection effectiveness for combinatorial and exhaustive selection of discretized test inputs. Softw Qual Prof Mag 14(3):32–38
Author information
Authors and Affiliations
Corresponding author
Appendices
Appendix 1: Ancillary coverage, (\(t+1\))-way and (\(t+2\))-way for n-variable covering arrays
Appendix 2
Explanation of charts: Lower and upper bounds on fault coverage are estimated for n-variable covering arrays, using ancillary \((t+1)\)-way and \((t+2)\)-way coverage for t-way arrays, for \(t=2\) through 5. For example, the first column below indicates that a 2-way covering array provides 100 % 1-way and 100 % 2-way coverage, 76.8 % 3-way coverage, and 46.1 % 4-way coverage. Similarly, the second column shows 100 % coverage of 1-way through 3-way for a 3-way array, with 83.5 and 53.5 % 4-way and 5-way coverage. Lower and upper bounds are then computed using the empirical data from Table 1 (reproduced in first two columns below) and expression (2) for \(\mathrm{Fault\,coverage}=\sum \nolimits _{1\le t\le k} F_t \times S_t\).
Appendix 3
Explanation of charts: Comparison of fault coverage for two different hypothetical distributions of faults in 10-variable covering arrays, using \((t+1)\)-way and \((t+2)\)-way coverage for t-way arrays, for \(t=2\) through 5. For example, the first column below indicates that a 2-way covering array provides 100 % 1-way and 100 % 2-way coverage, 76.8 % 3-way coverage, and 46.1 % 4-way coverage, resulting in 2-way fault coverage of 49.9 % for distribution 1 (right) and 23.1 % for distribution 2.
Appendix 4
The left panel of Table 4 shows the combinatorial coverage of 7489 tests for a NASA spacecraft documented in [9]. The test set was developed using conventional methods and analyzed to determine the level of combinatorial coverage. The right panel shows fault coverage estimated using expression (2) under various possible hypothetical fault profiles.
Profile \({P}_{1}\) is approximately the upper bound from Table 2, representing an average of fault distributions for previously reported data [5]. \({P}_{2}\) assumes an application for which single-value faults have been removed. \({P}_{3}\) assumes an application has been thoroughly tested and all single-value and 2-way faults have been removed. Fault coverage declines because t-way combinatorial coverage decreases with increasing t. A fault profile such as \({P}_{1}\) might be expected in an average application, while \({P}_{2}\) and \({P}_{3}\) might be seen in more well-tested applications. Note that these figures estimate only the proportion of fault coverage; a previously untested application could be expected to have a higher absolute number of faults than those that have been used and tested extensively.
Rights and permissions
About this article
Cite this article
Kuhn, D.R., Kacker, R.N. & Lei, Y. Measuring and specifying combinatorial coverage of test input configurations. Innovations Syst Softw Eng 12, 249–261 (2016). https://doi.org/10.1007/s11334-015-0266-2
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s11334-015-0266-2